DuGuYang пре 1 година
родитељ
комит
e0ee51ffce

+ 125 - 0
AppStart/Helper/UpdateMerchantChangeCardStatusService.cs

@@ -0,0 +1,125 @@
+using System;
+using System.Threading;
+using System.Linq;
+using System.Data;
+using Library;
+using MySystem.Models;
+using System.Collections.Generic;
+using LitJson;
+using Newtonsoft.Json;
+using MySystem.Models.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();
+        }
+
+        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;
+                                }
+                            }
+                            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;
+                            }
+                        }
+                        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解密
 

+ 46 - 10
Areas/Api/Controllers/v1/Main2/MerchantChangeSettlementCardRecordController.cs

@@ -27,12 +27,13 @@ namespace MySystem.Areas.Api.Controllers.v1.Main2
         [Authorize]
         public JsonResult UnionPayChangeSettlementCardList(string value)
         {
-            value = PublicFunction.DesDecrypt(value); ;
+            value = PublicFunction.DesDecrypt(value);
             JsonData data = JsonMapper.ToObject(value);
-            List<Dictionary<string, object>> dataList = UnionPayChangeSettlementCardListDo(value);
-            return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
+            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)
+        private List<Dictionary<string, object>> UnionPayChangeSettlementCardListDo(string value, out Dictionary<string, object> Other)
         {
             JsonData data = JsonMapper.ToObject(value);
             string MerchantName = data["MerchantName"].ToString(); //商户名称
@@ -40,14 +41,35 @@ namespace MySystem.Areas.Api.Controllers.v1.Main2
             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 = "";
+            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>>();
-            List<Dictionary<string, object>> source = MerchantChangeSettlementCardRecordService.List(relationData, condition, pageNum, pageSize);
+            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", subdata["Id"].ToString()); //Id
+                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()); //开户名
@@ -69,6 +91,9 @@ namespace MySystem.Areas.Api.Controllers.v1.Main2
 
                 dataList.Add(curData);
             }
+            Other.Add("Count", count); //总数
+            //批量提交待审核数据
+            RedisDbconn.Instance.AddList("UpdateMerchantChangeCardStatus", "1");
             return dataList;
         }
         #endregion
@@ -86,10 +111,12 @@ namespace MySystem.Areas.Api.Controllers.v1.Main2
         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 MchtNo = data["MchtNo"].ToString(); //商户号
             string AcctName = data["AcctName"].ToString(); //开户名称
             string AccountNo = data["AccountNo"].ToString(); //卡号
             string IdCard = data["IdCard"].ToString(); //非法人身份证号(结算类型为2时必填,默认传空字符串)
@@ -103,9 +130,18 @@ namespace MySystem.Areas.Api.Controllers.v1.Main2
             string AgentIdCardBack = data["AgentIdCardBack"].ToString(); //被委托人身份证国徽面(结算类型为2时必填,默认传空字符串)
             string HoldAgentProtocol = data["HoldAgentProtocol"].ToString(); //法人手持委托结算授权书(结算类型为2时必填,默认传空字符串)
 
-            var info = MerchantChangeSettlementCardRecordUtil.AddOrEditMerchantChangeSettlementCardRecord(1, Operator, AlterType, AcctZBankAreas, AcctZBankName, MchtNo, AcctName, AccountNo, IdCard, AgentCardStartDate, AgentCardEndDate, BankCard, OpenAccountLicenses, PriLicAgreement, AgentProtocol, AgentIdCardFront, AgentIdCardBack, HoldAgentProtocol);
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
 
-            return new AppResultJson() { Status = "1", Info = "", Data = Obj };
+            //添加或修改银联商户修改结算卡记录
+            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
 

+ 32 - 0
Entity/HaoDa/ChangeMerchantCardNew.cs

@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem
+{
+    /// <summary>
+    /// 商户修改银行卡新
+    /// </summary>
+    public class ChangeMerchantCardNew
+    {
+        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 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 List<PhotoItemNew> photoList { get; set; }//图片列表
+
+    }
+
+    /// <summary>
+    /// 图片类
+    /// </summary>
+    public class PhotoItemNew
+    {
+        public string mediaCode { get; set; }//图片名
+        public string mediaPath { get; set; }//图片token
+    }
+
+}

