<%@ WebHandler Language="C#" Class="GwOrderHandler" %>
|
using Dao;
|
using Model;
|
using System;
|
using System.Collections.Generic;
|
using System.Text.RegularExpressions;
|
|
public class GwOrderHandler : PageHandler<SysUser>
|
{
|
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();
|
private SysFlowDao _SysFlowDao = new SysFlowDao();
|
private SysFlowNodeDao _SysFlowNodeDao = new SysFlowNodeDao();
|
|
private SysFlowDao _SysFlowDaoDao = new SysFlowDao(); //流程定义
|
private GwOrderAuditDao _GwOrderAuditDao = new GwOrderAuditDao(); //订单审核
|
|
private List<GwOp> _OpList;
|
private List<GwOpGroup> _GroupList;
|
private List<GwProduct> _ProductList; //产品及产品分类
|
//private List<GwProduct> _ProductClassList; //产品分类
|
|
private int _userId = -1;
|
private int _userType = -1;
|
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":
|
return this.Delete(context); //删除
|
case "update":
|
return this.Update(context); //修改
|
case "add":
|
return this.Add(context); //添加
|
case "listComplete":
|
return this.ListComplete(context); //查询已完成订单(审核通过、审核不通过、取消)
|
case "listAudit":
|
return this.ListAudit(context); //查询待审核订单(待审核、审核中)
|
case "gwOrderList":
|
return this.GwOrderList(context); //订单列表
|
case "get":
|
return this.Get(context); //获取记录信息
|
case "cancel":
|
return this.Cancel(context); //取消
|
case "audit":
|
return this.Audit(context); //订单审核
|
case "getOrderBySpId":
|
return this.GetOrderBySpId(context); //订单审核
|
|
default:
|
throw new Exception("Invalid Action=" + @string);
|
}
|
}
|
|
//加载已完成订单(审核通过、审核不通过、取消)
|
private JsonPageResult ListComplete(PageContext<SysUser> context)
|
{
|
//Console.WriteLine("List.............[" + context.GetInt("name") + "][" + context.GetInt("classes") + "]");
|
string spId = context.GetString("spId");
|
string clientId = context.GetString("clientId");
|
string compay = context.GetString("compay");
|
int flag = context.GetInt("flag");
|
DateTime startDate = context.GetDateTime("startDate");
|
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);
|
|
string permissionsSQL = new GwClientDao().GetClientPermissions(_userId, _userType, "GWC");
|
|
List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, compay, flag, startDate, endDate, pageSize, pageIndex, permissionsSQL, out recordCount);
|
|
string str1 = "";
|
if (list != null && list.Count > 0)
|
{
|
|
int num = 0;
|
foreach (GwOrder bean in list)
|
{
|
++num;
|
|
//str1 += "<tr><td>" + bean.OrderId + "</td>";
|
str1 = str1 + "<tr><td>" + bean.SpId + "</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 + "<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.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> 查看</a> ", (object) bean.OrderId);
|
str1 += "</td>";
|
str1 += "</tr>";
|
}
|
}
|
else
|
str1 += "<tr><td colspan=\"16\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
|
|
return new JsonPageResult(true, new
|
{
|
Table = str1.ToString(),
|
TotalCount = recordCount
|
});
|
}
|
|
//加载待审核订单(待审核、审核中)
|
private JsonPageResult ListAudit(PageContext<SysUser> context)
|
{
|
string spId = context.GetString("spId");
|
string clientId = context.GetString("clientId");
|
string company = context.GetString("company");
|
int flag = context.GetInt("flag");
|
DateTime startDate = context.GetDateTime("startDate");
|
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);
|
|
string permissionsSQL = new GwClientDao().GetClientPermissions(_userId, _userType, "GWC");
|
|
List<GwOrder> list = _Dao.LoadInfoList(spId, clientId, company, flag, startDate, endDate, pageSize, pageIndex, permissionsSQL, out recordCount);
|
|
string str1 = "";
|
if (list != null && list.Count > 0)
|
{
|
|
int num = 0;
|
foreach (GwOrder bean in list)
|
{
|
++num;
|
|
//str1 += "<tr><td>" + bean.OrderId + "</td>";
|
str1 = str1 + "<tr><td>" + bean.SpId + "</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 + "<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.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> 查看</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> 审核</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> 取消</a> ", (object) bean.OrderId);
|
}
|
str1 += "</td>";
|
str1 += "</tr>";
|
}
|
}
|
else
|
str1 += "<tr><td colspan=\"16\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
|
|
return new JsonPageResult(true, new
|
{
|
Table = str1.ToString(),
|
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 spId = context.GetString("spId");
|
string clientId = context.GetString("clientId");
|
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.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);
|
|
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)
|
{
|
|
int num = 0;
|
foreach (GwOrder bean in list)
|
{
|
++num;
|
|
//str1 += "<tr><td>" + bean.OrderId + "</td>";
|
str1 = str1 + "<tr><td>" + bean.SpId + "</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 + "<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.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-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> 查看</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> 审核</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> 取消</a> ", (object) bean.OrderId);
|
//}
|
str1 += "</td>";
|
str1 += "</tr>";
|
}
|
}
|
else
|
str1 += "<tr><td colspan=\"16\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
|
|
return new JsonPageResult(true, new
|
{
|
Table = str1.ToString(),
|
TotalCount = recordCount
|
});
|
}
|
|
|
//删除信息
|
private JsonPageResult Delete(PageContext<SysUser> context)
|
{
|
string orderId = context.GetString("orderId");
|
|
GwOrder gwOrder = this._Dao.Get(orderId);
|
if (gwOrder.Status !=0)
|
throw new ArgumentException("该订单已处理,无法删除!");
|
this._Dao.Delete(orderId);
|
return new JsonPageResult(true, "删除信息成功!");
|
|
}
|
|
|
//取消信息
|
private JsonPageResult Cancel(PageContext<SysUser> context)
|
{
|
string orderId = context.GetString("orderId");
|
int status = context.GetInt("status");
|
|
|
GwOrder gwOrder = this._Dao.Get(orderId);
|
if (gwOrder==null)
|
throw new ArgumentException("该订单记录不存在!");
|
if (gwOrder.Status !=0)
|
throw new ArgumentException("该订单已处理,无法取消!");
|
|
//status:0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;
|
this._Dao.UpdateStatus(status, orderId);
|
return new JsonPageResult(true, "取消信息成功!");
|
|
}
|
|
|
//订单审核
|
private JsonPageResult Audit(PageContext<SysUser> context)
|
{
|
string spId = context.GetString("spId");
|
string orderId = context.GetString("orderId");
|
int basicNum = context.GetInt("basicNum");
|
int givingNum = context.GetInt("givingNum");
|
string clientId = "";
|
int payAmount = 0;
|
int 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; //之前的流程编码
|
int nowSort = 0;
|
string nowFlowCode = null; //当前的流程编码
|
int nextSort = 0;
|
string nextFlowCode = null; //下一个流程编码
|
|
|
GwOrder gwOrder = this._Dao.Get(orderId);
|
if (gwOrder==null)
|
throw new ArgumentException("该订单记录不存在!");
|
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.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)
|
{
|
int beforeBasicNum = 0;
|
int beforeGivingNum = 0;
|
int balance = 0;
|
int 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 = int.Parse(gwClient.Balance.ToString() );
|
topUpAmountTotal = int.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);
|
|
}
|
|
//判断订单审核流程是否都审核通过且是最后审核环节。
|
|
//是最后审核环节时,更新客户账号余额条数。
|
|
//不是最后审核环节时,站内通知
|
|
//status:0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;
|
//this._Dao.UpdateStatus(status, orderId);
|
|
return new JsonPageResult(true, "审核操作成功!");
|
|
}
|
|
//添加信息
|
private JsonPageResult Add(PageContext<SysUser> context)
|
{
|
|
string spId = context.GetString("spId");
|
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);
|
int price = 0;
|
|
int orderNumTotal = context.GetInt("orderNumTotal", 0);
|
int orderAmountTotal = context.GetInt("orderAmountTotal", 0);
|
int payAmount = 0;
|
int 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 tmpPayAmount = Math.Max((int) (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;
|
|
//校验
|
if (!string.IsNullOrEmpty(context.GetString("price")) && !Regex.IsMatch(context.GetString("price"), "^[0-9]*$") && price<=0 )
|
throw new Exception("参考单价不能小于等于0");
|
if (!string.IsNullOrEmpty(context.GetString("basicNum")) && !Regex.IsMatch(context.GetString("basicNum"), "^[0-9]*$"))
|
throw new Exception("基本条数必须为整数");
|
if (!string.IsNullOrEmpty(context.GetString("givingNum")) && !Regex.IsMatch(context.GetString("givingNum"), "^[0-9]*$"))
|
throw new Exception("赠送条数必须为整数");
|
|
if (string.IsNullOrEmpty(clientId))
|
{
|
throw new ArgumentException("客户账号不能为空!");
|
}
|
if (string.IsNullOrEmpty(spId))
|
{
|
throw new ArgumentException("短信账号不能为空!");
|
}
|
|
if (basicNum<=0 && givingNum <= 0 && payAmount <=0)
|
{
|
throw new ArgumentException("充值金额或基本条数或赠送条数必须大于零!");
|
}
|
|
//获取账号信息
|
GwSp gwSp = _GwSpDao.Get(spId);
|
int balance = 0;
|
if (gwSp == null)
|
{
|
throw new ArgumentException("账号不存在!");
|
}
|
else if (gwSp.Status==0)
|
{
|
throw new ArgumentException("账号已禁用!");
|
}
|
|
|
//获取客户信息
|
GwClient gwClient = _GwClientDao.Get(gwSp.ClientID);
|
balance = int.Parse(gwClient.Balance.ToString() );
|
|
//为1-预付费
|
//if (gwSp.ChargeType==1 && (balance + payAmount) < num * basicNum)
|
if (gwClient.ChargeType==1 && (balance + payAmount) < num * basicNum)
|
{
|
throw new ArgumentException("客户余额及充值金额不足购买,请调整后提交!");
|
}
|
|
//获取订单审核流程
|
string flowGroup = null;
|
string[] flowGroupS = null;
|
string[] flowCodeS = null;
|
string flowCode = null;
|
int sort = 0;
|
string flowNodeCode = null;
|
SysFlow SysFlow = new SysFlow();
|
SysFlow.FlowCode = "F_DDSH"; //订单流程
|
SysFlow.Status = 1; //状态:0-禁用;1-启用
|
|
SysFlow sysFlow = _SysFlowDao.Get(SysFlow);
|
if (sysFlow == null)
|
{
|
throw new ArgumentException("订单审核流程不存在!");
|
}
|
|
flowGroup = sysFlow.FlowGroup;
|
//流程组合为空时
|
if (string.IsNullOrEmpty(flowGroup))
|
{
|
status = 2; //0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;
|
}
|
else
|
{
|
status = 1; //0-待审核(已提交);1-审核中;2-审核通过;3-审核不通过;4-取消;
|
|
flowGroupS = flowGroup.Split('|');
|
if(flowGroupS.Length >0)
|
{
|
flowCode = flowGroupS[0];
|
if (!string.IsNullOrEmpty(flowCode))
|
{
|
flowCodeS = flowCode.Split('#');
|
}
|
}
|
|
if(flowCodeS!=null && flowCodeS.Length == 2)
|
{
|
sort = int.Parse(flowCodeS[0]); //序号
|
flowNodeCode = flowCodeS[1]; //序号
|
}
|
else
|
{
|
throw new ArgumentException("流程组合格式错误!");
|
}
|
}
|
|
//获取用户权限
|
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("用户没有充值权限,请联系管理员!");
|
}
|
|
productId = gwSp.ProductId;
|
price = gwSp.Price;
|
|
orderNumTotal = basicNum + givingNum;
|
orderAmountTotal = basicNum * price;
|
|
|
string orderId = _SysXhDao.getXh("GW_ORDER"); //获取生成订单ID
|
this._Dao.Add(new GwOrder()
|
{
|
OrderId = orderId,
|
SpId = spId,
|
ClientId = clientId,
|
ProductId = productId,
|
//ComboId = comboId,
|
BasicNum = basicNum,
|
GivingNum = givingNum,
|
Price = price, //单价换算
|
OrderNumTotal = orderNumTotal,
|
OrderAmountTotal = orderAmountTotal,
|
PayAmount = payAmount,
|
BeforeBalanceNum = beforeBalanceNum,
|
Status = status,
|
Remark = remark,
|
CreateTime = createTime,
|
Creator = creator
|
|
});
|
|
//流程组合为空时
|
if (!string.IsNullOrEmpty(flowGroup))
|
{
|
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, "生成订单信息成功!");
|
}
|
|
//更新信息
|
private JsonPageResult Update(PageContext<SysUser> context)
|
{
|
string orderId = context.GetString("orderId");
|
string spId = context.GetString("spId");
|
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);
|
int price = 0;
|
|
int orderNumTotal = context.GetInt("orderNumTotal", 0);
|
int orderAmountTotal = context.GetInt("orderAmountTotal", 0);
|
int payAmount = 0;
|
int beforeBalanceNum = context.GetInt("beforeBalanceNum", 0);
|
int status = 0;
|
string remark = context.GetString("remark");
|
DateTime createTime = DateTime.Now;
|
string creator = context.OperatorID;
|
|
int tmpPayAmount = Math.Max((int) (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;
|
|
//校验
|
if (!string.IsNullOrEmpty(context.GetString("price")) && !Regex.IsMatch(context.GetString("price"), "^[0-9]*$") && price<=0 )
|
throw new Exception("参考单价不能小于等于0");
|
if (!string.IsNullOrEmpty(context.GetString("basicNum")) && !Regex.IsMatch(context.GetString("basicNum"), "^[0-9]*$"))
|
throw new Exception("基本条数必须为整数");
|
if (!string.IsNullOrEmpty(context.GetString("givingNum")) && !Regex.IsMatch(context.GetString("givingNum"), "^[0-9]*$"))
|
throw new Exception("赠送条数必须为整数");
|
|
if (string.IsNullOrEmpty(clientId))
|
{
|
throw new ArgumentException("客户账号不能为空!");
|
}
|
if (string.IsNullOrEmpty(spId))
|
{
|
throw new ArgumentException("短信账号不能为空!");
|
}
|
|
if (basicNum<=0 && givingNum <= 0)
|
{
|
throw new ArgumentException("基本条数或赠送条数必须大于零!");
|
}
|
|
this._Dao.Update(new GwOrder()
|
{
|
OrderId = orderId,
|
SpId = spId,
|
ClientId = clientId,
|
ProductId = productId,
|
ComboId = comboId,
|
BasicNum = basicNum,
|
GivingNum = givingNum,
|
Price = price, //单价换算
|
OrderNumTotal = orderNumTotal,
|
OrderAmountTotal = orderAmountTotal,
|
PayAmount = payAmount,
|
BeforeBalanceNum = beforeBalanceNum,
|
Status = status,
|
Remark = remark,
|
CreateTime = createTime,
|
Creator = creator
|
|
});
|
|
return new JsonPageResult(true, "信息更新成功!");
|
}
|
|
//根据主键获取产品或产品分类信息
|
private JsonPageResult Get(PageContext<SysUser> context)
|
{
|
return new JsonPageResult(true, this._Dao.Get(context.GetString("orderId")));
|
}
|
|
//根据客户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("请选择短信账号!");
|
|
}
|
|
|
}
|
|
//获取通道列表
|
private List<GwOp> OpList
|
{
|
get
|
{
|
if (this._OpList == null)
|
{
|
using (GwOpDao gwOpDao = new GwOpDao())
|
this._OpList = gwOpDao.LoadInfoList();
|
}
|
return this._OpList;
|
}
|
}
|
|
//获取通道组列表
|
private List<GwOpGroup> GroupList
|
{
|
get
|
{
|
if (this._GroupList == null)
|
{
|
using (GwOpGroupDao gwOpGroupDao = new GwOpGroupDao())
|
this._GroupList = gwOpGroupDao.GetGroupList();
|
}
|
return this._GroupList;
|
}
|
}
|
|
//通道ID转换名称
|
private string GetOpName(int opID)
|
{
|
if (this.OpList == null)
|
return string.Empty;
|
GwOp gwOp = this.OpList.Find((Predicate<GwOp>)(op => op.OpID == opID));
|
if (gwOp != null)
|
return string.Format("{0}-{1}", (object)gwOp.OpID, (object)gwOp.OpName);
|
return string.Empty;
|
}
|
|
//产品类别转换名称
|
private string ClassesToName(int classes)
|
{
|
if (classes == -1)
|
return string.Empty;
|
else if(classes == 0)
|
return "产品分类";
|
else if(classes == 1)
|
return "产品";
|
|
return string.Empty;
|
}
|
|
//产品是否默认转换名称
|
private string IsDefaultToName(int isDefault)
|
{
|
if (isDefault == -1)
|
return string.Empty;
|
else if(isDefault == 0)
|
return "个性化";
|
else if(isDefault == 1)
|
return "系统默认";
|
|
return string.Empty;
|
}
|
|
//启用停用转换名称
|
private string IsEnableToName(int isEnable)
|
{
|
if (isEnable == -1)
|
return string.Empty;
|
else if(isEnable == 0)
|
return "停用";
|
else if(isEnable == 1)
|
return "启用";
|
|
return string.Empty;
|
}
|
|
//通道组ID转换名称
|
private string GetGroupName(int groupID)
|
{
|
if (this.GroupList == null)
|
return string.Empty;
|
GwOpGroup gwOpGroup = this.GroupList.Find((Predicate<GwOpGroup>)(group => group.GroupID == groupID));
|
if (gwOpGroup != null)
|
return string.Format("{0}-{1}", (object)gwOpGroup.GroupID, (object)gwOpGroup.GroupName);
|
return string.Empty;
|
}
|
|
//订单状态转换名称
|
private string StatusToName(int status)
|
{
|
if (status == -1)
|
return string.Empty;
|
else if(status == 0)
|
return "待审核(已提交)";
|
else if(status == 1)
|
return "审核中";
|
else if(status == 2)
|
return "审核通过";
|
else if(status == 3)
|
return "审核不通过";
|
else if(status == 4)
|
return "取消";
|
|
return string.Empty;
|
}
|
|
|
//加载产品及产品分类信息
|
private List<GwProduct> ProductAllList()
|
{
|
GwProduct bean = new GwProduct();
|
bean.Classes = -1;
|
bean.IsDefault = -1;
|
bean.IsEnable = -1;
|
|
List<GwProduct> list = _GwProductDao.getAllList(bean);
|
|
return list;
|
}
|
|
//获取产品或产品分类列表
|
private List<GwProduct> ProductList
|
{
|
get
|
{
|
if (this._ProductList == null)
|
{
|
this._ProductList = this.ProductAllList();
|
}
|
return this._ProductList;
|
}
|
}
|
|
//产品或产品分类ID转换名称
|
private string ProductToName(string productId)
|
{
|
if (this.ProductList == null)
|
return string.Empty;
|
GwProduct bean = this.ProductList.Find((Predicate<GwProduct>)(product => product.Id == productId));
|
if (bean != null)
|
//return string.Format("{0}-{1}", (object)bean.Id, (object)bean.Name);
|
return string.Format("{0}", (object)bean.Name);
|
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;
|
}
|
|
}
|
|
}
|