wzp
2022-11-23 c052583025ff87735d2120dc63aeee7ea5e5524e
web/web/GwOrder.ashx
@@ -9,6 +9,7 @@
{
    private GwOrderDao _Dao = new GwOrderDao();
    private GwSpDao _GwSpDao = new GwSpDao();
    private GwClientDao _GwClientDao = new GwClientDao();
    private GwOpGroupDao _GwOpGroupDao = new GwOpGroupDao();
    private GwProductDao _GwProductDao = new GwProductDao();
    private SysXhDao _SysXhDao = new SysXhDao();
@@ -21,11 +22,19 @@
    private List<GwOp> _OpList;
    private List<GwOpGroup> _GroupList;
    private List<GwProduct> _ProductList;   //产品及产品分类
    //private List<GwProduct> _ProductClassList;  //产品分类
                                            //private List<GwProduct> _ProductClassList;  //产品分类
    private int _userId = -1;
    private string _userType = "";
    private string _account = "";
    public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
    {
        string @string = context.GetString("action");
        _userId = context.SessionObject.UserID;
        _userType = context.SessionObject.UserType;
        _account = context.SessionObject.Account;
        switch (@string)
        {
            case "delete":
@@ -46,6 +55,8 @@
                return this.Cancel(context);      //取消    
            case "audit":
                return this.Audit(context);      //订单审核
            case "getOrderBySpId":
                return this.GetOrderBySpId(context);      //订单审核
            default:
                throw new Exception("Invalid Action=" + @string);
@@ -58,16 +69,18 @@
        //Console.WriteLine("List.............[" + context.GetInt("name") + "][" + context.GetInt("classes") + "]");
        string spId = context.GetString("spId");
        string clientId = context.GetString("clientId");
        string clientName = context.GetString("clientName");
        string compay = context.GetString("compay");
        int flag = context.GetInt("flag");
        DateTime startDate = context.GetDateTime("startDate");
        DateTime endDate = context.GetDateTime("endDate");
        DateTime endDate = context.GetDateTime("endDate")==DateTime.Parse("0001-01-01 00:00:00")? DateTime.Now : context.GetDateTime("endDate");
        int recordCount = 0;
        int pageSize = context.GetInt("pageSize", 50);
        int pageIndex = context.GetInt("pageIndex", 1);
        List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, clientName, flag, startDate, endDate, pageSize, pageIndex, out recordCount);
        string permissionsSQL = new GwClientDao().GetClientPermissions(_userId, _userType, "GWC");
        List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, compay, flag, startDate, endDate.AddDays(1.0), pageSize, pageIndex, permissionsSQL, out recordCount);
        string str1 = "";
        if (list != null && list.Count > 0)
@@ -80,28 +93,31 @@
                str1 += "<tr><td>" + bean.OrderId + "</td>";
                str1 = str1 + "<td>" + bean.SpId + "</td>";
                str1 = str1 + "<td>" + bean.ClientId + "-" + bean.ClientName + "</td>";
                str1 = str1 + "<td>" + bean.ClientId + "</td>";
                str1 = str1 + "<td>" + bean.Company + "</td>";
                str1 = str1 + "<td>" + ProductToName(bean.ProductId) + "</td>";
                //str1 = str1 + "<td>" + bean.ComboId + "</td>";
                str1 = str1 + "<td>" + bean.BasicNum + "</td>";
                str1 = str1 + "<td>" + bean.GivingNum + "</td>";
                str1 = str1 + string.Format("<td>{0}元/条</td>", (object)(Convert.ToDecimal(bean.Price) / new Decimal(1000)));
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.Price) / new Decimal(1000)));
                str1 = str1 + "<td>" + bean.OrderNumTotal + "</td>";
                str1 = str1 + string.Format("<td>{0}元</td>", (object)(Convert.ToDecimal(bean.OrderAmountTotal) / new Decimal(1000)));;
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.OrderAmountTotal) / new Decimal(1000)));
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.PayAmount) / new Decimal(1000)));
                str1 = str1 + "<td>" + bean.BeforeBalanceNum + "</td>";
                str1 = str1 + "<td>" + bean.Auditor + "</td>";
                str1 = str1 + "<td>" + bean.Creator + "</td>";
                str1 = str1 + "<td>" + bean.CreateTime + "</td>";
                str1 = str1 + "<td>" + StatusToName(bean.Status) + "</td>";
                //str1 = str1 + "<td>" + bean.Remark + "</td>";
                str1 += "<td  class=\"text-right\">";
                str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-detail btn  btn-success btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;查看</a> ", (object) bean.OrderId);
                str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-detail btn btn-success btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;查看</a> ", (object) bean.OrderId);
                str1 += "</td>";
                str1 += "</tr>";
            }
        }
        else
            str1 += "<tr><td colspan=\"14\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
            str1 += "<tr><td colspan=\"16\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
        return new JsonPageResult(true,  new
        {
@@ -115,16 +131,18 @@
    {
        string spId = context.GetString("spId");
        string clientId = context.GetString("clientId");
        string clientName = context.GetString("clientName");
        string company = context.GetString("company");
        int flag = context.GetInt("flag");
        DateTime startDate = context.GetDateTime("startDate");
        DateTime endDate = context.GetDateTime("endDate");
        DateTime endDate = context.GetDateTime("endDate")==DateTime.Parse("0001-01-01 00:00:00")? DateTime.Now : context.GetDateTime("endDate");
        int recordCount = 0;
        int pageSize = context.GetInt("pageSize", 50);
        int pageIndex = context.GetInt("pageIndex", 1);
        List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, clientName, flag, startDate, endDate, pageSize, pageIndex, out recordCount);
        string permissionsSQL = new GwClientDao().GetClientPermissions(_userId, _userType, "GWC");
        List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, company, flag, startDate, endDate.AddDays(1.0), pageSize, pageIndex, permissionsSQL, out recordCount);
        string str1 = "";
        if (list != null && list.Count > 0)
@@ -137,23 +155,26 @@
                str1 += "<tr><td>" + bean.OrderId + "</td>";
                str1 = str1 + "<td>" + bean.SpId + "</td>";
                str1 = str1 + "<td>" + bean.ClientId + "-" + bean.ClientName + "</td>";
                str1 = str1 + "<td>" + bean.ClientId + "</td>";
                str1 = str1 + "<td>" + bean.Company + "</td>";
                str1 = str1 + "<td>" + ProductToName(bean.ProductId) + "</td>";
                //str1 = str1 + "<td>" + bean.ComboId + "</td>";
                str1 = str1 + "<td>" + bean.BasicNum + "</td>";
                str1 = str1 + "<td>" + bean.GivingNum + "</td>";
                str1 = str1 + string.Format("<td>{0}元/条</td>", (object)(Convert.ToDecimal(bean.Price) / new Decimal(1000)));
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.Price) / new Decimal(1000)));
                str1 = str1 + "<td>" + bean.OrderNumTotal + "</td>";
                str1 = str1 + string.Format("<td>{0}元</td>", (object)(Convert.ToDecimal(bean.OrderAmountTotal) / new Decimal(1000)));;
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.OrderAmountTotal) / new Decimal(1000)));
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.PayAmount) / new Decimal(1000)));
                str1 = str1 + "<td>" + bean.BeforeBalanceNum + "</td>";
                str1 = str1 + "<td>" + bean.Auditor + "</td>";
                str1 = str1 + "<td>" + bean.Creator + "</td>";
                str1 = str1 + "<td>" + bean.CreateTime + "</td>";
                str1 = str1 + "<td>" + StatusToName(bean.Status) + "</td>";
                //str1 = str1 + "<td>" + bean.Remark + "</td>";
                str1 += "<td  class=\"text-right\">";
                str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-detail btn  btn-success btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;查看</a> ", (object) bean.OrderId);
                str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-audit btn  btn-success btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;审核</a> ", (object) bean.OrderId);
                str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-detail btn  btn-info btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;查看</a> ", (object) bean.OrderId);
                str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" style=\"margin-top:10px; \" class=\"action-modal-audit btn  btn-success btn-xs\"><i class=\"fa fa-edit\"></i>&nbsp;审核</a> ", (object) bean.OrderId);
                if(bean.Status == 0) {
                    str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-cancel btn  btn-success btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;取消</a> ", (object) bean.OrderId);
                }
