using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.AspNetCore.Authorization; using System.Web; using MySystem.Models.Main2; using MySystem.Service.Main2; using LitJson; using Library; namespace MySystem.Areas.Api.Controllers.v1.Main2 { [Area("Api")] [Route("/v1/QrCodePlateMain/[controller]/[action]")] public class ConsumerOrdersController : BaseController { public ConsumerOrdersController(IHttpContextAccessor accessor) : base(accessor) { } #region 交易查询-银联商户交易列表 [Authorize] public JsonResult UnionPayConsumerOrdersList(string value) { value = PublicFunction.DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Other = new Dictionary(); List> dataList = UnionPayConsumerOrdersListDo(value, out Other); return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Other }); } private List> UnionPayConsumerOrdersListDo(string value, out Dictionary Other) { JsonData data = JsonMapper.ToObject(value); string MerchantName = data["MerchantName"].ToString(); //商户名称 string MakerCode = data["MakerCode"].ToString(); //创客编号 string OrderNo = data["OrderNo"].ToString(); //交易号 string CreateDate = data["CreateDate"].ToString(); //交易时间 string PayMode = data["PayMode"].ToString(); //交易平台(1 支付宝 2 微信) string IsAct = data["IsAct"].ToString(); //是否参与分账(0 否 1 是) string Status = data["Status"].ToString(); //交易状态(0 未支付 1 已支付) string SubjectType = data["SubjectType"].ToString(); //主体类型(1 企业 2 个体 3 小微) string TradePayNo = data["TradePayNo"].ToString(); //第三方交易号 string DivideFlag = data["DivideFlag"].ToString(); //分账状态(-1无 0 未分账 2 分账中 1 已完成) int pageSize = int.Parse(function.CheckInt(data["page_size"].ToString())); int pageNum = int.Parse(function.CheckInt(data["page_num"].ToString())); string condition = ""; if (!string.IsNullOrEmpty(data["MerchantName"].ToString())) { var merAddInfo = MerchantAddInfoService.Query(" and CertMerchantName like '%" + MerchantName + "%'"); condition += " and MerchantId='" + merAddInfo.Id + "'"; } if (!string.IsNullOrEmpty(data["MakerCode"].ToString())) { var Ids = MerchantInfoUtil.QueryMerchantIdByMakerCode(MakerCode); condition += " and MerchantId in (" + Ids + ")"; } if (!string.IsNullOrEmpty(data["OrderNo"].ToString())) { condition += " and OrderNo='" + OrderNo + "'"; } if (!string.IsNullOrEmpty(data["CreateDate"].ToString())) { string[] datelist = CreateDate.Split(new string[] { " - " }, StringSplitOptions.None); string start = datelist[0]; string end = datelist[1]; condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'"; } if (!string.IsNullOrEmpty(data["PayMode"].ToString())) { condition += " and PayMode='" + PayMode + "'"; } if (!string.IsNullOrEmpty(data["IsAct"].ToString())) { condition += " and IsAct='" + IsAct + "'"; } if (!string.IsNullOrEmpty(data["Status"].ToString())) { if (Status == "0") { condition += " and Status=0"; } else { condition += " and Status>0"; } } if (!string.IsNullOrEmpty(data["SubjectType"].ToString())) { if (data["SubjectType"].ToString() == "1") SubjectType = "SUBJECT_TYPE_ENTERPRISE"; //企业公司 if (data["SubjectType"].ToString() == "2") SubjectType = "SUBJECT_TYPE_INDIVIDUAL"; //个体工商户 if (data["SubjectType"].ToString() == "3") SubjectType = "SUBJECT_TYPE_SMALL"; //小微 var Ids = MerchantInfoUtil.QueryMerchantIdBySubjectType(SubjectType); condition += " and MerchantId in (" + Ids + ")"; } if (!string.IsNullOrEmpty(data["TradePayNo"].ToString())) { condition += " and SeoKeyword='" + TradePayNo + "'"; } if (!string.IsNullOrEmpty(data["DivideFlag"].ToString())) { var flag = int.Parse(data["DivideFlag"].ToString()); if (flag == -1) { condition += " and IsAct=0 and DivideFlag=0"; } if (flag == 0) { condition += " and IsAct=1 and DivideFlag=0"; } if (flag == 2) { condition += " and IsAct=1 and DivideFlag=1"; } if (flag == 1) { condition += " and IsAct=1 and DivideFlag=2"; } } List relationData = new List(); List> dataList = new List>(); Other = new Dictionary(); int count = 0; List> source = ConsumerOrdersService.List(relationData, condition, out count, pageNum, pageSize); foreach (Dictionary subdata in source) { Dictionary curData = new Dictionary(); curData.Add("Id", subdata["Id"].ToString()); //Id var query = MerchantAddInfoService.Query(int.Parse(subdata["MerchantId"].ToString())); var subjectType = 0; curData.Add("MerchantName", query.CertMerchantName); //交易商户 curData.Add("PayMoney", subdata["PayMoney"].ToString()); //交易金额 var status = 0; if (subdata["Status"].ToString() != "0") status = 1; curData.Add("Status", status); //交易状态(0 未支付 1 已支付) curData.Add("PayMode", subdata["PayMode"].ToString()); //交易平台(1 支付宝 2 微信) curData.Add("OrderNo", subdata["OrderNo"].ToString()); //交易号 curData.Add("CreateDate", subdata["CreateDate"].ToString() == "" ? "" : DateTime.Parse(subdata["CreateDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss")); //交易时间 curData.Add("MaxDivi", ConsumerProfitService.Sum(" 1=1 and OrderId=" + subdata["Id"].ToString() + "", "GetMoney").ToString("f2")); //分账金额 if (query.SubjectType == "SUBJECT_TYPE_ENTERPRISE") subjectType = 1; //企业公司 if (query.SubjectType == "SUBJECT_TYPE_INDIVIDUAL") subjectType = 2; //个体工商户 if (query.SubjectType == "SUBJECT_TYPE_SMALL") subjectType = 3; //小微 curData.Add("SubjectType", subjectType); //主体类型(1 企业 2 个体 3 小微) curData.Add("TradePayNo", subdata["SeoKeyword"].ToString()); //第三方交易号 var divideFlag = 0; var isAct = int.Parse(subdata["IsAct"].ToString()); var dFlag = int.Parse(subdata["DivideFlag"].ToString()); curData.Add("IsAct", isAct); //是否参与活动(0 否 1 是) if (isAct == 0 && dFlag == 0) { divideFlag = -1; } if (isAct == 1 && dFlag == 0) { divideFlag = 0; } if (isAct == 1 && dFlag >= 1) { divideFlag = 1; } curData.Add("DivideFlag", divideFlag); //分账状态(-1无 0 未分账 1 已完成) dataList.Add(curData); } Other.Add("Count", count); //总数 return dataList; } #endregion #region 交易查询-银联订单发起返现 [Authorize] public JsonResult UnionPayQueryDivideAccounts(string value) { value = PublicFunction.DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); AppResultJson result = UnionPayQueryDivideAccountsDo(value); return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data }); } private AppResultJson UnionPayQueryDivideAccountsDo(string value) { JsonData data = JsonMapper.ToObject(value); int Id = int.Parse(function.CheckInt(data["Id"].ToString())); //订单Id var check = ConsumerProfitService.Query(" and OrderId=" + Id + ""); if (check.Id > 0) { return new AppResultJson() { Status = "-1", Info = "操作失败,该订单已存在返现记录" }; } else { var query = ConsumerOrdersService.Query(Id); List suborders = RedisDbconn.Instance.GetList("ConsumerOrdersHd:Divi:" + query.PayMode + ":" + query.MerchantId); if (suborders.Count > 0) { var suborder = suborders.FirstOrDefault(m => m.Id == Id); if (suborder == null) { RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + query.PayMode + ":List", Id); return new AppResultJson() { Status = "1", Info = "成功" }; } else { return new AppResultJson() { Status = "-1", Info = "操作失败,该订单已存在返现队列中" }; } } else { RedisDbconn.Instance.AddList("ConsumerOrdersHd:Divi:" + query.PayMode + ":List", Id); return new AppResultJson() { Status = "1", Info = "成功" }; } } } #endregion #region 节点操作-银联分账查询 [Authorize] public JsonResult UnionDivideQuery(string value) { value = PublicFunction.DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); Dictionary Obj = UnionDivideQueryDo(value); return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj }); } private Dictionary UnionDivideQueryDo(string value) { JsonData data = JsonMapper.ToObject(value); Dictionary Obj = new Dictionary(); ConsumerOrders query = new ConsumerOrders(); int id = int.Parse(function.CheckInt(data["id"].ToString())); query = ConsumerOrdersService.Query(id); Obj.Add("DivideFlag", query.DivideFlag); //分账标记 Obj.Add("DivideDate", query.DivideDate == null ? "" : query.DivideDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //分账时间 Obj.Add("DivideNote", query.DivideLog); //分账备注 return Obj; } #endregion #region 节点操作-银联发起分账 [Authorize] public JsonResult UnionAddDivide(string value) { value = PublicFunction.DesDecrypt(value); JsonData data = JsonMapper.ToObject(value); AppResultJson result = UnionAddDivideDo(value); return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data }); } private AppResultJson UnionAddDivideDo(string value) { JsonData data = JsonMapper.ToObject(value); Dictionary Obj = new Dictionary(); int id = int.Parse(function.CheckInt(data["id"].ToString())); RedisDbconn.Instance.AddList("AddHdDiviQueue", id.ToString()); return new AppResultJson() { Status = "1", Info = "", Data = Obj }; } #endregion } }