+ 4 - 0
Models/Main2/MerchantChangeSettlementCardRecord.cs

@@ -29,5 +29,9 @@ namespace MySystem.Models.Main2
         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; }
     }
 }

+ 20 - 0
Models/Main2/WebCMSEntities.cs

@@ -6424,6 +6424,10 @@ namespace MySystem.Models.Main2
                     .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)")
@@ -6489,6 +6493,16 @@ namespace MySystem.Models.Main2
                     .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("开户许可证")
@@ -6507,6 +6521,12 @@ namespace MySystem.Models.Main2
                     .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("排序序号");

+ 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
     }
 }

+ 179 - 0
Util/HaoDa/ChangeMerchantCardSetUtil.cs

@@ -0,0 +1,179 @@
+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 ChangeMerchantCardNewSetUtil
+    {
+        public static ChangeMerchantCardNew SetValue(MerchantChangeSettlementCardRecord MerchantChangeSettlementCardRecord)
+        {
+            ChangeMerchantCardNew changeMerchantCardNew = new ChangeMerchantCardNew();
+            changeMerchantCardNew.mchtNo = MerchantChangeSettlementCardRecord.MchtNo; //收款商户号
+            changeMerchantCardNew.accountNo = MerchantChangeSettlementCardRecord.AccountNo; //卡号(账户类型 0-对公 时填写对公账号,1-对私 时填写银行卡号)
+            changeMerchantCardNew.accountName = MerchantChangeSettlementCardRecord.AccountName; //开户名(账户名称 账户类型 0-对公 时填写对公账户名,1-对私 时填写银行卡户名)
+            changeMerchantCardNew.zbankNo = MerchantChangeSettlementCardRecord.ZbankNo; //开户支行号
+            changeMerchantCardNew.alterType = MerchantChangeSettlementCardRecord.AlterType.ToString(); //结算类型:0-对公结算银行卡;1-法人对私结算银行卡;2-非法人结算
+            changeMerchantCardNew.acctZbankCode = MerchantChangeSettlementCardRecord.AcctZbankCode; //开户支行地区码
+
+            if (changeMerchantCardNew.alterType == "2")
+            {
+                changeMerchantCardNew.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")
+                {
+                    changeMerchantCardNew.agentCardDate = MerchantChangeSettlementCardRecord.AgentCardStartDate.Value.ToString("yyyyMMdd") + "-" + "长期"; //非法人身份证有效期(结算类型为2时必填,格式:20210101-20220101,如长期:20210101-长期)
+                }
+                else
+                {
+                    changeMerchantCardNew.agentCardDate = MerchantChangeSettlementCardRecord.AgentCardStartDate.Value.ToString("yyyyMMdd") + "-" + MerchantChangeSettlementCardRecord.AgentCardEndDate.Value.ToString("yyyyMMdd"); //非法人身份证有效期(结算类型为2时必填,格式:20210101-20220101,如长期:20210101-长期)
+                }
+            }
+            List<PhotoItemNew> photoList = new List<PhotoItemNew>();
+            PhotoItemNew photoItemNew = new PhotoItemNew();
+            // alterType结算类型为0时,上传 开户许可证照片
+            // alterType结算类型为1时,上传 银行卡照片
+            // alterType结算类型为2时,上传 银行卡照片、非法人身份证正面照片、非法人身份证反面照片、委托结算授权书照片、法人手持委托结算授权书
+            if (changeMerchantCardNew.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")
+                    {
+                        photoItemNew = new PhotoItemNew();
+                        photoItemNew.mediaCode = "openAccountLicenses";
+                        photoItemNew.mediaPath = returnInfo;
+                        photoList.Add(photoItemNew);
+                    }
+                }
+            }
+            if (changeMerchantCardNew.alterType == "1")
+            {
+                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")
+                        {
+                            photoItemNew = new PhotoItemNew();
+                            photoItemNew.mediaCode = "bankCard";
+                            photoItemNew.mediaPath = returnInfo;
+                            photoList.Add(photoItemNew);
+                        }
+                    }
+                }
+                if (!string.IsNullOrEmpty(MerchantChangeSettlementCardRecord.PriLicAgreement))
+                {
+                    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")
+                        {
+                            photoItemNew = new PhotoItemNew();
+                            photoItemNew.mediaCode = "priLicAgreement";
+                            photoItemNew.mediaPath = returnInfo;
+                            photoList.Add(photoItemNew);
+                        }
+                    }
+                }
+            }
+            if (changeMerchantCardNew.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")
+                        {
+                            photoItemNew = new PhotoItemNew();
+                            photoItemNew.mediaCode = "bankCard";
+                            photoItemNew.mediaPath = returnInfo;
+                            photoList.Add(photoItemNew);
+                        }
+                    }
+                }
+                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")
+                        {
+                            photoItemNew = new PhotoItemNew();
+                            photoItemNew.mediaCode = "agentIdCardFront";
+                            photoItemNew.mediaPath = returnInfo;
+                            photoList.Add(photoItemNew);
+                        }
+                    }
+                }
+                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")
+                        {
+                            photoItemNew = new PhotoItemNew();
+                            photoItemNew.mediaCode = "agentIdCardBack";
+                            photoItemNew.mediaPath = returnInfo;
+                            photoList.Add(photoItemNew);
+                        }
+                    }
+                }
+                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")
+                        {
+                            photoItemNew = new PhotoItemNew();
+                            photoItemNew.mediaCode = "agentProtocol";
+                            photoItemNew.mediaPath = returnInfo;
+                            photoList.Add(photoItemNew);
+                        }
+                    }
+                }
+                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")
+                        {
+                            photoItemNew = new PhotoItemNew();
+                            photoItemNew.mediaCode = "holdAgentProtocol";
+                            photoItemNew.mediaPath = returnInfo;
+                            photoList.Add(photoItemNew);
+                        }
+                    }
+                }
+            }
+            changeMerchantCardNew.photoList = photoList; //图片列表
+            return changeMerchantCardNew;
+        }
+    }
+}