@@ -162,7 +183,7 @@
            }
        }
        else
            str1 += "<tr><td colspan=\"14\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
            str1 += "<tr><td colspan=\"16\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
        return new JsonPageResult(true,  new
        {
@@ -170,34 +191,39 @@
            TotalCount = recordCount
        });
    }
    private JsonPageResult GwOrderList(PageContext<SysUser> context)
    {
            /**
        string string1 = context.GetString("SpID");
        string string2 = context.GetString("ClientID");
        string string3 = context.GetString("ClientName");
        string str1 = context.GetString("sDate");
        string str2 = context.GetString("EndTime");
        if (string.IsNullOrEmpty(str1))
            str1 = DateTime.Now.AddDays(-1.0).ToString("yyyy-MM-dd");
        if (string.IsNullOrEmpty(str2))
            str2 = DateTime.Now.ToString("yyyy-MM-dd");
            **/
        /**
    string string1 = context.GetString("SpID");
    string string2 = context.GetString("ClientID");
    string string3 = context.GetString("ClientName");
    string str1 = context.GetString("sDate");
    string str2 = context.GetString("EndTime");
    if (string.IsNullOrEmpty(str1))
        str1 = DateTime.Now.AddDays(-1.0).ToString("yyyy-MM-dd");
    if (string.IsNullOrEmpty(str2))
        str2 = DateTime.Now.ToString("yyyy-MM-dd");
        **/
        string spId = context.GetString("spId");
        string clientId = context.GetString("clientId");
        string clientName = context.GetString("clientName");
        string company = context.GetString("company");
        int flag = context.GetInt("flag");
        //string startDate = context.GetString("startDate");
        //string endDate = context.GetString("endDate");
        DateTime startDate = context.GetDateTime("startDate");
        DateTime endDate = context.GetDateTime("endDate");
        DateTime endDate = context.GetDateTime("endDate")==DateTime.Parse("0001-01-01 00:00:00")? DateTime.Now : context.GetDateTime("endDate");
        int recordCount = 0;
        int pageSize = context.GetInt("pageSize", 50);
        int pageIndex = context.GetInt("pageIndex", 1);
        List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, clientName, flag, startDate, endDate, pageSize, pageIndex, out recordCount);
        string permissionsSQL = new GwClientDao().GetClientPermissions(_userId, _userType, "GWC");
        //List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, clientName, flag, Convert.ToDateTime(startDate), Convert.ToDateTime(endDate).AddDays(1.0), pageSize, pageIndex, out recordCount);
        List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, company, flag, startDate, endDate.AddDays(1.0), pageSize, pageIndex, permissionsSQL, out recordCount);
        string str1 = "";
        if (list != null && list.Count > 0)
