/// <summary> /// 根据资源类型获取资源库表名称 /// </summary> /// <param name="resType"></param> /// <returns></returns> public static string GetTableNameByResType(int resType) { if (resType < 1) { return(null); } string errmsg = null; List <db_datalibrarys> librarylist = orderinfoDAL.GetResTypeList(out errmsg); if (string.IsNullOrEmpty(errmsg) && librarylist != null && librarylist.Count > 0) { db_datalibrarys library = librarylist.Find(o => o.databaseid == resType); if (library != null) { return(library.databasename); } } return(null); }
/// <summary> /// 判断全文资源计费情况 /// </summary> /// <param name="restype">资源库id</param> /// <param name="seqid">资源id</param> /// <param name="userid">用户id</param> /// <param name="customerid">客户id</param> /// <param name="userIp">用户ip</param> /// <param name="tablename">资源库名</param> /// <param name="costtype">计费类型 【0免费资源;1 客户计时订单;2 客户计量订单;3 用户订单;】</param> /// <param name="m_price">单条价格</param> /// <param name="m_discount">单条折扣</param> /// <param name="serviceno">客户服务编号</param> /// <param name="orderno">客户服务订单号</param> /// <param name="errmsg"></param> /// <returns></returns> public static int GetFullPathResourceCheckCost(int restype, long seqid, int userid, int customerid, string userIp, out string tablename, out int costtype, out decimal m_price, out decimal m_discount, out string serviceno, out string orderno, out string errmsg) { errmsg = null; tablename = null; costtype = 0; m_price = 0; m_discount = 0; serviceno = null; orderno = null; string sqlstr = string.Format("select mouldid,databasename,databasecname,isware from db_datalibrarys where databaseid={0}", restype); db_datalibrarys dbinfo = MySqlHelper.GetDataInfo <db_datalibrarys>(sqlstr, out errmsg); if (!string.IsNullOrEmpty(errmsg)) { errmsg = "查询资源库出错" + errmsg; return(-1); } if (dbinfo == null) { errmsg = "资源库参数错误"; return(-1); } tablename = dbinfo.databasename; DataTable dt; //首先判断是否商品库中的资源,如果是,判断单条资源是否收费 如果是,资源是否在用户已完成的订单中 (以前购买过,可以直接使用) string shopname = null; if (dbinfo.isware == 1 && userid > 0) { sqlstr = string.Format("select m_price,m_discount,title from {0} where seqid={1}", tablename, seqid); dt = MySqlHelper.GetDataTable(sqlstr, out errmsg); if (!string.IsNullOrEmpty(errmsg) || dt == null) { errmsg = "查询资源费用信息出错" + errmsg; return(-1); } if (dt.Rows.Count == 0) { errmsg = "资源不存在"; return(-1); } if (!decimal.TryParse(dt.Rows[0][0].ToString(), out m_price) || !decimal.TryParse(dt.Rows[0][1].ToString(), out m_discount)) { errmsg = "查询资源价格及折扣信息出错"; return(-1); } if (m_price * m_discount == 0) //免费资源,直接使用 { costtype = 0; return(1); } shopname = dt.Rows[0][2].ToString(); sqlstr = string.Format("select count(1) from chosen_orderinfo a,chosen_ordershop b where a.orderno=b.orderno and a.status=9 and a.userid={0} and b.restype='{1}' and rescode={2}", userid, tablename, seqid); long count = MySqlHelper.GetRecCount(sqlstr, out errmsg); if (!string.IsNullOrEmpty(errmsg)) { errmsg = "查询用户订单信息出错" + errmsg; return(-1); } if (count > 0) //用户购买过,直接使用 { costtype = 3; return(1); } } // 用户是否在客户已购买并有效的授权服务当中 if (customerid > 0) { sqlstr = string.Format("select a.orderno,a.serviceno,b.stype,b.starttime,b.endtime,b.maxnum,b.leftnum,d.rulename,d.rulevalue from chosen_orderinfo a,chosen_serviceinfo b,chosen_servicepermit c,chosen_servicecont d where a.serviceno=b.serviceno and a.serviceno=c.serviceno and a.serviceno=d.serviceno and a.status=9 and a.customerid={0} and d.restype='{1}' ", customerid, tablename); dt = MySqlHelper.GetDataTable(sqlstr, out errmsg); if (!string.IsNullOrEmpty(errmsg)) { errmsg = "查询资源服务信息出错" + errmsg; return(-1); } if (dt != null && dt.Rows.Count > 0) { //资源是否在服务内容当中 orderno = dt.Rows[0]["orderno"].ToString(); serviceno = dt.Rows[0]["serviceno"].ToString(); costtype = int.Parse(dt.Rows[0]["stype"].ToString()); return(1); } } //都不符合,生成用户订单,返回需要计费信息 if (m_price * m_discount > 0) { chosen_orderinfo order = new chosen_orderinfo(); order.GetNo(); order.ordername = string.Format("订购资源库 {0} 的资源 {1} 的全文", dbinfo.databasecname, seqid); MySqlTransactionHelper tran = new MySqlTransactionHelper(); if (tran.TransactionBegin(out errmsg)) { //写入用户订单 List <DataParameter> pars = new List <DataParameter>(); pars.Add(new DataParameter("orderno", order.orderno)); pars.Add(new DataParameter("ordername", order.ordername)); pars.Add(new DataParameter("userid", userid)); pars.Add(new DataParameter("m_price", m_price)); pars.Add(new DataParameter("s_price", m_price * m_discount)); pars.Add(new DataParameter("ctype", 1)); pars.Add(new DataParameter("paytype", 1)); pars.Add(new DataParameter("status", 1)); pars.Add(new DataParameter("Creator", userid)); pars.Add(new DataParameter("createdtime", DateTime.Now)); string sqlor = "insert into chosen_orderinfo (orderno,ordername,userid,m_price,s_price,ctype,paytype,status,creator,createdtime) values (orderno,ordername,userid,m_price,s_price,ctype,paytype,status,creator,createdtime) "; tran.TransactionExecuteCommand(sqlor, out errmsg, pars); if (!string.IsNullOrEmpty(errmsg)) { string err; tran.TransactionRollback(out err); return(-1); } pars.Clear(); pars.Add(new DataParameter("shopname", string.IsNullOrEmpty(shopname) ? order.ordername : shopname)); pars.Add(new DataParameter("orderno", order.orderno)); pars.Add(new DataParameter("restype", restype)); pars.Add(new DataParameter("rescode", seqid)); pars.Add(new DataParameter("prices", m_price)); pars.Add(new DataParameter("thumbnail", null)); pars.Add(new DataParameter("shopnum", 1)); sqlstr = "insert into chosen_ordershop (shopname,orderno,restype,rescode,prices,thumbnail,shopnum) values (@shopname,@orderno,@restype,@rescode,@prices,@thumbnail,@shopnum) "; tran.TransactionExecuteCommand(sqlstr, out errmsg, pars); if (!string.IsNullOrEmpty(errmsg)) { string err; tran.TransactionRollback(out err); return(-1); } bool issuc = tran.TransactionCommit(out errmsg); if (!string.IsNullOrEmpty(errmsg) || !issuc) { errmsg = "提交订单出错:" + errmsg; return(-1); } costtype = 3; orderno = order.orderno; return(0); } return(-1); } else //免费资源 { costtype = 0; return(1); } }