+ 83 - 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,37 @@ 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 = 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>();
@@ -562,6 +621,30 @@ namespace MySystem
         }
         #endregion
 
+        #region 好哒商户修改银行卡新
+        /// <summary>
+        /// 好哒商户修改银行卡新
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public string ChangeMerchantCardNew(ChangeMerchantCardNew 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>
@@ -605,8 +688,6 @@ namespace MySystem
             return headdic;
         }
 
-        #endregion
-
 
     }
 }

+ 16 - 0
Util/Main2/ChangeSettlementCardAuditRecordUtil.cs

@@ -9,6 +9,22 @@ namespace MySystem.Service.Main2
     /// </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
     }
 }

+ 69 - 25
Util/Main2/MerchantChangeSettlementCardRecordUtil.cs

@@ -5,6 +5,7 @@ using System.Collections.Generic;
 using MySystem.Service.KxsMain;
 using System;
 using System.Linq;
+using LitJson;
 namespace MySystem.Service.Main2
 {
     /// <summary>
@@ -17,7 +18,8 @@ namespace MySystem.Service.Main2
         /// <summary>
         /// 添加或修改银联商户修改结算卡记录
         /// </summary>
-        /// <param name="Id">记录Id</param>
+        /// <param name="MerchantId">商户Id</param>
+        /// <param name="MerchantName">商户名称</param>
         /// <param name="Operator">操作人</param>
         /// <param name="AlterType">结算类型(0 对公结算银行卡 法人1 对私结算银行卡 2 非法人结算)</param>
         /// <param name="AcctZBankAreas">开户支行地区</param>
@@ -35,41 +37,50 @@ namespace MySystem.Service.Main2
         /// <param name="AgentIdCardFront">被委托人身份证人像面(结算类型为2时必填,默认传空字符串)</param>
         /// <param name="AgentIdCardBack">被委托人身份证国徽面(结算类型为2时必填,默认传空字符串)</param>
         /// <param name="HoldAgentProtocol">法人手持委托结算授权书(结算类型为2时必填,默认传空字符串)</param>
-        public static string AddOrEditMerchantChangeSettlementCardRecord(int Id, 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)
+        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("CityName like '%" + AcctZBankAreas + "%'").CityCode;
+            if (string.IsNullOrEmpty(AcctZbankCode))
+            {
+                return "未找到所选开户地区";
+            }
             var AcctZbankkNo = OpenBankAllService.Query(" BankChild='" + AcctZBankName + "'").BankChildNo;
-            if (string.IsNullOrEmpty(AcctZbankCode) || string.IsNullOrEmpty(AcctZbankkNo))
+            if (string.IsNullOrEmpty(AcctZbankkNo))
             {
-                return "未找到所选开户地区或开户支行";
+                return "未找到所选开户支行";
             }
-            if (Id > 0) //修改
+            var info = MerchantChangeSettlementCardRecordService.Query(MerchantId);
+            if (info.Id > 0) //修改
             {
-                var info = maindb.MerchantChangeSettlementCardRecord.FirstOrDefault(m => m.Id == Id) ?? new MerchantChangeSettlementCardRecord();
-                info.UpdateDate = DateTime.Now;
-                info.Operator = Operator;
-                info.AlterType = int.Parse(AlterType);
-                info.AcctZbankCode = AcctZbankCode;
-                info.ZbankNo = AcctZbankkNo;
-                info.MchtNo = MchtNo;
-                info.AccountName = AcctName;
-                info.AccountNo = AccountNo;
-                info.IdCard = IdCard;
-                info.AgentCardStartDate = DateTime.Parse(AgentCardStartDate);
-                info.AgentCardEndDate = DateTime.Parse(AgentCardEndDate);
-                info.BankCard = BankCard;
-                info.OpenAccountLicenses = OpenAccountLicenses;
-                info.PriLicAgreement = PriLicAgreement;
-                info.AgentProtocol = AgentProtocol;
-                info.AgentIdCardFront = AgentIdCardFront;
-                info.AgentIdCardBack = AgentIdCardBack;
-                info.HoldAgentProtocol = HoldAgentProtocol;
+                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;
+                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 query = maindb.MerchantChangeSettlementCardRecord.Add(new MerchantChangeSettlementCardRecord()
+                merchantChangeSettlementCardRecord = maindb.MerchantChangeSettlementCardRecord.Add(new MerchantChangeSettlementCardRecord()
                 {
+                    Id = MerchantId,
                     CreateDate = DateTime.Now,
                     UpdateDate = DateTime.Now,
                     Operator = Operator,
@@ -77,6 +88,8 @@ namespace MySystem.Service.Main2
                     AcctZbankCode = AcctZbankCode,
                     ZbankNo = AcctZbankkNo,
                     MchtNo = MchtNo,
+                    MerchantId = MerchantId,
+                    MerchantName = MerchantName,
                     AccountName = AcctName,
                     AccountNo = AccountNo,
                     IdCard = IdCard,
@@ -94,6 +107,37 @@ namespace MySystem.Service.Main2
             maindb.SaveChanges();
             maindb.Dispose();
 
+            //实体赋值
+            var request = ChangeMerchantCardNewSetUtil.SetValue(merchantChangeSettlementCardRecord);
+            //好哒商户修改银行卡新
+            JsonData Infos = JsonMapper.ToObject(HaoDaHelper.Instance.ChangeMerchantCardNew(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;
+                    maindb.SaveChanges();
+                }
+            }
+
+            return "success";
+        }
+        #endregion
+
+
+        #region 提交好哒商户修改结算卡申请
+        public static string SendHdChangeMerchantCard(MerchantChangeSettlementCardRecord merchantChangeSettlementCardRecord)
+        {
             return "success";
         }
         #endregion