@@ -210,21 +236,24 @@
                str1 += "<tr><td>" + bean.OrderId + "</td>";
                str1 = str1 + "<td>" + bean.SpId + "</td>";
                str1 = str1 + "<td>" + bean.ClientId + "-" + bean.ClientName + "</td>";
                str1 = str1 + "<td>" + bean.ClientId + "</td>";
                str1 = str1 + "<td>" + bean.Company + "</td>";
                str1 = str1 + "<td>" + ProductToName(bean.ProductId) + "</td>";
                //str1 = str1 + "<td>" + bean.ComboId + "</td>";
                str1 = str1 + "<td>" + bean.BasicNum + "</td>";
                str1 = str1 + "<td>" + bean.GivingNum + "</td>";
                str1 = str1 + string.Format("<td>{0}元/条</td>", (object)(Convert.ToDecimal(bean.Price) / new Decimal(1000)));
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.Price) / new Decimal(1000)));
                str1 = str1 + "<td>" + bean.OrderNumTotal + "</td>";
                str1 = str1 + string.Format("<td>{0}元</td>", (object)(Convert.ToDecimal(bean.OrderAmountTotal) / new Decimal(1000)));;
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.OrderAmountTotal) / new Decimal(1000)));
                str1 = str1 + string.Format("<td>{0}</td>", (object)(Convert.ToDecimal(bean.PayAmount) / new Decimal(1000)));
                str1 = str1 + "<td>" + bean.BeforeBalanceNum + "</td>";
                str1 = str1 + "<td>" + bean.Auditor + "</td>";
                str1 = str1 + "<td>" + bean.Creator + "</td>";
                str1 = str1 + "<td>" + bean.CreateTime + "</td>";
                str1 = str1 + "<td>" + StatusToName(bean.Status) + "</td>";
                //str1 = str1 + "<td>" + bean.Remark + "</td>";
                str1 += "<td  class=\"text-right\">";
                str1 += "<td  class=\"text-center\">";
                str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-detail btn  btn-success btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;查看</a> ", (object) bean.OrderId);
                //str1 += string.Format("<a href=\"javascript:;\" data-orderid=\"{0}\" class=\"action-modal-audit btn  btn-success btn-xs\"><i class=\"fa fa-search\"></i>&nbsp;审核</a> ", (object) bean.OrderId);
                //if(bean.Status == 0) {
