Browse Source

Merge branch 'feature-dgy-商户修改结算卡' into DuGuYang

DuGuYang 1 năm trước cách đây
mục cha
commit
7209ce6513

+ 265 - 0
AppStart/Helper/UpdateMerchantChangeCardStatusService.cs

@@ -0,0 +1,265 @@
+using System;
+using System.Threading;
+using System.Linq;
+using System.Data;
+using Library;
+using LitJson;
+using Newtonsoft.Json;
+using MySystem.Models.Main2;
+using MySystem.Service.Main2;
+
+/// <summary>
+/// 更新商户修改结算卡状态
+/// </summary>
+namespace MySystem
+{
+    public class UpdateMerchantChangeCardStatusService
+    {
+        public readonly static UpdateMerchantChangeCardStatusService Instance = new UpdateMerchantChangeCardStatusService();
+        private UpdateMerchantChangeCardStatusService()
+        {
+        }
+
+        public void Start()//启动
+        {
+            Thread thread = new Thread(EveryDayUpdateStatus); // 每天更新商户修改结算卡状态
+            thread.IsBackground = true;
+            thread.Start();
+
+            Thread thread1 = new Thread(TriggerUpdateStatus); // 触发更新商户修改结算卡状态
+            thread1.IsBackground = true;
+            thread1.Start();
+
+            Thread thread2 = new Thread(RealTimeUpdateStatus); // 实时更新商户修改结算卡状态
+            thread2.IsBackground = true;
+            thread2.Start();
+        }
+
+        public void RealTimeUpdateStatus()
+        {
+            while (true)
+            {
+                try
+                {
+                    WebCMSEntities maindb = new WebCMSEntities();
+
+                    var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList();
+                    foreach (var item in infos)
+                    {
+                        var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord();
+
+                        //好哒查询修改银行卡任务审核状态
+                        JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString()));
+                        if (results["resultCode"].ToString() == "1")
+                        {
+                            var Status = int.Parse(results["data"]["status"].ToString());
+                            var Remark = results["data"]["desc"].ToString();
+                            //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
+                            info.Status = Status;
+                            info.Remark = Remark;
+
+                            //审核成功修改商户结算信息
+                            if (Status == 5)
+                            {
+                                var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo();
+                                merchantAddInfo.AccountNumber = info.AccountNo;
+                                merchantAddInfo.AccountName = info.AccountName;
+                                var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'");
+                                merchantAddInfo.BankName = bankInfo.BankChild;
+                                var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'");
+                                merchantAddInfo.BankAddressCode = AreaInfo.CityName;
+                                merchantAddInfo.AccountType = info.AccountType.ToString();
+
+                                //开户许可证
+                                if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses))
+                                {
+                                    merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses;
+                                }
+                                if (info.AccountType == 1)
+                                {
+                                    //银行卡正面
+                                    if (!string.IsNullOrEmpty(info.BankCard))
+                                    {
+                                        merchantAddInfo.BankCard = info.BankCard;
+                                    }
+
+                                    //企业法人对私授权书
+                                    if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement))
+                                    {
+                                        merchantAddInfo.Support = info.PriLicAgreement;
+                                    }
+                                }
+                                merchantAddInfo.OpenUnionNo = info.ZbankNo;
+                            }
+                        }
+                        maindb.SaveChanges();
+                        maindb.Dispose();
+                    }
+                    Thread.Sleep(180000);
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "实时更新商户修改结算卡状态队列异常");
+                }
+            }
+        }
+
+        public void EveryDayUpdateStatus()
+        {
+            while (true)
+            {
+                if (DateTime.Now.Hour > 2 && DateTime.Now.Hour < 9)
+                {
+                    try
+                    {
+                        string check = function.ReadInstance("/UpdateMerchantChangeCardStatus/check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
+                        if (!string.IsNullOrEmpty(check))
+                        {
+                            function.WritePage("/UpdateMerchantChangeCardStatus/", "check" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
+                            WebCMSEntities maindb = new WebCMSEntities();
+
+                            var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList();
+                            foreach (var item in infos)
+                            {
+                                var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord();
+
+                                //好哒查询修改银行卡任务审核状态
+                                JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString()));
+                                if (results["resultCode"].ToString() == "1")
+                                {
+                                    var Status = int.Parse(results["data"]["status"].ToString());
+                                    var Remark = results["data"]["desc"].ToString();
+                                    //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
+                                    info.Status = Status;
+                                    info.Remark = Remark;
+
+                                    //审核成功修改商户结算信息
+                                    if (Status == 5)
+                                    {
+                                        var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo();
+                                        merchantAddInfo.AccountNumber = info.AccountNo;
+                                        merchantAddInfo.AccountName = info.AccountName;
+                                        var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'");
+                                        merchantAddInfo.BankName = bankInfo.BankChild;
+                                        var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'");
+                                        merchantAddInfo.BankAddressCode = AreaInfo.CityName;
+                                        merchantAddInfo.AccountType = info.AccountType.ToString();
+
+                                        //开户许可证
+                                        if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses))
+                                        {
+                                            merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses;
+                                        }
+                                        if (info.AccountType == 1)
+                                        {
+                                            //银行卡正面
+                                            if (!string.IsNullOrEmpty(info.BankCard))
+                                            {
+                                                merchantAddInfo.BankCard = info.BankCard;
+                                            }
+
+                                            //企业法人对私授权书
+                                            if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement))
+                                            {
+                                                merchantAddInfo.Support = info.PriLicAgreement;
+                                            }
+                                        }
+                                        merchantAddInfo.OpenUnionNo = info.ZbankNo;
+                                    }
+                                }
+                            }
+                            maindb.SaveChanges();
+                            maindb.Dispose();
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "定时更新商户修改结算卡状态队列异常");
+                    }
+                }
+                else
+                {
+                    Thread.Sleep(60000);
+                }
+            }
+        }
+
+
+        public void TriggerUpdateStatus()
+        {
+            while (true)
+            {
+                try
+                {
+                    string data = RedisDbconn.Instance.RPop<string>("UpdateMerchantChangeCardStatus");
+                    if (!string.IsNullOrEmpty(data))
+                    {
+                        WebCMSEntities maindb = new WebCMSEntities();
+
+                        var infos = maindb.MerchantChangeSettlementCardRecord.Where(m => m.Status == 1).ToList();
+                        foreach (var item in infos)
+                        {
+                            var info = infos.FirstOrDefault(m => m.Id == item.Id) ?? new MerchantChangeSettlementCardRecord();
+
+                            //好哒查询修改银行卡任务审核状态
+                            JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(info.MchtNo, info.TaskId.ToString()));
+                            if (results["resultCode"].ToString() == "1")
+                            {
+                                var Status = int.Parse(results["data"]["status"].ToString());
+                                var Remark = results["data"]["desc"].ToString();
+                                //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
+                                info.Status = Status;
+                                info.Remark = Remark;
+
+                                //审核成功修改商户结算信息
+                                if (Status == 5)
+                                {
+                                    var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == info.MerchantId) ?? new MerchantAddInfo();
+                                    merchantAddInfo.AccountNumber = info.AccountNo;
+                                    merchantAddInfo.AccountName = info.AccountName;
+                                    var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + info.ZbankNo + "'");
+                                    merchantAddInfo.BankName = bankInfo.BankChild;
+                                    var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + info.AcctZbankCode + "'");
+                                    merchantAddInfo.BankAddressCode = AreaInfo.CityName;
+                                    merchantAddInfo.AccountType = info.AccountType.ToString();
+
+                                    //开户许可证
+                                    if (info.AccountType == 0 && !string.IsNullOrEmpty(info.OpenAccountLicenses))
+                                    {
+                                        merchantAddInfo.OpenAccountLicenses = info.OpenAccountLicenses;
+                                    }
+                                    if (info.AccountType == 1)
+                                    {
+                                        //银行卡正面
+                                        if (!string.IsNullOrEmpty(info.BankCard))
+                                        {
+                                            merchantAddInfo.BankCard = info.BankCard;
+                                        }
+
+                                        //企业法人对私授权书
+                                        if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(info.PriLicAgreement))
+                                        {
+                                            merchantAddInfo.Support = info.PriLicAgreement;
+                                        }
+                                    }
+                                    merchantAddInfo.OpenUnionNo = info.ZbankNo;
+                                }
+                            }
+                        }
+                        maindb.SaveChanges();
+                        maindb.Dispose();
+                    }
+                    else
+                    {
+                        Thread.Sleep(50000);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "触发更新商户修改结算卡状态队列异常");
+                }
+            }
+        }
+
+    }
+}

+ 5 - 0
Areas/Api/Controllers/BaseController.cs

@@ -38,6 +38,11 @@ namespace MySystem.Areas.Api.Controllers
         public string JwtSecret = Library.ConfigurationManager.AppSettings["JwtSecret"].ToString();
         public string JwtIss = Library.ConfigurationManager.AppSettings["JwtIss"].ToString();
         public string JwtAud = Library.ConfigurationManager.AppSettings["JwtAud"].ToString();
+        
+        //获取当前系统操作人
+        public string Operator = BaseClass.GetOperatorInfo();
+        public string LoginName = BaseClass.GetOperatorInfo().Substring(0, BaseClass.GetOperatorInfo().LastIndexOf("-"));
+
 
         #region 接口通用DES解密
 

+ 198 - 0
Areas/Api/Controllers/v1/Main2/MerchantChangeSettlementCardRecordController.cs

@@ -0,0 +1,198 @@
+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 MerchantChangeSettlementCardRecordController : BaseController
+    {
+        public MerchantChangeSettlementCardRecordController(IHttpContextAccessor accessor) : base(accessor)
+        {
+        }
+
+
+        #region 商户管理-银联商户修改结算卡记录
+        [Authorize]
+        public JsonResult UnionPayChangeSettlementCardList(string value)
+        {
+            value = PublicFunction.DesDecrypt(value);
+            JsonData data = JsonMapper.ToObject(value);
+            Dictionary<string, object> Other = new Dictionary<string, object>();
+            List<Dictionary<string, object>> dataList = UnionPayChangeSettlementCardListDo(value, out Other);
+            return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList, Other = Other });
+        }
+        private List<Dictionary<string, object>> UnionPayChangeSettlementCardListDo(string value, out Dictionary<string, object> Other)
+        {
+            JsonData data = JsonMapper.ToObject(value);
+            string MerchantName = data["MerchantName"].ToString(); //商户名称
+            string MchtNo = data["MchtNo"].ToString(); //商户号
+            string CreateDate = data["CreateDate"].ToString(); //创建时间
+            int pageSize = int.Parse(function.CheckInt(data["page_size"].ToString()));
+            int pageNum = int.Parse(function.CheckInt(data["page_num"].ToString()));
+            string condition = " and Status>-1";
+            if (!string.IsNullOrEmpty(data["MerchantName"].ToString()))
+            {
+                condition += " and MerchantName='" + MerchantName + "'";
+            }
+            if (!string.IsNullOrEmpty(data["MchtNo"].ToString()))
+            {
+                condition += " and MchtNo='" + MchtNo + "'";
+            }
+            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'";
+            }
+            List<RelationData> relationData = new List<RelationData>();
+            List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
+            Other = new Dictionary<string, object>();
+            int count = 0;
+            List<Dictionary<string, object>> source = MerchantChangeSettlementCardRecordService.List(relationData, condition, out count, pageNum, pageSize);
+            foreach (Dictionary<string, object> subdata in source)
+            {
+                Dictionary<string, object> curData = new Dictionary<string, object>();
+                curData.Add("Id", int.Parse(subdata["Id"].ToString())); //Id
+                curData.Add("MerchantId", int.Parse(subdata["MerchantId"].ToString())); //商户Id
+                curData.Add("MerchantName", subdata["MerchantName"].ToString()); //商户名称
+                curData.Add("Status", int.Parse(subdata["Status"].ToString())); //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过))
+                curData.Add("Remark", subdata["Remark"].ToString()); //审核备注
+                curData.Add("CreateDate", subdata["CreateDate"].ToString() == "" ? "" : DateTime.Parse(subdata["CreateDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss")); //交易时间
+                curData.Add("MchtNo", subdata["MchtNo"].ToString()); //商户号
+                curData.Add("AccountName", subdata["AccountName"].ToString()); //开户名
+                curData.Add("AccountNo", subdata["AccountNo"].ToString()); //卡号
+                curData.Add("ZBankNo", subdata["ZBankNo"].ToString()); //支行号
+                curData.Add("AlterType", subdata["AlterType"].ToString()); //结算类型
+                curData.Add("AcctZBankCode", subdata["AcctZBankCode"].ToString()); //开户支行地区码
+                curData.Add("IdCard", subdata["IdCard"].ToString()); //非法人身份证号
+                curData.Add("AgentCardStartDate", subdata["AgentCardStartDate"].ToString()); //非法人身份证有效开始时间
+                curData.Add("AgentCardEndDate", subdata["AgentCardEndDate"].ToString()); //非法人身份证有效结束时间
+                curData.Add("TaskId", subdata["TaskId"].ToString()); //任务Id
+                curData.Add("BankCard", subdata["BankCard"].ToString()); //银行卡正面照片
+                curData.Add("OpenAccountLicenses", subdata["OpenAccountLicenses"].ToString()); //开户许可证
+                curData.Add("PriLicAgreement", subdata["PriLicAgreement"].ToString()); //企业法人对私授权书
+                curData.Add("AgentProtocol", subdata["AgentProtocol"].ToString()); //委托结算授权书
+                curData.Add("AgentIdCardFront", subdata["AgentIdCardFront"].ToString()); //被委托人身份证人像面
+                curData.Add("AgentIdCardBack", subdata["AgentIdCardBack"].ToString()); //被委托人身份证国徽面
+                curData.Add("HoldAgentProtocol", subdata["HoldAgentProtocol"].ToString()); //法人手持委托结算授权书
+
+                dataList.Add(curData);
+            }
+            Other.Add("Count", count); //总数
+            //批量提交待审核数据
+            RedisDbconn.Instance.AddList("UpdateMerchantChangeCardStatus", "1");
+            return dataList;
+        }
+        #endregion
+
+
+        #region 商户管理-银联查询商户结算卡信息
+        [Authorize]
+        public JsonResult UnionPaySearchSettlementCardInfo(string value)
+        {
+            value = PublicFunction.DesDecrypt(value); ;
+            JsonData data = JsonMapper.ToObject(value);
+            Dictionary<string, object> Obj = UnionPaySearchSettlementCardInfoDo(value);
+            return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
+        }
+        private Dictionary<string, object> UnionPaySearchSettlementCardInfoDo(string value)
+        {
+            JsonData data = JsonMapper.ToObject(value);
+            int MerchantId = int.Parse(function.CheckInt(data["MerchantId"].ToString())); //商户Id
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            var merchantAddInfo = MerchantAddInfoService.Query(MerchantId);
+            var IsChange = 0;
+            var check = MerchantChangeSettlementCardRecordService.Query(MerchantId);
+            if (check.Id > 0) IsChange = 1;
+
+            Obj.Add("AlterType", merchantAddInfo.AccountType); //结算类型(0 对公结算银行卡 法人1 对私结算银行卡 2 非法人结算)
+            Obj.Add("AcctZBankAreas", merchantAddInfo.BankAddressCode); //开户支行地区
+            Obj.Add("AcctZBankName", merchantAddInfo.BankName); //开户支行名称
+            Obj.Add("MchtNo", merchantAddInfo.MchtNo); //商户号
+            Obj.Add("AcctName", merchantAddInfo.AccountName); //开户名称
+            Obj.Add("AccountNo", merchantAddInfo.AccountNumber); //卡号(0-对公 时填写对公账号,1-对私 时填写银行卡号)
+            Obj.Add("IdCard", ""); //非法人身份证号(结算类型为2时必填,默认传空字符串)
+            Obj.Add("AgentCardStartDate", ""); //非法人身份证有效开始时间(yyyy-MM-dd,结算类型为2时必填,默认传空字符串)
+            Obj.Add("AgentCardEndDate", ""); //非法人身份证有效结束时间(yyyy-MM-dd,结算类型为2时必填,默认传空字符串)
+            Obj.Add("BankCard", merchantAddInfo.BankCard); //银行卡正面照片(结算类型为1和2时必填,默认传空字符串)
+            Obj.Add("OpenAccountLicenses", merchantAddInfo.OpenAccountLicenses); //开户许可证(企业类型商户或结算类型为0时必填,默认传空字符串)
+            Obj.Add("PriLicAgreement", ""); //企业法人对私授权书(结算类型为1且为企业商户时必填,默认传空字符串)
+            Obj.Add("AgentProtocol", ""); //委托结算授权书(结算类型为2时必填,默认传空字符串)
+            Obj.Add("AgentIdCardFront", ""); //被委托人身份证人像面(结算类型为2时必填,默认传空字符串)
+            Obj.Add("AgentIdCardBack", ""); //被委托人身份证国徽面(结算类型为2时必填,默认传空字符串)
+            Obj.Add("HoldAgentProtocol", ""); //法人手持委托结算授权书(结算类型为2时必填,默认传空字符串)
+            Obj.Add("MerchantId", MerchantId); //商户Id
+            Obj.Add("MerchantName", merchantAddInfo.CertMerchantName); //商户名称
+            Obj.Add("AccountType", merchantAddInfo.AccountType); //账户类型(0 对公 1 对私)
+            Obj.Add("IsChange", IsChange); //是否已提交修改结算卡(0 否 1 是)
+            Obj.Add("CreateDate", check.Id == 0 ? "" : check.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //提交修改时间
+            Obj.Add("UpdateDate", check.Id == 0 ? "" : check.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); //提交更新时间
+            Obj.Add("ChangeStatus", check.Status); //提交修改状态(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
+            Obj.Add("Remark", check.Remark); //提交备注
+
+            return Obj;
+        }
+        #endregion
+
+
+        #region 商户管理-银联提交商户修改结算卡申请
+        [Authorize]
+        public JsonResult UnionPaySendChangeSettlementCard(string value)
+        {
+            value = PublicFunction.DesDecrypt(value);
+            JsonData data = JsonMapper.ToObject(value);
+            AppResultJson result = UnionPaySendChangeSettlementCardDo(value);
+            return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
+        }
+        private AppResultJson UnionPaySendChangeSettlementCardDo(string value)
+        {
+            JsonData data = JsonMapper.ToObject(value);
+            int MerchantId = int.Parse(function.CheckInt(data["MerchantId"].ToString())); //商户Id
+            string MerchantName = data["MerchantName"].ToString(); //商户名称
+            string MchtNo = data["MchtNo"].ToString(); //商户号
+            string AlterType = data["AlterType"].ToString(); //结算类型(0 对公结算银行卡 法人1 对私结算银行卡 2 非法人结算)
+            string AcctZBankAreas = data["AcctZBankAreas"].ToString(); //开户支行地区
+            string AcctZBankName = data["AcctZBankName"].ToString(); //开户支行名称
+            string AcctName = data["AcctName"].ToString(); //开户名称
+            string AccountNo = data["AccountNo"].ToString(); //卡号
+            string IdCard = data["IdCard"].ToString(); //非法人身份证号(结算类型为2时必填,默认传空字符串)
+            string AgentCardStartDate = data["AgentCardStartDate"].ToString(); //非法人身份证有效开始时间(yyyy-MM-dd,结算类型为2时必填,默认传空字符串)
+            string AgentCardEndDate = data["AgentCardEndDate"].ToString(); //非法人身份证有效结束时间(yyyy-MM-dd,结算类型为2时必填,默认传空字符串)
+            string BankCard = data["BankCard"].ToString(); //银行卡正面照片(结算类型为1和2时必填,默认传空字符串)
+            string OpenAccountLicenses = data["OpenAccountLicenses"].ToString(); //开户许可证(企业类型商户或结算类型为0时必填,默认传空字符串)
+            string PriLicAgreement = data["PriLicAgreement"].ToString(); //企业法人对私授权书(结算类型为1且为企业商户时必填,默认传空字符串)
+            string AgentProtocol = data["AgentProtocol"].ToString(); //委托结算授权书(结算类型为2时必填,默认传空字符串)
+            string AgentIdCardFront = data["AgentIdCardFront"].ToString(); //被委托人身份证人像面(结算类型为2时必填,默认传空字符串)
+            string AgentIdCardBack = data["AgentIdCardBack"].ToString(); //被委托人身份证国徽面(结算类型为2时必填,默认传空字符串)
+            string HoldAgentProtocol = data["HoldAgentProtocol"].ToString(); //法人手持委托结算授权书(结算类型为2时必填,默认传空字符串)
+
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+
+            //添加或修改银联商户修改结算卡记录
+            var info = MerchantChangeSettlementCardRecordUtil.AddOrEditMerchantChangeSettlementCardRecord(MerchantId, MerchantName, Operator, AlterType, AcctZBankAreas, AcctZBankName, MchtNo, AcctName, AccountNo, IdCard, AgentCardStartDate, AgentCardEndDate, BankCard, OpenAccountLicenses, PriLicAgreement, AgentProtocol, AgentIdCardFront, AgentIdCardBack, HoldAgentProtocol);
+            if (info == "success")
+            {
+                return new AppResultJson() { Status = "1", Info = "操作成功", Data = Obj };
+            }
+            else
+            {
+                return new AppResultJson() { Status = "-1", Info = info, Data = Obj };
+            }
+        }
+        #endregion
+
+    }
+}

+ 1 - 0
Config/Base.cs

@@ -11,6 +11,7 @@ namespace AppConfig
         public static string SqlConnStr1 = ConfigurationManager.AppSettings["SqlConnStr1"].ToString();
         public static string SqlConnStr2 = ConfigurationManager.AppSettings["SqlConnStr2"].ToString();
         public static string Host = Library.ConfigurationManager.AppSettings["Host"].ToString();
+        public static string OssHost = Library.ConfigurationManager.AppSettings["OssHost"].ToString();
         public static string SourceHost = Library.ConfigurationManager.AppSettings["SourceHost"].ToString();
         public static string Database = Library.ConfigurationManager.AppSettings["Database"].ToString();
         public static string defaultImage = Library.ConfigurationManager.AppSettings["Host"].ToString() + "/skin/app/default/static/images/default.jpg";

+ 41 - 0
Entity/HaoDa/ChangeMerchantCard.cs