@@ -235,7 +264,7 @@
            }
        }
        else
            str1 += "<tr><td colspan=\"14\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
            str1 += "<tr><td colspan=\"16\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
        return new JsonPageResult(true,  new
        {
@@ -282,12 +311,31 @@
    //订单审核
    private JsonPageResult Audit(PageContext<SysUser> context)
    {
        string spId = context.GetString("spId");
        string orderId = context.GetString("orderId");
        Int64 basicNum = context.GetInt64("basicNum");
        Int64 givingNum = context.GetInt64("givingNum");
        string clientId = "";
        Int64 payAmount = 0;//金额
        Int64 tmpPayAmount = Math.Max((int) (context.GetDecimal("payAmount", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
        payAmount = tmpPayAmount;
        //double price = context.GetDecimal(price);
        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
        string remark = context.GetString("remark");
        int status = context.GetInt("status");  //0-审核不通过;1-审核通过
        string auditReason = context.GetString("auditReason");
        if (status == 0 && string.IsNullOrEmpty(auditReason))
        {
            throw new ArgumentException("请输入不通过原因!");
        }
        DateTime createTime = DateTime.Now;
        string creator = context.OperatorID;
        string beforeFlowCode = null;   //之前的流程编码
        string currentFlowCode = null;   //当前的流程编码
        int nowSort = 0;
        string nowFlowCode = null;   //当前的流程编码
        int nextSort = 0;
        string nextFlowCode = null;   //下一个流程编码
@@ -297,12 +345,180 @@
        if (gwOrder.Status !=0 && gwOrder.Status !=1)
            throw new ArgumentException("该订单已处理,操作失败!");
        clientId = gwOrder.ClientId;
        //获取订单审核流程
        string flowGroup = null;    //流程组合
        string[] flowGroupS = null;
        string[] flowCodeS = null;
        string flowCode = null;
        int sort = 0;
        string flowNodeCode = null;
        int orderStatus = 0;    //订单状态
        SysFlow SysFlow = new SysFlow();
        SysFlow.FlowCode = "F_DDSH";    //订单流程
        SysFlow.Status = 1;    //状态:0-禁用;1-启用
        SysFlow sysFlow = _SysFlowDao.Get(SysFlow);
        if (sysFlow == null)
        {
            throw new ArgumentException("订单审核流程不存在,请系统管理配置!");
        }
        //例:1#KHSH|2#CWSH
        flowGroup = sysFlow.FlowGroup;
        GwOrderAudit gworderAudit = new GwOrderAudit();
        gworderAudit.AuditStatus = 1;
        //gworderAudit.AuditStatus = 1;
        gworderAudit.OrderId = orderId;
        List<GwOrderAudit> gworderAuditList = _GwOrderAuditDao.List(gworderAudit);
        if(gworderAuditList==null || gworderAuditList.Count<=0 )
        {
            //获取审核流程的第一环节
            nowSort = 0;
        }
        else
        {
            //获取审核流程的下环节
            GwOrderAudit gwOrderAudit = gworderAuditList[0];
            nowSort = gwOrderAudit.AuditSort;
        }
        //获取审核流程的第一环节流程代码
        nowFlowCode = getNextFlowCode(flowGroup, nowSort);
        if(string.IsNullOrEmpty(nowFlowCode))
        {
            //当前处理没有流程代码
            throw new ArgumentException("流程处理已完成,请联系管理员!");
        }
        else
        {
            object[] tmpFlowCode = splitFlowCodes(nowFlowCode);
            if(tmpFlowCode==null)
            {
                throw new ArgumentException("流程代码串格式错误,请联系管理员!");
            }
            else
            {
                nowSort = int.Parse(tmpFlowCode[0].ToString() );
                flowCode = tmpFlowCode[1].ToString();
            }
            //获取用户权限
            SysFlowNode newSysFlowNode = new SysFlowNode();
            newSysFlowNode.BusinessType = 1;   //业务类型:1-充值;99-其他
            newSysFlowNode.FlowNodeCode = flowCode;
            newSysFlowNode.UserId = creator;
            List<SysFlowNode> newSysFlowNodeList = _SysFlowNodeDao.IsAuth(newSysFlowNode);
            if(newSysFlowNodeList==null || newSysFlowNodeList.Count <=0 )
            {
                throw new ArgumentException("用户无审核权限,请联系管理员!");
            }
            else
            {
                nextSort = nowSort + 1;
                //获取审核流程的第一环节流程代码
                nextFlowCode = getNextFlowCode(flowGroup, nextSort);
            }
        }
        //保存订单审核表
        string auditId = _SysXhDao.getXh("GW_ORDER_AUDIT");  //获取生成订单审核ID
        this._GwOrderAuditDao.Add(new GwOrderAudit()
        {
            AuditId = auditId,
            OrderId = orderId,
            AuditSort = nowSort,
            AuditStatus = status,
            Auditor = creator,
            AuditReason = auditReason,
            AuditTime = createTime
        });
        //审核不通过
        if (status==0)
        {
            orderStatus = 3;
            //status:0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;
            this._Dao.UpdateStatus(orderStatus, orderId);
        }
        else if(status==1)
        {
            Int64 beforeBasicNum = 0;
            Int64 beforeGivingNum = 0;
            Int64 balance = 0;
            Int64 topUpAmountTotal = 0;
            if (string.IsNullOrEmpty(nextFlowCode))
            {
                orderStatus = 2;
                //获取账号信息
                GwSp gwSp = _GwSpDao.Get(spId);
                beforeBasicNum = gwSp.BasicNum;
                beforeGivingNum = gwSp.GivingNum;
                //balance = Convert.ToInt32(gwSp.Balance);
                //获取客户信息
                GwClient gwClient = _GwClientDao.Get(gwSp.ClientID);
                balance =  Int64.Parse(gwClient.Balance.ToString() );
                topUpAmountTotal = Int64.Parse(gwClient.Top_up_Amount_Total.ToString() );
                //为1-预付费
                //if (gwSp.ChargeType==1 && (balance + payAmount) < num * basicNum)
                if (gwClient.ChargeType==1 && (balance + payAmount) < num * basicNum)
                {
                    throw new ArgumentException("客户余额及充值金额不足购买,请调整后提交!");
                }
                //gwSp.Balance = balance - num * basicNum;
                //gwSp.BasicNum = beforeBasicNum + basicNum;
                //gwSp.GivingNum = beforeGivingNum + givingNum;
                //更新账号充值数据
                _GwSpDao.UpdateBalanceByOrder( payAmount, basicNum , givingNum , spId );
                //有充值金额时,更新客户累计充值金额(厘)
                if (payAmount > 0 || basicNum > 0 ) {
                    //GwClient gwClient = new GwClient();
                    //gwClient = new GwClient();
                    //gwClient.Balance = ((balance + payAmount) - num * basicNum) ;   //充值余额:单位(厘)
                    //gwClient.Top_up_Amount_Total = topUpAmountTotal + payAmount;    //充值金额:单位(厘)
                    //gwClient.ClientID = clientId;
                    //更新客户充值数据
                    _GwClientDao.UpdateClientAmount(payAmount-( num * basicNum), payAmount, clientId );
                }
            }
            else
            {
                orderStatus = 1;
            }
            //status:0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;
            //this._Dao.UpdateStatus(orderStatus, orderId);
            //获取订单
            //GwOrder newGwOrder = _Dao.Get(orderId);
            //newGwOrder.BasicNum = basicNum;
            //newGwOrder.GivingNum = givingNum;
            //newGwOrder.OrderNumTotal = basicNum + givingNum;
            //newGwOrder.OrderAmountTotal = basicNum * num ;
            //newGwOrder.BeforeBalanceNum = beforeGivingNum + beforeGivingNum;
            //newGwOrder.Status = orderStatus;
            //更新订单
            _Dao.UpdateBalanceAndStatus(basicNum, givingNum, basicNum + givingNum, basicNum * num, payAmount,  beforeGivingNum + beforeGivingNum, orderStatus, orderId );
            //Dao.Update(newGwOrder);
        }
@@ -313,7 +529,8 @@
        //不是最后审核环节时,站内通知
        //status:0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;
        this._Dao.UpdateStatus(status, orderId);
        //this._Dao.UpdateStatus(status, orderId);
        return new JsonPageResult(true, "审核操作成功!");
    }
@@ -326,20 +543,23 @@
        string clientId = context.GetString("clientId");
        string productId = context.GetString("productId");
        //string comboId = context.GetString("comboId");
        int basicNum = context.GetInt("basicNum", 0);
        int givingNum = context.GetInt("givingNum", 0);
        Int64 basicNum = context.GetInt("basicNum", 0);
        Int64 givingNum = context.GetInt("givingNum", 0);
        int price = 0;
        int orderNumTotal = context.GetInt("orderNumTotal", 0);
        int orderAmountTotal = context.GetInt("orderAmountTotal", 0);
        int beforeBalanceNum = context.GetInt("beforeBalanceNum", 0);
        Int64 orderNumTotal = context.GetInt("orderNumTotal", 0);
        Int64 orderAmountTotal = context.GetInt("orderAmountTotal", 0);
        Int64 payAmount = 0;
        Int64 beforeBalanceNum = context.GetInt("beforeBalanceNum", 0);
        //客服人员提交订单时的状态为1-审核中。
        int status = 1; //0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;申请订单在未审核情况下可以取消。
        string remark = context.GetString("remark");
        DateTime createTime = DateTime.Now;
        string creator = context.OperatorID;
        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 1);
        Int64 tmpPayAmount = Math.Max((Int64) (context.GetDecimal("payAmount", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
        payAmount = tmpPayAmount;
        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
        price = num;
        //校验
@@ -352,16 +572,40 @@
        if (string.IsNullOrEmpty(clientId))
        {
            throw new ArgumentException("客户不能为空!");
            throw new ArgumentException("客户账号不能为空!");
        }
        if (string.IsNullOrEmpty(spId))
        {
            throw new ArgumentException("账号不能为空!");
            throw new ArgumentException("短信账号不能为空!");
        }
        if (basicNum<=0 && givingNum <= 0)
        if (basicNum<=0 && givingNum <= 0 && payAmount <=0)
        {
            throw new ArgumentException("基本条数或赠送条数必须大于零!");
            throw new ArgumentException("充值金额或基本条数或赠送条数必须大于零!");
        }
        //获取账号信息
        GwSp gwSp = _GwSpDao.Get(spId);
        Int64 balance = 0;
        if (gwSp == null)
        {
            throw new ArgumentException("账号不存在!");
        }
        else if (gwSp.Status==0)
        {
            throw new ArgumentException("账号已禁用!");
        }
        //获取客户信息
        GwClient gwClient = _GwClientDao.Get(gwSp.ClientID);
        balance =  Int64.Parse(gwClient.Balance.ToString() );
        //为1-预付费
        //if (gwSp.ChargeType==1 && (balance + payAmount) < num * basicNum)
        if (gwClient.ChargeType==1 && (balance + payAmount) < num * basicNum)
        {
            throw new ArgumentException("客户余额及充值金额不足购买,请调整后提交!");
        }
        //获取订单审核流程
@@ -414,35 +658,29 @@
        //获取用户权限
        SysFlowNode sysFlowNode = new SysFlowNode();
            sysFlowNode.BusinessType = 1;   //业务类型:1-充值;99-其他
            sysFlowNode.FlowNodeCode = flowNodeCode;
            sysFlowNode.UserId = creator;
            List<SysFlowNode> sysFlowNodeList = _SysFlowNodeDao.IsAuth(sysFlowNode);
            if(sysFlowNodeList==null || sysFlowNodeList.Count <=0 )
        {
                throw new ArgumentException("用户没有充值权限,请联系管理员!");
        }
        sysFlowNode.BusinessType = 1;   //业务类型:1-充值;99-其他
        sysFlowNode.FlowNodeCode = flowNodeCode;
        sysFlowNode.UserId = creator;
        //获取订单信息
        GwSp gwSp = _GwSpDao.Get(spId);
        if (gwSp == null)
        List<SysFlowNode> sysFlowNodeList = _SysFlowNodeDao.IsAuth(sysFlowNode);
        if(sysFlowNodeList==null || sysFlowNodeList.Count <=0 )
        {
            throw new ArgumentException("账号不存在!");
        }
        else if (gwSp.Status==0)
        {
            throw new ArgumentException("账号已禁用!");
            throw new ArgumentException("用户没有充值权限,请联系管理员!");
        }
        productId = gwSp.ProductId;
        price = gwSp.Price;
        if (string.IsNullOrEmpty(gwSp.ProductId))
        {
            throw new ArgumentException("产品配置不允许为空!请先配置账号所关联产品!");
        }
        orderNumTotal = basicNum + givingNum;
        orderAmountTotal = basicNum * price;
        string orderId = _SysXhDao.getXh("GW_ORDER");  //获取生成订单ID
        this._Dao.Add(new GwOrder()
        {
@@ -456,6 +694,7 @@
            Price = price,    //单价换算
            OrderNumTotal = orderNumTotal,
            OrderAmountTotal = orderAmountTotal,
            PayAmount = payAmount,
            BeforeBalanceNum = beforeBalanceNum,
            Status = status,
            Remark = remark,
@@ -464,19 +703,22 @@
        });
        string auditId = _SysXhDao.getXh("GW_ORDER_AUDIT");  //获取生成订单审核ID
        this._GwOrderAuditDao.Add(new GwOrderAudit()
        //流程组合为空时
        if (!string.IsNullOrEmpty(flowGroup))
        {
            AuditId = auditId,
            OrderId = orderId,
            AuditSort = sort,
            AuditStatus = status,
            Auditor = creator,
            //AuditReason = null,
            AuditTime = createTime
            string auditId = _SysXhDao.getXh("GW_ORDER_AUDIT");  //获取生成订单审核ID
            this._GwOrderAuditDao.Add(new GwOrderAudit()
            {
                AuditId = auditId,
                OrderId = orderId,
                AuditSort = sort,
                AuditStatus = status,
                Auditor = creator,
                //AuditReason = null,
                AuditTime = createTime
        });
            });
        }
        return new JsonPageResult(true, "生成订单信息成功!");
@@ -490,19 +732,23 @@
        string clientId = context.GetString("clientId");
        string productId = context.GetString("productId");
        string comboId = context.GetString("clientId");
        int basicNum = context.GetInt("basicNum", 0);
        int givingNum = context.GetInt("givingNum", 0);
        Int64 basicNum = context.GetInt("basicNum", 0);
        Int64 givingNum = context.GetInt("givingNum", 0);
        int price = 0;
        int orderNumTotal = context.GetInt("orderNumTotal", 0);
        int orderAmountTotal = context.GetInt("orderAmountTotal", 0);
        int beforeBalanceNum = context.GetInt("beforeBalanceNum", 0);
        Int64 orderNumTotal = context.GetInt("orderNumTotal", 0);
        Int64 orderAmountTotal = context.GetInt("orderAmountTotal", 0);
        Int64 payAmount = 0;
        Int64 beforeBalanceNum = context.GetInt("beforeBalanceNum", 0);
        int status = 0;
        string remark = context.GetString("remark");
        DateTime createTime = DateTime.Now;
        string creator = context.OperatorID;
        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 1);
        Int64 tmpPayAmount = Math.Max((Int64) (context.GetDecimal("payAmount", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
        payAmount = tmpPayAmount;
        int num = Math.Max((int) (context.GetDecimal("price", new Decimal(4, 0, 0, false, (byte) 2)) * new Decimal(1000)), 0);
        price = num;
        //校验
@@ -515,11 +761,11 @@
        if (string.IsNullOrEmpty(clientId))
        {
            throw new ArgumentException("客户不能为空!");
            throw new ArgumentException("客户账号不能为空!");
        }
        if (string.IsNullOrEmpty(spId))
        {
            throw new ArgumentException("账号不能为空!");
            throw new ArgumentException("短信账号不能为空!");
        }
        if (basicNum<=0 && givingNum <= 0)
@@ -539,6 +785,7 @@
            Price = price,    //单价换算
            OrderNumTotal = orderNumTotal,
            OrderAmountTotal = orderAmountTotal,
            PayAmount = payAmount,
            BeforeBalanceNum = beforeBalanceNum,
            Status = status,
            Remark = remark,
@@ -553,7 +800,58 @@
    //根据主键获取产品或产品分类信息
    private JsonPageResult Get(PageContext<SysUser> context)
    {
        return new JsonPageResult(true, this._Dao.Get(context.GetString("orderId")));
        GwOrder gwOrder = _Dao.Get(context.GetString("orderId"));
        return new JsonPageResult(true,gwOrder);
    }
    //根据客户API账号获取充值初始信息
    private JsonPageResult GetOrderBySpId(PageContext<SysUser> context)
    {
        string spId = context.GetString("spId");
        if (!string.IsNullOrEmpty(spId))
        {
            GwSp  gwSp = new GwSpDao().Get(spId);
            if(gwSp==null)
            {
                throw new ArgumentException("账号不存在!");
            }
            else if (gwSp.Status==0)
            {
                throw new ArgumentException("账号状态已停用!");
            }
            GwOrder gwOrder = new GwOrder();
            GwClient gwClient = new GwClient();
            using (GwClientDao gwClientDao = new GwClientDao())
            {
                gwClient = gwClientDao.Get(gwSp.ClientID);
                gwOrder.Company = gwClient.Company;
                gwOrder.Balance = long.Parse(gwClient.Balance.ToString() );    //余额
            }
            gwOrder.SpId = gwSp.SpID;
            gwOrder.ClientId = gwSp.ClientID;
            gwOrder.ProductId = gwSp.ProductId;
            gwOrder.ProductName = gwSp.ProductName;
            gwOrder.Price = gwSp.Price;
            gwOrder.BasicNum = gwSp.BasicNum;  //基本条数
            gwOrder.GivingNum = gwSp.GivingNum;
            return new JsonPageResult(true, gwOrder);
        }
        else
        {
            throw new ArgumentException("请选择短信账号!");
        }
    }
    //获取通道列表
@@ -601,9 +899,9 @@
        if (classes == -1)
            return string.Empty;
        else if(classes == 0)
            return "0-产品分类";
            return "产品分类";
        else if(classes == 1)
            return "1-产品";
            return "产品";
        return string.Empty;
    }
@@ -614,9 +912,9 @@
        if (isDefault == -1)
            return string.Empty;
        else if(isDefault == 0)
            return "0-个性化";
            return "个性化";
        else if(isDefault == 1)
            return "1-系统默认";
            return "系统默认";
        return string.Empty;
    }
@@ -627,9 +925,9 @@
        if (isEnable == -1)
            return string.Empty;
        else if(isEnable == 0)
            return "0-停用";
            return "停用";
        else if(isEnable == 1)
            return "1-启用";
            return "启用";
        return string.Empty;
    }
@@ -651,15 +949,15 @@
        if (status == -1)
            return string.Empty;
        else if(status == 0)
            return "0-待审核(已提交)";
            return "待审核(已提交)";
        else if(status == 1)
            return "1-审核中";
            return "审核中";
        else if(status == 2)
            return "2-审核通过";
            return "审核通过";
        else if(status == 3)
            return "3-审核不通过";
            return "审核不通过";
        else if(status == 4)
            return "4-取消";
            return "取消";
        return string.Empty;
    }
@@ -703,4 +1001,81 @@
        return string.Empty;
    }
    //获取流程组中的下一个流程
    public string getNextFlowCode(string flowGroup, int sort)
    {
        if (string.IsNullOrEmpty(flowGroup) )
        {
            return null;
        }
        string[] flowGroups = null;
        string[] flowCodes = null;
        int nextSort = 0;
        string flowCode = null;
        string sortAndFlowCode = null;
        flowGroups = flowGroup.Split('|');
        Console.WriteLine(flowGroups.Length);
        if (flowGroups.Length > 1)
        {
            for (int i=0; i<flowGroups.Length; i++)
            {
                sortAndFlowCode = flowGroups[i];
                if (string.IsNullOrEmpty(sortAndFlowCode))
                {
                    continue;
                }
                else
                {
                    flowCodes = sortAndFlowCode.Split('#');
                    if(flowCodes.Length!=2)
                    {
                        throw new ArgumentException("流程组合串存在格式错误!");
                    }
                    else
                    {
                        nextSort = string.IsNullOrEmpty(flowCodes[0])? 0: Convert.ToInt32(flowCodes[0]);   //序号
                        flowCode = flowCodes[1];   //流程代码
                        if (nextSort<=sort)
                        {
                            continue;
                        }
                        //return flowCode;
                        return sortAndFlowCode;
                    }
                }
            }
        }
        return "";
    }
    //拆分流程序号和流程代码
    public object[] splitFlowCodes(string sortAndFlowCode)
    {
        if(string.IsNullOrEmpty(sortAndFlowCode) )
        {
            return null;
        }
        string[] splitFlowCodes = sortAndFlowCode.Split('#');
        if (splitFlowCodes.Length != 2)
        {
            throw new ArgumentException("流程组合串格式错误!");
        }
        else
        {
            return splitFlowCodes;
        }
    }
}