@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem
+{
+    /// <summary>
+    /// 商户修改银行卡新
+    /// </summary>
+    public class ChangeMerchantCard
+    {
+        public string mchtNo { get; set; }//收款商户号
+        public string accountName { get; set; }//开户名(账户名称 账户类型 0-对公 时填写对公账户名,1-对私 时填写银行卡户名)
+        public string accountNo { get; set; }//卡号(账户类型 0-对公 时填写对公账号,1-对私 时填写银行卡号)
+        public string zbankNo { get; set; }//开户支行号
+        public string accoutType { get; set; }//账户类型 0-对公,1-对私
+        public string alterType { get; set; }//结算类型:0-对公结算银行卡;1-法人对私结算银行卡;2-非法人结算
+        public string acctZbankCode { get; set; }//开户支行地区码
+        public string idCard { get; set; }//非法人身份证号(结算类型为2时必填)
+        public string agentCardDate { get; set; }//非法人身份证有效期(结算类型为2时必填,格式:20210101-20220101,如长期:20210101-长期)
+        public string openBankAccName { get; set; }//开户许可证-开户名(修改对公凭证时填写)
+        public string openBankName { get; set; }//开户许可证-银行名称(修改对公凭证时填写)
+        public string openCollectBankCode { get; set; }//开户许可证-银行代码(修改对公凭证时填写)
+        public string openBankRegionCode { get; set; }//开户许可证-银行地区码(修改对公凭证时填写)
+        public string openBankRegionName { get; set; }//开户许可证-开户地名称(修改对公凭证时填写)
+        public string openUnionNo { get; set; }//开户许可证-开户支行(修改对公凭证时填写)
+        public string openUnionName { get; set; }//开户许可证-支行名称(修改对公凭证时填写)
+        public string openBankAccout { get; set; }//开户许可证-银行卡号(修改对公凭证时填写)
+        public List<PhotoItem> photoList { get; set; }//图片列表
+
+    }
+
+    /// <summary>
+    /// 图片类
+    /// </summary>
+    public class PhotoItem
+    {
+        public string mediaCode { get; set; }//图片名
+        public string mediaPath { get; set; }//图片token
+    }
+
+}

+ 15 - 0
Entity/HaoDa/QueryChangeCardStatus.cs

@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem
+{
+    /// <summary>
+    /// 查询修改银行卡任务审核状态
+    /// </summary>
+    public class QueryChangeCardStatus
+    {
+        public string mchtNo { get; set; }//收款商户号
+        public int taskId { get; set; }//任务id
+
+    }
+}

+ 19 - 0
Models/Main2/AgentLevels.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main2
+{
+    public partial class AgentLevels
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string Name { get; set; }
+        public decimal Percent { get; set; }
+        public decimal UnActPercent { get; set; }
+        public string Operator { get; set; }
+    }
+}

+ 25 - 0
Models/Main2/AgentProfitRecord.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main2
+{
+    public partial class AgentProfitRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string TradeMonth { get; set; }
+        public string Remark { get; set; }
+        public int CheckStatus { get; set; }
+        public decimal TradeProfit { get; set; }
+        public decimal CreditTradeAmt { get; set; }
+        public int ProfitType { get; set; }
+        public int UserId { get; set; }
+        public int ActFlag { get; set; }
+        public string Operator { get; set; }
+        public string OrderNo { get; set; }
+    }
+}

+ 23 - 0
Models/Main2/AgentTradeStatSummary.cs

@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main2
+{
+    public partial class AgentTradeStatSummary
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string ManageAreas { get; set; }
+        public int IsAct { get; set; }
+        public int TradeCount { get; set; }
+        public int PayMode { get; set; }
+        public decimal TotalAmount { get; set; }
+        public string TradeMonth { get; set; }
+        public string TradeDate { get; set; }
+        public int UserId { get; set; }
+    }
+}

+ 20 - 0
Models/Main2/ChangeSettlementCardAuditRecord.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main2
+{
+    public partial class ChangeSettlementCardAuditRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public int AuditStatus { get; set; }
+        public string MchtNo { get; set; }
+        public int MerchantId { get; set; }
+        public int TaskId { get; set; }
+        public string Remark { get; set; }
+    }
+}

+ 1 - 0
Models/Main2/MerchantAddInfo.cs

@@ -148,5 +148,6 @@ namespace MySystem.Models.Main2
         public DateTime? HdPassDate { get; set; }
         public ulong HdBindWeChat { get; set; }
         public string MerchantType { get; set; }
+        public int PlaceType { get; set; }
     }
 }

+ 37 - 0
Models/Main2/MerchantChangeSettlementCardRecord.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main2
+{
+    public partial class MerchantChangeSettlementCardRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string HoldAgentProtocol { get; set; }
+        public string AgentIdCardBack { get; set; }
+        public string AgentIdCardFront { get; set; }
+        public string AgentProtocol { get; set; }
+        public string PriLicAgreement { get; set; }
+        public string OpenAccountLicenses { get; set; }
+        public string BankCard { get; set; }
+        public int TaskId { get; set; }
+        public DateTime? AgentCardEndDate { get; set; }
+        public DateTime? AgentCardStartDate { get; set; }
+        public string IdCard { get; set; }
+        public string AcctZbankCode { get; set; }
+        public int AlterType { get; set; }
+        public string ZbankNo { get; set; }
+        public string AccountNo { get; set; }
+        public string AccountName { get; set; }
+        public string MchtNo { get; set; }
+        public string Operator { get; set; }
+        public int AccountType { get; set; }
+        public string Remark { get; set; }
+        public string MerchantName { get; set; }
+        public int MerchantId { get; set; }
+    }
+}

+ 21 - 0
Models/Main2/ProfitRecordForAgent.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main2
+{
+    public partial class ProfitRecordForAgent
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int Status { get; set; }
+        public int Version { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string TradeMonth { get; set; }
+        public decimal TradeAmount { get; set; }
+        public string Remark { get; set; }
+        public int BrandId { get; set; }
+        public decimal ProfitAmount { get; set; }
+        public int UserId { get; set; }
+    }
+}

+ 452 - 0
Models/Main2/WebCMSEntities.cs

@@ -24,6 +24,9 @@ namespace MySystem.Models.Main2
         public virtual DbSet<ActivityRedPackageTop10> ActivityRedPackageTop10 { get; set; }
         public virtual DbSet<Advertisment> Advertisment { get; set; }
         public virtual DbSet<AgentLevelSet> AgentLevelSet { get; set; }
+        public virtual DbSet<AgentLevels> AgentLevels { get; set; }
+        public virtual DbSet<AgentProfitRecord> AgentProfitRecord { get; set; }
+        public virtual DbSet<AgentTradeStatSummary> AgentTradeStatSummary { get; set; }
         public virtual DbSet<AppBottomNavs> AppBottomNavs { get; set; }
         public virtual DbSet<AppVersion> AppVersion { get; set; }
         public virtual DbSet<AppVideo> AppVideo { get; set; }
@@ -39,6 +42,7 @@ namespace MySystem.Models.Main2
         public virtual DbSet<BusinessScope> BusinessScope { get; set; }
         public virtual DbSet<BusinessScopeType> BusinessScopeType { get; set; }
         public virtual DbSet<BusinessTradeSummary> BusinessTradeSummary { get; set; }
+        public virtual DbSet<ChangeSettlementCardAuditRecord> ChangeSettlementCardAuditRecord { get; set; }
         public virtual DbSet<Col> Col { get; set; }
         public virtual DbSet<ConsumerOpenIds> ConsumerOpenIds { get; set; }
         public virtual DbSet<ConsumerOrderForNo> ConsumerOrderForNo { get; set; }
@@ -89,6 +93,7 @@ namespace MySystem.Models.Main2
         public virtual DbSet<MerchantAdmin> MerchantAdmin { get; set; }
         public virtual DbSet<MerchantAmountSummay> MerchantAmountSummay { get; set; }
         public virtual DbSet<MerchantAuth> MerchantAuth { get; set; }
+        public virtual DbSet<MerchantChangeSettlementCardRecord> MerchantChangeSettlementCardRecord { get; set; }
         public virtual DbSet<MerchantClass> MerchantClass { get; set; }
         public virtual DbSet<MerchantCol> MerchantCol { get; set; }
         public virtual DbSet<MerchantComment> MerchantComment { get; set; }
@@ -170,6 +175,7 @@ namespace MySystem.Models.Main2
         public virtual DbSet<ProfitReceiveRecord> ProfitReceiveRecord { get; set; }
         public virtual DbSet<ProfitReceives> ProfitReceives { get; set; }
         public virtual DbSet<ProfitRecord> ProfitRecord { get; set; }
+        public virtual DbSet<ProfitRecordForAgent> ProfitRecordForAgent { get; set; }
         public virtual DbSet<ProfitRewardExport> ProfitRewardExport { get; set; }
         public virtual DbSet<ProfitRewardRecord> ProfitRewardRecord { get; set; }
         public virtual DbSet<ProfitSubsidyDetail> ProfitSubsidyDetail { get; set; }
@@ -925,6 +931,193 @@ namespace MySystem.Models.Main2
                 entity.Property(e => e.Version).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<AgentLevels>(entity =>
+            {
+                entity.HasComment("区域代理等级");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.Name)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("名称")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Operator)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("操作人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Percent)
+                    .HasColumnType("decimal(18,5)")
+                    .HasComment("分润比例");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.UnActPercent)
+                    .HasColumnType("decimal(18,5)")
+                    .HasComment("非活动分润比例");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
+            modelBuilder.Entity<AgentProfitRecord>(entity =>
+            {
+                entity.HasComment("区域代理等级");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.ActFlag)
+                    .HasColumnType("int(11)")
+                    .HasComment("交易类型");
+
+                entity.Property(e => e.CheckStatus)
+                    .HasColumnType("int(11)")
+                    .HasComment("验证和同步账户状态");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.CreditTradeAmt)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("贷记卡交易总金额");
+
+                entity.Property(e => e.Operator)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("操作人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.OrderNo)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("订单号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.ProfitType)
+                    .HasColumnType("int(11)")
+                    .HasComment("创客分润类型");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(64)")
+                    .HasComment("备注")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.TradeMonth)
+                    .HasColumnType("varchar(6)")
+                    .HasComment("交易月")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.TradeProfit)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("交易分润");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.UserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("创客");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
+            modelBuilder.Entity<AgentTradeStatSummary>(entity =>
+            {
+                entity.HasComment("创客区域代理");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.IsAct)
+                    .HasColumnType("int(11)")
+                    .HasComment("是否活动");
+
+                entity.Property(e => e.ManageAreas)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("管辖区域")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.PayMode)
+                    .HasColumnType("int(11)")
+                    .HasComment("支付方式");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.TotalAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("订单总额");
+
+                entity.Property(e => e.TradeCount)
+                    .HasColumnType("int(11)")
+                    .HasComment("交易笔数");
+
+                entity.Property(e => e.TradeDate)
+                    .HasColumnType("varchar(8)")
+                    .HasComment("交易日")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.TradeMonth)
+                    .HasColumnType("varchar(6)")
+                    .HasComment("交易月")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.UserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("创客");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<AppBottomNavs>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");
@@ -2099,6 +2292,57 @@ namespace MySystem.Models.Main2
                 entity.Property(e => e.VipFlag).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<ChangeSettlementCardAuditRecord>(entity =>
+            {
+                entity.HasComment("商户修改结算卡审核表");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.AuditStatus)
+                    .HasColumnType("int(11)")
+                    .HasComment("审核状态");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.MchtNo)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("收款商户号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MerchantId)
+                    .HasColumnType("int(11)")
+                    .HasComment("申请商户Id");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("备注")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.TaskId)
+                    .HasColumnType("int(11)")
+                    .HasComment("申请任务Id");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<Col>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");
@@ -5679,6 +5923,10 @@ namespace MySystem.Models.Main2
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.PlaceType)
+                    .HasColumnType("int(11)")
+                    .HasComment("场所类型");
+
                 entity.Property(e => e.ProductImg)
                     .HasColumnName("productImg")
                     .HasColumnType("varchar(200)")
@@ -6158,6 +6406,155 @@ namespace MySystem.Models.Main2
                 entity.Property(e => e.Version).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<MerchantChangeSettlementCardRecord>(entity =>
+            {
+                entity.HasComment("商户修改结算卡记录表");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.AccountName)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("开户名")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.AccountNo)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("卡号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.AccountType)
+                    .HasColumnType("int(11)")
+                    .HasComment("账户类型");
+
+                entity.Property(e => e.AcctZbankCode)
+                    .HasColumnName("AcctZBankCode")
+                    .HasColumnType("varchar(50)")
+                    .HasComment("开户支行地区码")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.AgentCardEndDate)
+                    .HasColumnType("datetime")
+                    .HasComment("非法人身份证有效结束时间");
+
+                entity.Property(e => e.AgentCardStartDate)
+                    .HasColumnType("datetime")
+                    .HasComment("非法人身份证有效开始时间");
+
+                entity.Property(e => e.AgentIdCardBack)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("被委托人身份证国徽面")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.AgentIdCardFront)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("被委托人身份证人像面")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.AgentProtocol)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("委托结算授权书")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.AlterType)
+                    .HasColumnType("int(11)")
+                    .HasComment("结算类型");
+
+                entity.Property(e => e.BankCard)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("银行卡正面照片")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.HoldAgentProtocol)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("法人手持委托结算授权书")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.IdCard)
+                    .HasColumnType("varchar(18)")
+                    .HasComment("非法人身份证号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MchtNo)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("商户号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MerchantId)
+                    .HasColumnType("int(11)")
+                    .HasComment("商户Id");
+
+                entity.Property(e => e.MerchantName)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("商户名称")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.OpenAccountLicenses)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("开户许可证")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Operator)
+                    .HasColumnType("varchar(50)")
+                    .HasComment("操作人")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.PriLicAgreement)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("企业法人对私授权书")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(200)")
+                    .HasComment("审核备注")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.TaskId)
+                    .HasColumnType("int(11)")
+                    .HasComment("任务Id");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+
+                entity.Property(e => e.ZbankNo)
+                    .HasColumnName("ZBankNo")
+                    .HasColumnType("varchar(50)")
+                    .HasComment("支行号")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+            });
+
             modelBuilder.Entity<MerchantClass>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");
@@ -11988,6 +12385,61 @@ namespace MySystem.Models.Main2
                 entity.Property(e => e.Version).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<ProfitRecordForAgent>(entity =>
+            {
+                entity.HasComment("区域代理分润记录");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.BrandId)
+                    .HasColumnType("int(11)")
+                    .HasComment("品牌");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.ProfitAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("分润金额");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("varchar(64)")
+                    .HasComment("备注")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort)
+                    .HasColumnType("int(11)")
+                    .HasComment("排序序号");
+
+                entity.Property(e => e.Status)
+                    .HasColumnType("int(11)")
+                    .HasComment("状态");
+
+                entity.Property(e => e.TradeAmount)
+                    .HasColumnType("decimal(18,2)")
+                    .HasComment("交易额");
+
+                entity.Property(e => e.TradeMonth)
+                    .HasColumnType("varchar(6)")
+                    .HasComment("月份")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.UserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("创客");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<ProfitRewardExport>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");

+ 287 - 0
Service/Main2/ChangeSettlementCardAuditRecordService copy.cs

@@ -0,0 +1,287 @@
+/*
+ * 商户修改结算卡审核表
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Data;
+using MySystem.Models.Main2;
+using Library;
+using LitJson;
+
+namespace MySystem.Service.Main2
+{
+    public class ChangeSettlementCardAuditRecordService
+    {
+        static string _conn = ConfigurationManager.AppSettings["SqlConnStr2"].ToString();
+
+        /// <summary>
+        /// 查询列表(适合多表关联查询)
+        /// </summary>
+        /// <param name="relationData">关联表</param>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <param name="count">总数(输出)</param>
+        /// <param name="page">页码</param>
+        /// <param name="limit">每页条数</param>
+        /// <returns></returns>
+        public static List<Dictionary<string, object>> List(List<RelationData> relationData, string condition, out int count, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
+        {
+            List<string> fields = new List<string>(); //要显示的列,不设置则返回全部字段
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("ChangeSettlementCardAuditRecord", relationData, orderBy, page, limit, condition, fields);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            count = int.Parse(obj["count"].ToString());
+            return diclist;
+        }
+        public static List<Dictionary<string, object>> List(List<RelationData> relationData, string condition, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
+        {
+            List<string> fields = new List<string>(); //要显示的列,不设置则返回全部字段
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("ChangeSettlementCardAuditRecord", relationData, orderBy, page, limit, condition, fields);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            return diclist;
+        }
+
+        /// <summary>
+        /// 查询列表(单表)
+        /// </summary>
+        /// <param name="fieldList">返回的字段</param>
+        /// <param name="condition">查询条件</param>
+        /// <param name="page">页码</param>
+        /// <param name="limit">每页条数</param>
+        /// <param name="orderBy">排序</param>
+        /// <returns></returns>
+        public static List<Dictionary<string, object>> List(string fieldList, string condition, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
+        {
+            List<string> fields = fieldList.Split(',').ToList(); //要显示的列
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("ChangeSettlementCardAuditRecord", new List<RelationData>(), orderBy, page, limit, condition, fields);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            return diclist;
+        }
+
+        /// <summary>
+        /// 查询一条记录
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <returns></returns>
+        public static ChangeSettlementCardAuditRecord Query(int Id)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("*", "ChangeSettlementCardAuditRecord", Id);
+            if (obj.Keys.Count > 0)
+            {
+                return Newtonsoft.Json.JsonConvert.DeserializeObject<ChangeSettlementCardAuditRecord>(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
+            }
+            return new ChangeSettlementCardAuditRecord();
+        }
+
+        /// <summary>
+        /// 查询一条记录
+        /// </summary>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <returns></returns>
+        public static ChangeSettlementCardAuditRecord Query(string condition)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("*", "ChangeSettlementCardAuditRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                return Newtonsoft.Json.JsonConvert.DeserializeObject<ChangeSettlementCardAuditRecord>(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
+            }
+            return new ChangeSettlementCardAuditRecord();
+        }
+
+        /// <summary>
+        /// 查询一条记录
+        /// </summary>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <param name="fields">返回的字段</param>
+        /// <returns></returns>
+        public static Dictionary<string, object> Query(string condition, string fields)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query(fields, "ChangeSettlementCardAuditRecord", condition);
+            return obj;
+        }
+
+        public static decimal Sum(string condition, string field)
+        {
+            decimal amount = 0;
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("Sum(" + field + ") " + field + "", "ChangeSettlementCardAuditRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                amount = decimal.Parse(function.CheckNum(obj[field].ToString()));
+            }
+            return amount;
+        }
+
+        /// <summary>
+        /// 查询记录数
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <returns></returns>
+        public static int Count(string condition = "", string field = "Id")
+        {
+            int result = 0;
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("count(" + field + ") " + field + "", "ChangeSettlementCardAuditRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                result = int.Parse(function.CheckInt(obj[field].ToString()));
+            }
+            return result;
+        }
+
+        /// <summary>
+        /// 查询是否存在
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <returns></returns>
+        public static bool Exist(string condition)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("1", "ChangeSettlementCardAuditRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 添加数据
+        /// </summary>
+        /// <param name="Fields">要设置的字段</param>
+        /// <returns></returns>
+        public static AppResultJson Add(Dictionary<string, object> fields, bool check = true)
+        {
+            if (check)
+            {
+
+            }
+            int Id = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Add("ChangeSettlementCardAuditRecord", fields, 0);
+            return new AppResultJson() { Status = "1", Data = Id };
+        }
+
+        /// <summary>
+        /// 修改数据
+        /// </summary>
+        /// <param name="Fields">要设置的字段</param>
+        /// <param name="Id">主键Id</param>
+        public static AppResultJson Edit(Dictionary<string, object> fields, int Id, bool check = true)
+        {
+            if (check)
+            {
+                if (string.IsNullOrEmpty(fields["MerchantId"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写商户" };
+                }
+                if (string.IsNullOrEmpty(fields["ConsumerId"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写消费者" };
+                }
+                if (string.IsNullOrEmpty(fields["PayMode"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写支付方式" };
+                }
+                if (string.IsNullOrEmpty(fields["PayMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写支付金额" };
+                }
+                if (!function.IsNum(fields["PayMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的支付金额" };
+                }
+                if (string.IsNullOrEmpty(fields["ReturnMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写已返金额" };
+                }
+                if (!function.IsNum(fields["ReturnMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的已返金额" };
+                }
+                if (string.IsNullOrEmpty(fields["MaxDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写最大分红" };
+                }
+                if (!function.IsNum(fields["MaxDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的最大分红" };
+                }
+                if (string.IsNullOrEmpty(fields["CurDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写当前分红" };
+                }
+                if (!function.IsNum(fields["CurDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的当前分红" };
+                }
+                if (string.IsNullOrEmpty(fields["IsAct"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写是否活动" };
+                }
+
+            }
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Edit("ChangeSettlementCardAuditRecord", fields, Id);
+            return new AppResultJson() { Status = "1", Data = Id };
+        }
+
+        /// <summary>
+        /// 逻辑删除
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        public static void Remove(int Id)
+        {
+            Dictionary<string, object> fields = new Dictionary<string, object>();
+            fields.Add("Status", -1);
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Edit("ChangeSettlementCardAuditRecord", fields, Id);
+        }
+
+        /// <summary>
+        /// 删除数据
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        public static void Delete(int Id)
+        {
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Delete("ChangeSettlementCardAuditRecord", Id);
+        }
+
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <param name="Sort">排序序号</param>
+        public static void Sort(int Id, int Sort)
+        {
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Sort("ChangeSettlementCardAuditRecord", Sort, Id);
+        }
+
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData">json数据</param>
+        public static void Import(string ExcelData)
+        {
+            // WebCMSEntities db = new WebCMSEntities();
+            // JsonData list = JsonMapper.ToObject(ExcelData);
+            // for (int i = 1; i < list.Count;i++ )
+            // {
+            //     JsonData dr = list[i];
+
+            //     db.ChangeSettlementCardAuditRecord.Add(new ChangeSettlementCardAuditRecord()
+            //     {
+            //         CreateDate = DateTime.Now,
+            //         UpdateDate = DateTime.Now,
+
+            //     });
+            //     db.SaveChanges();
+            // }
+            // db.Dispose();
+        }
+
+        /// <summary>
+        /// 导出excel表格
+        /// </summary>
+        /// <param name="fields">查询条件(单个字段)</param>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <returns></returns>
+        // public static void ExportExcel(List<RelationData> relationData, string condition)
+        // {
+
+        // }
+    }
+}

+ 286 - 0
Service/Main2/MerchantChangeSettlementCardRecordService.cs

@@ -0,0 +1,286 @@
+/*
+ * 商户修改结算卡记录表
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Data;
+using MySystem.Models.Main2;
+using Library;
+using LitJson;
+
+namespace MySystem.Service.Main2
+{
+    public class MerchantChangeSettlementCardRecordService
+    {
+        static string _conn = ConfigurationManager.AppSettings["SqlConnStr2"].ToString();
+
+        /// <summary>
+        /// 查询列表(适合多表关联查询)
+        /// </summary>
+        /// <param name="relationData">关联表</param>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <param name="count">总数(输出)</param>
+        /// <param name="page">页码</param>
+        /// <param name="limit">每页条数</param>
+        /// <returns></returns>
+        public static List<Dictionary<string, object>> List(List<RelationData> relationData, string condition, out int count, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
+        {
+            List<string> fields = new List<string>(); //要显示的列,不设置则返回全部字段
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("MerchantChangeSettlementCardRecord", relationData, orderBy, page, limit, condition, fields);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            count = int.Parse(obj["count"].ToString());
+            return diclist;
+        }
+        public static List<Dictionary<string, object>> List(List<RelationData> relationData, string condition, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
+        {
+            List<string> fields = new List<string>(); //要显示的列,不设置则返回全部字段
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("MerchantChangeSettlementCardRecord", relationData, orderBy, page, limit, condition, fields);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            return diclist;
+        }
+
+        /// <summary>
+        /// 查询列表(单表)
+        /// </summary>
+        /// <param name="fieldList">返回的字段</param>
+        /// <param name="condition">查询条件</param>
+        /// <param name="page">页码</param>
+        /// <param name="limit">每页条数</param>
+        /// <param name="orderBy">排序</param>
+        /// <returns></returns>
+        public static List<Dictionary<string, object>> List(string fieldList, string condition, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
+        {
+            List<string> fields = fieldList.Split(',').ToList(); //要显示的列
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("MerchantChangeSettlementCardRecord", new List<RelationData>(), orderBy, page, limit, condition, fields);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            return diclist;
+        }
+
+        /// <summary>
+        /// 查询一条记录
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <returns></returns>
+        public static MerchantChangeSettlementCardRecord Query(int Id)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("*", "MerchantChangeSettlementCardRecord", Id);
+            if (obj.Keys.Count > 0)
+            {
+                return Newtonsoft.Json.JsonConvert.DeserializeObject<MerchantChangeSettlementCardRecord>(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
+            }
+            return new MerchantChangeSettlementCardRecord();
+        }
+
+        /// <summary>
+        /// 查询一条记录
+        /// </summary>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <returns></returns>
+        public static MerchantChangeSettlementCardRecord Query(string condition)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("*", "MerchantChangeSettlementCardRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                return Newtonsoft.Json.JsonConvert.DeserializeObject<MerchantChangeSettlementCardRecord>(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
+            }
+            return new MerchantChangeSettlementCardRecord();
+        }
+
+        /// <summary>
+        /// 查询一条记录
+        /// </summary>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <param name="fields">返回的字段</param>
+        /// <returns></returns>
+        public static Dictionary<string, object> Query(string condition, string fields)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query(fields, "MerchantChangeSettlementCardRecord", condition);
+            return obj;
+        }
+
+        public static decimal Sum(string condition, string field)
+        {
+            decimal amount = 0;
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("Sum(" + field + ") " + field + "", "MerchantChangeSettlementCardRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                amount = decimal.Parse(function.CheckNum(obj[field].ToString()));
+            }
+            return amount;
+        }
+
+        /// <summary>
+        /// 查询记录数
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <returns></returns>
+        public static int Count(string condition = "", string field = "Id")
+        {
+            int result = 0;
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("count(" + field + ") " + field + "", "MerchantChangeSettlementCardRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                result = int.Parse(function.CheckInt(obj[field].ToString()));
+            }
+            return result;
+        }
+
+        /// <summary>
+        /// 查询是否存在
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <returns></returns>
+        public static bool Exist(string condition)
+        {
+            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("1", "MerchantChangeSettlementCardRecord", condition);
+            if (obj.Keys.Count > 0)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 添加数据
+        /// </summary>
+        /// <param name="Fields">要设置的字段</param>
+        /// <returns></returns>
+        public static AppResultJson Add(Dictionary<string, object> fields, bool check = true)
+        {
+            if (check)
+            {
+            }
+            int Id = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Add("MerchantChangeSettlementCardRecord", fields, 0);
+            return new AppResultJson() { Status = "1", Data = Id };
+        }
+
+        /// <summary>
+        /// 修改数据
+        /// </summary>
+        /// <param name="Fields">要设置的字段</param>
+        /// <param name="Id">主键Id</param>
+        public static AppResultJson Edit(Dictionary<string, object> fields, int Id, bool check = true)
+        {
+            if (check)
+            {
+                if (string.IsNullOrEmpty(fields["MerchantId"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写商户" };
+                }
+                if (string.IsNullOrEmpty(fields["ConsumerId"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写消费者" };
+                }
+                if (string.IsNullOrEmpty(fields["PayMode"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写支付方式" };
+                }
+                if (string.IsNullOrEmpty(fields["PayMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写支付金额" };
+                }
+                if (!function.IsNum(fields["PayMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的支付金额" };
+                }
+                if (string.IsNullOrEmpty(fields["ReturnMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写已返金额" };
+                }
+                if (!function.IsNum(fields["ReturnMoney"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的已返金额" };
+                }
+                if (string.IsNullOrEmpty(fields["MaxDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写最大分红" };
+                }
+                if (!function.IsNum(fields["MaxDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的最大分红" };
+                }
+                if (string.IsNullOrEmpty(fields["CurDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写当前分红" };
+                }
+                if (!function.IsNum(fields["CurDivi"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写正确的当前分红" };
+                }
+                if (string.IsNullOrEmpty(fields["IsAct"].ToString()))
+                {
+                    return new AppResultJson() { Status = "-1", Info = "请填写是否活动" };
+                }
+
+            }
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Edit("MerchantChangeSettlementCardRecord", fields, Id);
+            return new AppResultJson() { Status = "1", Data = Id };
+        }
+
+        /// <summary>
+        /// 逻辑删除
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        public static void Remove(int Id)
+        {
+            Dictionary<string, object> fields = new Dictionary<string, object>();
+            fields.Add("Status", -1);
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Edit("MerchantChangeSettlementCardRecord", fields, Id);
+        }
+
+        /// <summary>
+        /// 删除数据
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        public static void Delete(int Id)
+        {
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Delete("MerchantChangeSettlementCardRecord", Id);
+        }
+
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id">主键Id</param>
+        /// <param name="Sort">排序序号</param>
+        public static void Sort(int Id, int Sort)
+        {
+            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Sort("MerchantChangeSettlementCardRecord", Sort, Id);
+        }
+
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData">json数据</param>
+        public static void Import(string ExcelData)
+        {
+            // WebCMSEntities db = new WebCMSEntities();
+            // JsonData list = JsonMapper.ToObject(ExcelData);
+            // for (int i = 1; i < list.Count;i++ )
+            // {
+            //     JsonData dr = list[i];
+
+            //     db.MerchantChangeSettlementCardRecord.Add(new MerchantChangeSettlementCardRecord()
+            //     {
+            //         CreateDate = DateTime.Now,
+            //         UpdateDate = DateTime.Now,
+
+            //     });
+            //     db.SaveChanges();
+            // }
+            // db.Dispose();
+        }
+
+        /// <summary>
+        /// 导出excel表格
+        /// </summary>
+        /// <param name="fields">查询条件(单个字段)</param>
+        /// <param name="condition">查询条件(sql语句)</param>
+        /// <returns></returns>
+        // public static void ExportExcel(List<RelationData> relationData, string condition)
+        // {
+
+        // }
+    }
+}

+ 10 - 1
Startup.cs

@@ -133,6 +133,15 @@ namespace MySystem
             initMain2Server();//银联
             initBsServer();//bs
             initKxsMainServer();//客小爽主库
+
+            if (Library.ConfigurationManager.EnvironmentFlag == 1)
+            {
+                UpdateMerchantChangeCardStatusService.Instance.Start(); //更新商户修改结算卡状态
+            }
+            if (Library.ConfigurationManager.EnvironmentFlag == 2)
+            {
+                UpdateMerchantChangeCardStatusService.Instance.Start(); //更新商户修改结算卡状态
+            }
         }
 
         //初始化数据结构
@@ -141,7 +150,7 @@ namespace MySystem
             Dictionary<string, Dictionary<string, string>> tables = new Dictionary<string, Dictionary<string, string>>();
             string connstr = Configuration["Setting:KxsSqlConnStr"];
             string dbName = "KxsMainServer";
-            if(Library.ConfigurationManager.EnvironmentFlag == 2)
+            if (Library.ConfigurationManager.EnvironmentFlag == 2)
             {
                 dbName = "KxsProfitServer";
             }

+ 14 - 0
Util/Base/BaseClass.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using MySystem.Models.Bs;
 using System.Data;
+using AppConfig;
 namespace MySystem
 {
     /// <summary>
@@ -108,5 +109,18 @@ namespace MySystem
             return result;
         }
         #endregion
+
+
+        #region 获取当前系统操作人信息
+        /// <summary>
+        /// 获取当前系统操作人信息
+        /// </summary>
+        /// <returns></returns>
+        public static string GetOperatorInfo()
+        {
+            var Operator = LoginSession.sysAdminName + "-" + LoginSession.sysRealName;
+            return Operator;
+        }
+        #endregion
     }
 }

+ 202 - 0
Util/HaoDa/ChangeMerchantCardSetUtil.cs

@@ -0,0 +1,202 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Aop.Api.Util;
+using GraphQL;
+using Library;
+using LitJson;
+using MySystem;
+using MySystem.Models.Main2;
+using MySystem.Service.Main2;
+
+namespace MySystem
+{
+    /// <summary>
+    /// 好哒商户修改银行卡参数赋值
+    /// </summary>
+    public class ChangeMerchantCardSetUtil
+    {
+        public static ChangeMerchantCard SetValue(MerchantChangeSettlementCardRecord MerchantChangeSettlementCardRecord, int MerchantId)
+        {
+            var merchantAddInfo = MerchantAddInfoService.Query(MerchantId);
+
+            ChangeMerchantCard changeMerchantCard = new ChangeMerchantCard();
+            changeMerchantCard.mchtNo = MerchantChangeSettlementCardRecord.MchtNo; //收款商户号
+            changeMerchantCard.accountNo = MerchantChangeSettlementCardRecord.AccountNo; //卡号(账户类型 0-对公 时填写对公账号,1-对私 时填写银行卡号)
+            changeMerchantCard.accountName = MerchantChangeSettlementCardRecord.AccountName; //开户名(账户名称 账户类型 0-对公 时填写对公账户名,1-对私 时填写银行卡户名)
+            changeMerchantCard.zbankNo = MerchantChangeSettlementCardRecord.ZbankNo; //开户支行号
+            changeMerchantCard.alterType = MerchantChangeSettlementCardRecord.AlterType.ToString(); //结算类型:0-对公结算银行卡;1-法人对私结算银行卡;2-非法人结算
+            changeMerchantCard.accoutType = MerchantChangeSettlementCardRecord.AccountType.ToString(); //账户类型 0-对公,1-对私
+            changeMerchantCard.acctZbankCode = MerchantChangeSettlementCardRecord.AcctZbankCode; //开户支行地区码
+
+            if (changeMerchantCard.alterType == "2")
+            {
+                changeMerchantCard.idCard = MerchantChangeSettlementCardRecord.IdCard; //非法人身份证号(结算类型为2时必填)
+                var mer = MerchantAddInfoService.Query(" and MchtNo='" + MerchantChangeSettlementCardRecord.MchtNo + "'");
+                string AgentCardEndDate = MerchantChangeSettlementCardRecord.AgentCardEndDate.Value.ToString("yyyy-MM-dd");
+                if (AgentCardEndDate.Substring(0, 4) == "9999")
+                {
+                    changeMerchantCard.agentCardDate = MerchantChangeSettlementCardRecord.AgentCardStartDate.Value.ToString("yyyyMMdd") + "-" + "长期"; //非法人身份证有效期(结算类型为2时必填,格式:20210101-20220101,如长期:20210101-长期)
+                }
+                else
+                {
+                    changeMerchantCard.agentCardDate = MerchantChangeSettlementCardRecord.AgentCardStartDate.Value.ToString("yyyyMMdd") + "-" + MerchantChangeSettlementCardRecord.AgentCardEndDate.Value.ToString("yyyyMMdd"); //非法人身份证有效期(结算类型为2时必填,格式:20210101-20220101,如长期:20210101-长期)
+                }
+            }
+
+            //对公改对公需要提交的参数
+            if (merchantAddInfo.AccountType == "0" && changeMerchantCard.alterType == "0")
+            {
+                var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + MerchantChangeSettlementCardRecord.ZbankNo + "'");
+                var areasInfo = HaoDaAreaCodeService.Query(" and CityCode='" + MerchantChangeSettlementCardRecord.AcctZbankCode + "'");
+
+                changeMerchantCard.openBankAccName = MerchantChangeSettlementCardRecord.AccountName; //开户许可证-开户名(修改对公凭证时填写)
+                changeMerchantCard.openBankName = bankInfo.BankParent; //开户许可证-银行名称(修改对公凭证时填写)
+                changeMerchantCard.openCollectBankCode = MerchantChangeSettlementCardRecord.ZbankNo; //开户许可证-银行代码(修改对公凭证时填写)
+                changeMerchantCard.openBankRegionCode = MerchantChangeSettlementCardRecord.AcctZbankCode; //开户许可证-银行地区码(修改对公凭证时填写)
+                changeMerchantCard.openBankRegionName = areasInfo.CityName; //开户许可证-开户地名称(修改对公凭证时填写)
+                changeMerchantCard.openUnionNo = MerchantChangeSettlementCardRecord.ZbankNo; //开户许可证-开户支行(修改对公凭证时填写)
+                changeMerchantCard.openUnionName = bankInfo.BankChild; //开户许可证-支行名称(修改对公凭证时填写)
+                changeMerchantCard.openBankAccout = MerchantChangeSettlementCardRecord.AccountNo; //开户许可证-银行卡号(修改对公凭证时填写)
+            }
+
+            List<PhotoItem> photoList = new List<PhotoItem>();
+            PhotoItem photoItem = new PhotoItem();
+            // alterType结算类型为0时,上传 开户许可证照片
+            // alterType结算类型为1时,上传 银行卡照片
+            // alterType结算类型为2时,上传 银行卡照片、非法人身份证正面照片、非法人身份证反面照片、委托结算授权书照片、法人手持委托结算授权书
+            if (changeMerchantCard.alterType == "0")
+            {
+                var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.OpenAccountLicenses.Substring(MerchantChangeSettlementCardRecord.OpenAccountLicenses.LastIndexOf("/")).Trim('/'), "0"));
+                if (tokenInfo["code"].ToString() == "1")
+                {
+                    var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.OpenAccountLicenses);
+                    if (returnInfo != "false")
+                    {
+                        photoItem = new PhotoItem();
+                        photoItem.mediaCode = "openAccountLicenses";
+                        photoItem.mediaPath = returnInfo;
+                        photoList.Add(photoItem);
+                    }
+                }
+            }
+            if (changeMerchantCard.alterType == "1")
+            {
+                //结算类型为1和2时必填,0不填
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.BankCard))
+                {
+                    var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.BankCard.Substring(MerchantChangeSettlementCardRecord.BankCard.LastIndexOf("/")).Trim('/'), "0"));
+                    if (tokenInfo["code"].ToString() == "1")
+                    {
+                        var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.BankCard);
+                        if (returnInfo != "false")
+                        {
+                            photoItem = new PhotoItem();
+                            photoItem.mediaCode = "bankCard";
+                            photoItem.mediaPath = returnInfo;
+                            photoList.Add(photoItem);
+                        }
+                    }
+                }
+
+                //结算类型为1且为企业商户时必填
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.PriLicAgreement) && merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE")
+                {
+                    var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.PriLicAgreement.Substring(MerchantChangeSettlementCardRecord.PriLicAgreement.LastIndexOf("/")).Trim('/'), "0"));
+                    if (tokenInfo["code"].ToString() == "1")
+                    {
+                        var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.PriLicAgreement);
+                        if (returnInfo != "false")
+                        {
+                            photoItem = new PhotoItem();
+                            photoItem.mediaCode = "priLicAgreement";
+                            photoItem.mediaPath = returnInfo;
+                            photoList.Add(photoItem);
+                        }
+                    }
+                }
+            }
+            if (changeMerchantCard.alterType == "2")
+            {
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.BankCard))
+                {
+                    var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.BankCard.Substring(MerchantChangeSettlementCardRecord.BankCard.LastIndexOf("/")).Trim('/'), "0"));
+                    if (tokenInfo["code"].ToString() == "1")
+                    {
+                        var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.BankCard);
+                        if (returnInfo != "false")
+                        {
+                            photoItem = new PhotoItem();
+                            photoItem.mediaCode = "bankCard";
+                            photoItem.mediaPath = returnInfo;
+                            photoList.Add(photoItem);
+                        }
+                    }
+                }
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.AgentIdCardFront))
+                {
+                    var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.AgentIdCardFront.Substring(MerchantChangeSettlementCardRecord.AgentIdCardFront.LastIndexOf("/")).Trim('/'), "0"));
+                    if (tokenInfo["code"].ToString() == "1")
+                    {
+                        var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.AgentIdCardFront);
+                        if (returnInfo != "false")
+                        {
+                            photoItem = new PhotoItem();
+                            photoItem.mediaCode = "agentIdCardFront";
+                            photoItem.mediaPath = returnInfo;
+                            photoList.Add(photoItem);
+                        }
+                    }
+                }
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.AgentIdCardBack))
+                {
+                    var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.AgentIdCardBack.Substring(MerchantChangeSettlementCardRecord.AgentIdCardBack.LastIndexOf("/")).Trim('/'), "0"));
+                    if (tokenInfo["code"].ToString() == "1")
+                    {
+                        var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.AgentIdCardBack);
+                        if (returnInfo != "false")
+                        {
+                            photoItem = new PhotoItem();
+                            photoItem.mediaCode = "agentIdCardBack";
+                            photoItem.mediaPath = returnInfo;
+                            photoList.Add(photoItem);
+                        }
+                    }
+                }
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.AgentProtocol))
+                {
+                    var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.AgentProtocol.Substring(MerchantChangeSettlementCardRecord.AgentProtocol.LastIndexOf("/")).Trim('/'), "0"));
+                    if (tokenInfo["code"].ToString() == "1")
+                    {
+                        var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.AgentProtocol);
+                        if (returnInfo != "false")
+                        {
+                            photoItem = new PhotoItem();
+                            photoItem.mediaCode = "agentProtocol";
+                            photoItem.mediaPath = returnInfo;
+                            photoList.Add(photoItem);
+                        }
+                    }
+                }
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.HoldAgentProtocol))
+                {
+                    var tokenInfo = JsonMapper.ToObject(HaoDaHelper.Instance.GetToken(MerchantChangeSettlementCardRecord.HoldAgentProtocol.Substring(MerchantChangeSettlementCardRecord.HoldAgentProtocol.LastIndexOf("/")).Trim('/'), "0"));
+                    if (tokenInfo["code"].ToString() == "1")
+                    {
+                        var returnInfo = HaoDaHelper.Instance.ReturnFileName(tokenInfo["token"].ToString(), MerchantChangeSettlementCardRecord.HoldAgentProtocol);
+                        if (returnInfo != "false")
+                        {
+                            photoItem = new PhotoItem();
+                            photoItem.mediaCode = "holdAgentProtocol";
+                            photoItem.mediaPath = returnInfo;
+                            photoList.Add(photoItem);
+                        }
+                    }
+                }
+            }
+            changeMerchantCard.photoList = photoList; //图片列表
+            return changeMerchantCard;
+        }
+    }
+}

+ 132 - 2
Util/HaoDa/HaoDaHelper.cs

@@ -7,6 +7,7 @@ using System.Security.Cryptography;
 using System.Text;
 using Aop.Api.Util;
 using Library;
+using LitJson;
 
 namespace MySystem
 {
@@ -62,6 +63,33 @@ namespace MySystem
             return result;
         }
 
+        /// <summary>
+        /// 获取文件令牌接口
+        /// </summary>
+        /// <param name="fileName">文件名</param>
+        /// <param name="action">操作类型 0 上传图片</param>
+        /// <returns></returns>
+        public string GetToken(string fileName, string action)
+        {
+            LogHelper.Instance.WriteLog(DateTime.Now.ToString(), "好哒获取文件令牌接口");
+            Dictionary<string, object> reqdic = new Dictionary<string, object>();
+
+            reqdic.Add("fileName", fileName); // 文件名	
+            reqdic.Add("action", action); // 操作类型 0 上传图片
+
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
+            LogHelper.Instance.WriteLog(req, "好哒获取文件令牌接口");
+            Dictionary<string, string> headdic = GetHeader(req);
+            string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
+            LogHelper.Instance.WriteLog("请求头\n" + head, "好哒获取文件令牌接口");
+            LogHelper.Instance.WriteLog("请求参数\n" + req, "好哒获取文件令牌接口");
+            LogHelper.Instance.WriteLog("请求地址:" + BoxRequestUrl + "/api/auth/v1/get_file_token", "好哒获取文件令牌接口");
+            string result = PostWebRequest(BoxRequestUrl + "/api/auth/v1/get_file_token", req, headdic);
+            LogHelper.Instance.WriteLog("返回\n" + result + "\n\n", "好哒获取文件令牌接口");
+
+            return result;
+        }
+
         #region 上传图片接口
         /// <summary>
         /// 执行带文件上传的HTTP POST请求。
@@ -176,6 +204,38 @@ namespace MySystem
         }
         #endregion
 
+
+        /// <summary>
+        /// 获取好哒开放平台文件名
+        /// </summary>
+        /// <param name="token">上传图片凭证token</param>
+        /// <param name="value">图片路径</param>
+        /// <returns></returns>
+        public string ReturnFileName(string token, string value)
+        {
+            Dictionary<string, string> file = new Dictionary<string, string>();
+            file.Add("fileName", value.Substring(value.LastIndexOf("/")).Trim('/'));
+            if (string.IsNullOrEmpty(value.Split(',')[0]))
+            {
+                return "";
+            }
+            FileItem item = PublicFunction.GetNetFileItem(AppConfig.Base.OssHost + value.Split(',')[0]);
+            // FileItem item = new FileItem(function.getPath(value.Split(',')[0]));
+            Dictionary<string, FileItem> files = new Dictionary<string, FileItem>();
+            files.Add("file", item);
+            var upLoadInfo = JsonMapper.ToObject(HaoDaHelper.Instance.DoPost(BoxRequestUrl + "/api/file/v1/upload_file", token, file, files, "utf-8"));
+            if (upLoadInfo["code"].ToString() == "1")
+            {
+                return upLoadInfo["data"]["fileName"].ToString();
+            }
+            else
+            {
+                return "false";
+            }
+        }
+
+        #endregion
+
         public Dictionary<string, string> GetHeader(Dictionary<string, object> reqdic)
         {
             Dictionary<string, string> headdic = new Dictionary<string, string>();
@@ -291,6 +351,7 @@ namespace MySystem
         }
 
 
+        #region 微信公众号和小程序支付接口
         /// <summary>
         /// 微信公众号和小程序支付接口
         /// </summary>
@@ -333,7 +394,9 @@ namespace MySystem
 
             return result;
         }
+        #endregion
 
+        #region 支付宝服务窗支付接口
         /// <summary>
         /// 支付宝服务窗支付接口
         /// </summary>
@@ -372,7 +435,10 @@ namespace MySystem
 
             return result;
         }
+        #endregion
 
+
+        #region 好哒到账记录查询
         /// <summary>
         /// 好哒到账记录查询
         /// </summary>
@@ -410,7 +476,10 @@ namespace MySystem
 
             return result;
         }
+        #endregion
 
+
+        #region 好哒到账记录详情
         /// <summary>
         /// 好哒到账记录详情
         /// </summary>
@@ -436,8 +505,10 @@ namespace MySystem
 
             return result;
         }
+        #endregion
 
 
+        #region 分账接收方账户余额查询
         /// <summary>
         /// 分账接收方账户余额查询
         /// </summary>
@@ -462,7 +533,10 @@ namespace MySystem
 
             return result;
         }
+        #endregion
+
 
+        #region 分账接收方提现申请
         /// <summary>
         /// 分账接收方提现申请
         /// </summary>
@@ -491,7 +565,10 @@ namespace MySystem
 
             return result;
         }
+        #endregion
 
+
+        #region 分账接收方提现结果查询
         /// <summary>
         /// 分账接收方提现结果查询
         /// </summary>
@@ -518,6 +595,61 @@ namespace MySystem
 
             return result;
         }
+        #endregion
+
+
+        #region 好哒商户修改银行卡
+        /// <summary>
+        /// 好哒商户修改银行卡
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public string ChangeMerchantCard(ChangeMerchantCard request)
+        {
+            LogHelper.Instance.WriteLog(DateTime.Now.ToString(), "好哒商户修改银行卡");
+
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
+            LogHelper.Instance.WriteLog(req, "好哒商户修改银行卡");
+            Dictionary<string, string> headdic = GetHeader(req);
+            string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
+            LogHelper.Instance.WriteLog("请求头\n" + head, "好哒商户修改银行卡");
+            LogHelper.Instance.WriteLog("请求参数\n" + req, "好哒商户修改银行卡");
+            LogHelper.Instance.WriteLog("请求地址:" + BoxRequestUrl + "/api/inst/mcht/update_acct", "好哒商户修改银行卡");
+            string result = PostWebRequest(BoxRequestUrl + "/api/inst/mcht/update_acct", req, headdic);
+            LogHelper.Instance.WriteLog("返回\n" + result + "\n\n", "好哒商户修改银行卡");
+
+            return result;
+        }
+        #endregion
+
+
+        #region 好哒查询修改银行卡任务审核状态
+        /// <summary>
+        /// 好哒查询修改银行卡任务审核状态
+        /// </summary>
+        /// <param name="mchtNo">收款商户号</param>
+        /// <param name="taskId">任务id</param>
+        /// <returns></returns>
+        public string QueryChangeCardStatus(string mchtNo, string taskId)
+        {
+            LogHelper.Instance.WriteLog(DateTime.Now.ToString(), "好哒查询修改银行卡任务审核状态");
+            Dictionary<string, object> reqdic = new Dictionary<string, object>();
+            reqdic.Add("mchtNo", mchtNo);
+            reqdic.Add("taskId", taskId);
+
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
+            LogHelper.Instance.WriteLog(req, "好哒查询修改银行卡任务审核状态");
+            Dictionary<string, string> headdic = GetHeader(req);
+            string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
+            LogHelper.Instance.WriteLog("请求头\n" + head, "好哒查询修改银行卡任务审核状态");
+            LogHelper.Instance.WriteLog("请求参数\n" + req, "好哒查询修改银行卡任务审核状态");
+            LogHelper.Instance.WriteLog("请求地址:" + BoxRequestUrl + "/api/inst/mcht/query_acct_task", "好哒查询修改银行卡任务审核状态");
+            string result = PostWebRequest(BoxRequestUrl + "/api/inst/mcht/query_acct_task", req, headdic);
+            LogHelper.Instance.WriteLog("返回\n" + result + "\n\n", "好哒查询修改银行卡任务审核状态");
+
+            return result;
+        }
+        #endregion
 
 
         public Dictionary<string, string> GetHeader(string req)
@@ -533,8 +665,6 @@ namespace MySystem
             return headdic;
         }
 
-        #endregion
-
 
     }
 }

+ 30 - 0
Util/Main2/ChangeSettlementCardAuditRecordUtil.cs

@@ -0,0 +1,30 @@
+using Library;
+using MySystem.Service.Main2;
+using System.Collections.Generic;
+using MySystem.Service.KxsMain;
+namespace MySystem.Service.Main2
+{
+    /// <summary>
+    /// 商户修改结算卡审核表工具类
+    /// </summary>
+    public class ChangeSettlementCardAuditRecordUtil
+    {
+        #region 添加或修改商户修改结算卡审核表
+        /// <summary>
+        /// 添加或修改商户修改结算卡审核表
+        /// </summary>
+        /// <param name="Id">记录Id</param>
+        /// <param name="TaskId">任务Id</param>
+        /// <param name="MerchantId">商户Id</param>
+        /// <param name="MchtNo">商户编号</param>
+        /// <param name="AuditStatus">审核状态(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)</param>
+        /// <param name="Remark">备注</param>
+        /// <returns></returns>
+        public static string AddOrEditChangeSettlementCardAuditRecord(int Id, int TaskId, int MerchantId, string MchtNo, int AuditStatus, string Remark)
+        {
+
+            return "success";
+        }
+        #endregion
+    }
+}

+ 189 - 0
Util/Main2/MerchantChangeSettlementCardRecordUtil.cs

@@ -0,0 +1,189 @@
+using Library;
+using MySystem.Models.Main2;
+using MySystem.Service.Main2;
+using System.Collections.Generic;
+using MySystem.Service.KxsMain;
+using System;
+using System.Linq;
+using LitJson;
+namespace MySystem.Service.Main2
+{
+    /// <summary>
+    /// 银联商户修改结算卡记录表工具类
+    /// </summary>
+    public class MerchantChangeSettlementCardRecordUtil
+    {
+
+        #region 添加或修改银联商户修改结算卡记录
+        /// <summary>
+        /// 添加或修改银联商户修改结算卡记录
+        /// </summary>
+        /// <param name="MerchantId">商户Id</param>
+        /// <param name="MerchantName">商户名称</param>
+        /// <param name="Operator">操作人</param>
+        /// <param name="AlterType">结算类型(0 对公结算银行卡 法人1 对私结算银行卡 2 非法人结算)</param>
+        /// <param name="AcctZBankAreas">开户支行地区</param>
+        /// <param name="AcctZBankName">开户支行名称</param>
+        /// <param name="MchtNo">商户号</param>
+        /// <param name="AcctName">开户名称</param>
+        /// <param name="AccountNo">卡号</param>
+        /// <param name="IdCard">非法人身份证号(结算类型为2时必填,默认传空字符串)</param>
+        /// <param name="AgentCardStartDate">非法人身份证有效开始时间(yyyy-MM-dd,结算类型为2时必填,默认传空字符串)</param>
+        /// <param name="AgentCardEndDate">非法人身份证有效结束时间(yyyy-MM-dd,结算类型为2时必填,默认传空字符串)</param>
+        /// <param name="BankCard">银行卡正面照片(结算类型为1和2时必填,默认传空字符串)</param>
+        /// <param name="OpenAccountLicenses">开户许可证(企业类型商户或结算类型为0时必填,默认传空字符串)</param>
+        /// <param name="PriLicAgreement">企业法人对私授权书(结算类型为1且为企业商户时必填,默认传空字符串)</param>
+        /// <param name="AgentProtocol">委托结算授权书(结算类型为2时必填,默认传空字符串)</param>
+        /// <param name="AgentIdCardFront">被委托人身份证人像面(结算类型为2时必填,默认传空字符串)</param>
+        /// <param name="AgentIdCardBack">被委托人身份证国徽面(结算类型为2时必填,默认传空字符串)</param>
+        /// <param name="HoldAgentProtocol">法人手持委托结算授权书(结算类型为2时必填,默认传空字符串)</param>
+        public static string AddOrEditMerchantChangeSettlementCardRecord(int MerchantId, string MerchantName, string Operator, string AlterType, string AcctZBankAreas, string AcctZBankName, string MchtNo, string AcctName, string AccountNo, string IdCard, string AgentCardStartDate, string AgentCardEndDate, string BankCard, string OpenAccountLicenses, string PriLicAgreement, string AgentProtocol, string AgentIdCardFront, string AgentIdCardBack, string HoldAgentProtocol)
+        {
+            WebCMSEntities maindb = new WebCMSEntities();
+            MerchantChangeSettlementCardRecord merchantChangeSettlementCardRecord = new MerchantChangeSettlementCardRecord();
+            var AcctZbankCode = HaoDaAreaCodeService.Query(" and CityName like '%" + AcctZBankAreas + "%'").CityCode;
+            if (string.IsNullOrEmpty(AcctZbankCode))
+            {
+                return "未找到所选开户地区";
+            }
+            var AcctZbankkNo = OpenBankAllService.Query(" and BankChild='" + AcctZBankName + "'").BankChildNo;
+            if (string.IsNullOrEmpty(AcctZbankkNo))
+            {
+                return "未找到所选开户支行";
+            }
+            var info = MerchantChangeSettlementCardRecordService.Query(MerchantId);
+            if (info.Id > 0) //修改
+            {
+                merchantChangeSettlementCardRecord = maindb.MerchantChangeSettlementCardRecord.FirstOrDefault(m => m.Id == MerchantId) ?? new MerchantChangeSettlementCardRecord();
+                merchantChangeSettlementCardRecord.UpdateDate = DateTime.Now;
+                merchantChangeSettlementCardRecord.Operator = Operator;
+                merchantChangeSettlementCardRecord.AlterType = int.Parse(AlterType);
+                merchantChangeSettlementCardRecord.AcctZbankCode = AcctZbankCode;
+                merchantChangeSettlementCardRecord.ZbankNo = AcctZbankkNo;
+                merchantChangeSettlementCardRecord.MchtNo = MchtNo;
+                merchantChangeSettlementCardRecord.MerchantId = MerchantId;
+                merchantChangeSettlementCardRecord.MerchantName = MerchantName;
+                merchantChangeSettlementCardRecord.AccountName = AcctName;
+                merchantChangeSettlementCardRecord.AccountNo = AccountNo;
+                merchantChangeSettlementCardRecord.IdCard = IdCard;
+                if (!string.IsNullOrEmpty(AgentCardStartDate) && !string.IsNullOrEmpty(AgentCardEndDate))
+                {
+                    merchantChangeSettlementCardRecord.AgentCardStartDate = DateTime.Parse(AgentCardStartDate);
+                    merchantChangeSettlementCardRecord.AgentCardEndDate = DateTime.Parse(AgentCardEndDate);
+                }
+                merchantChangeSettlementCardRecord.BankCard = BankCard;
+                merchantChangeSettlementCardRecord.OpenAccountLicenses = OpenAccountLicenses;
+                merchantChangeSettlementCardRecord.PriLicAgreement = PriLicAgreement;
+                merchantChangeSettlementCardRecord.AgentProtocol = AgentProtocol;
+                merchantChangeSettlementCardRecord.AgentIdCardFront = AgentIdCardFront;
+                merchantChangeSettlementCardRecord.AgentIdCardBack = AgentIdCardBack;
+                merchantChangeSettlementCardRecord.HoldAgentProtocol = HoldAgentProtocol;
+            }
+            else //添加
+            {
+                var AgentCardStartDate1 = "9999-01-01";
+                var AgentCardEndDate1 = "9999-01-01";
+                if (!string.IsNullOrEmpty(AgentCardStartDate) && !string.IsNullOrEmpty(AgentCardEndDate))
+                {
+                    AgentCardStartDate1 = AgentCardStartDate;
+                    AgentCardEndDate1 = AgentCardEndDate;
+                }
+                merchantChangeSettlementCardRecord = maindb.MerchantChangeSettlementCardRecord.Add(new MerchantChangeSettlementCardRecord()
+                {
+                    Id = MerchantId,
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+                    Operator = Operator,
+                    AlterType = int.Parse(AlterType),
+                    AcctZbankCode = AcctZbankCode,
+                    ZbankNo = AcctZbankkNo,
+                    MchtNo = MchtNo,
+                    MerchantId = MerchantId,
+                    MerchantName = MerchantName,
+                    AccountName = AcctName,
+                    AccountNo = AccountNo,
+                    IdCard = IdCard,
+                    AgentCardStartDate = DateTime.Parse(AgentCardStartDate1),
+                    AgentCardEndDate = DateTime.Parse(AgentCardEndDate1),
+                    BankCard = BankCard,
+                    OpenAccountLicenses = OpenAccountLicenses,
+                    PriLicAgreement = PriLicAgreement,
+                    AgentProtocol = AgentProtocol,
+                    AgentIdCardFront = AgentIdCardFront,
+                    AgentIdCardBack = AgentIdCardBack,
+                    HoldAgentProtocol = HoldAgentProtocol,
+                }).Entity;
+            }
+            maindb.SaveChanges();
+
+            //实体赋值
+            var request = ChangeMerchantCardSetUtil.SetValue(merchantChangeSettlementCardRecord, MerchantId);
+            //好哒商户修改银行卡新
+            JsonData Infos = JsonMapper.ToObject(HaoDaHelper.Instance.ChangeMerchantCard(request));
+            if (Infos["resultCode"].ToString() == "1")
+            {
+                merchantChangeSettlementCardRecord.TaskId = int.Parse(Infos["data"]["taskId"].ToString());
+                merchantChangeSettlementCardRecord.Status = 1;
+                maindb.SaveChanges();
+
+                //好哒查询修改银行卡任务审核状态
+                JsonData results = JsonMapper.ToObject(HaoDaHelper.Instance.QueryChangeCardStatus(merchantChangeSettlementCardRecord.MchtNo, Infos["data"]["taskId"].ToString()));
+                if (results["resultCode"].ToString() == "1")
+                {
+                    var Status = int.Parse(results["data"]["status"].ToString());
+                    var Remark = results["data"]["desc"].ToString();
+                    //Status(1 待审核 3 审核拒绝 4 任务失效 5 审核通过)
+                    merchantChangeSettlementCardRecord.Status = Status;
+                    merchantChangeSettlementCardRecord.Remark = Remark;
+                    
+                    //审核成功修改商户结算信息
+                    if (Status == 5)
+                    {
+                        var merchantAddInfo = maindb.MerchantAddInfo.FirstOrDefault(m => m.Id == MerchantId) ?? new MerchantAddInfo();
+                        merchantAddInfo.AccountNumber = merchantChangeSettlementCardRecord.AccountNo;
+                        merchantAddInfo.AccountName = merchantChangeSettlementCardRecord.AccountName;
+                        var bankInfo = OpenBankAllService.Query(" and BankChildNo='" + merchantChangeSettlementCardRecord.ZbankNo + "'");
+                        merchantAddInfo.BankName = bankInfo.BankChild;
+                        var AreaInfo = HaoDaAreaCodeService.Query(" and CityCode='" + merchantChangeSettlementCardRecord.AcctZbankCode + "'");
+                        merchantAddInfo.BankAddressCode = AreaInfo.CityName;
+                        merchantAddInfo.AccountType = merchantChangeSettlementCardRecord.AccountType.ToString();
+
+                        //开户许可证
+                        if (merchantChangeSettlementCardRecord.AccountType == 0 && !string.IsNullOrEmpty(merchantChangeSettlementCardRecord.OpenAccountLicenses))
+                        {
+                            merchantAddInfo.OpenAccountLicenses = merchantChangeSettlementCardRecord.OpenAccountLicenses;
+                        }
+                        if (merchantChangeSettlementCardRecord.AccountType == 1)
+                        {
+                            //银行卡正面
+                            if (!string.IsNullOrEmpty(merchantChangeSettlementCardRecord.BankCard))
+                            {
+                                merchantAddInfo.BankCard = merchantChangeSettlementCardRecord.BankCard;
+                            }
+
+                            //企业法人对私授权书
+                            if (merchantAddInfo.SubjectType == "SUBJECT_TYPE_ENTERPRISE" && !string.IsNullOrEmpty(merchantChangeSettlementCardRecord.PriLicAgreement))
+                            {
+                                merchantAddInfo.Support = merchantChangeSettlementCardRecord.PriLicAgreement;
+                            }
+                        }
+                        merchantAddInfo.OpenUnionNo = merchantChangeSettlementCardRecord.ZbankNo;
+                    }
+                    maindb.SaveChanges();
+                }
+            }
+
+            maindb.Dispose();
+            return "success";
+        }
+        #endregion
+
+
+        #region 提交好哒商户修改结算卡申请
+        public static string SendHdChangeMerchantCard(MerchantChangeSettlementCardRecord merchantChangeSettlementCardRecord)
+        {
+            return "success";
+        }
+        #endregion
+    }
+}

+ 73 - 0
Util/PublicFunction.cs

@@ -10,6 +10,7 @@ using Microsoft.IdentityModel.Tokens;
 using System.Security.Claims;
 using System.IdentityModel.Tokens.Jwt;
 using System.Text;
+using Aop.Api.Util;
 
 namespace MySystem
 {
@@ -213,5 +214,77 @@ namespace MySystem
             return new JwtSecurityTokenHandler().WriteToken(securityToken);
         }
         #endregion
+    
+    
+        public static decimal NumberFormat(decimal number, int floatCount = 2)
+        {
+            string str = number.ToString();
+            if (str.Contains("."))
+            {
+                string[] list = str.Split('.');
+                if (list[1].Length > floatCount)
+                {
+                    str = list[0] + "." + list[1].Substring(0, floatCount);
+                }
+            }
+            else
+            {
+                str += ".00";
+            }
+            return decimal.Parse(str);
+        }
+    
+
+
+
+
+        #region 获取网络文件内容
+
+        public static string GetNetFileContent(string url)
+        {
+            string textContent = "";     
+            using (var client = new System.Net.WebClient())
+            {
+                try
+                {
+                    textContent = client.DownloadString(url); // 通过 DownloadString 方法获取网页内容
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "获取网络文件内容异常");
+                }
+            }
+            return textContent;
+        }
+
+        public static byte[] GetNetFileData(string url)
+        {
+            byte[] textContent = new byte[] { };
+            using (var client = new System.Net.WebClient())
+            {
+                try
+                {
+                    textContent = client.DownloadData(url); // 通过 DownloadString 方法获取网页内容
+                }
+                catch (Exception ex)
+                {
+                    function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString() + "\n\n", "获取网络文件流异常");
+                }
+            }
+            return textContent;
+        }
+
+        public static FileItem GetNetFileItem(string url)
+        {
+            string fileName = url;
+            if(fileName.Contains("/"))
+            {
+                fileName = fileName.Substring(fileName.LastIndexOf("/") + 1);
+            }
+            FileItem item = new FileItem(fileName, GetNetFileData(url));
+            return item;
+        }
+
+        #endregion
     }
 }

+ 5 - 5
appsettings.Development.json

@@ -9,7 +9,7 @@
   "AllowedHosts": "*",
   "Setting": {
     "Host": "http://localhost:5701/",
-    "OssHost": "http://mpap.kexiaoshuang.com",
+    "OssHost": "https://laikeba.oss-cn-chengdu.aliyuncs.com",
     "SourceHost": "http://mpap.kexiaoshuang.com",
     "Database": "MpAdminServer",
     "KxsSqlConnStr": "server=47.108.62.166;port=3306;user=root;password=HDlNs1ZpG5iR9D9I;database=KxsMainServer;charset=utf8;",
@@ -20,10 +20,10 @@
     "RedisConnStr": "47.109.31.237:6379,password=klm@redis,DefaultDatabase=5,poolsize=500,preheat=50,asyncPipeline=true",
     "IOSAppVersion": "1.0.0",
     "AndroidAppVersion": "1.0.0",
-    "OSSKey": "",
-    "OSSSecret": "",
-    "OSSEndpoint": "",
-    "OSSBucketName": "",
+    "OSSKey": "LTAI5tJsPaNzqCSMCPwb8zfz",
+    "OSSSecret": "efM31Up75fQcgZ32U6xvAciagceQae",
+    "OSSEndpoint": "oss-cn-chengdu.aliyuncs.com",
+    "OSSBucketName": "laikeba",
     "AppSource": "/skin/app/default/",
     "JwtSecret": "JvDHuowbOnWiyxMIFc9gG5rw1LSSc0xx68L31oRfxS0",
     "JwtIss": "MpAdminServer",