瀏覽代碼

设置费率

lcl 3 月之前
父節點
當前提交
d16c901e90

+ 1 - 0
Models/Main/MerchantAddInfo.cs

@@ -151,5 +151,6 @@ namespace MySystem.Models.Main
         public int PlaceType { get; set; }
         public int BrandId { get; set; }
         public string CybMakerCode { get; set; }
+        public string FeeRate { get; set; }
     }
 }

+ 19 - 0
Models/Main/MerchantFeeRecord.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main
+{
+    public partial class MerchantFeeRecord
+    {
+        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 SettleFee { get; set; }
+        public int MerchantId { get; set; }
+        public int UserId { get; set; }
+        public string Remark { get; set; }
+    }
+}

+ 25 - 0
Models/Main/UserAmountSummaryAfter.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main
+{
+    public partial class UserAmountSummaryAfter
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { 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; }
+        public int TradeCount { get; set; }
+        public int IsAct { get; set; }
+    }
+}

+ 25 - 0
Models/Main/UserAmountSummaryBefore.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models.Main
+{
+    public partial class UserAmountSummaryBefore
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { 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; }
+        public int TradeCount { get; set; }
+        public int IsAct { get; set; }
+    }
+}

+ 164 - 0
Models/Main/WebCMSEntities.cs

@@ -104,6 +104,7 @@ namespace MySystem.Models.Main
         public virtual DbSet<MerchantDepositReturns> MerchantDepositReturns { get; set; }
         public virtual DbSet<MerchantDepositSet> MerchantDepositSet { get; set; }
         public virtual DbSet<MerchantDiviSummay> MerchantDiviSummay { get; set; }
+        public virtual DbSet<MerchantFeeRecord> MerchantFeeRecord { get; set; }
         public virtual DbSet<MerchantForCode> MerchantForCode { get; set; }
         public virtual DbSet<MerchantForMobile> MerchantForMobile { get; set; }
         public virtual DbSet<MerchantForName> MerchantForName { get; set; }
@@ -244,6 +245,8 @@ namespace MySystem.Models.Main
         public virtual DbSet<UserAccountRecord> UserAccountRecord { get; set; }
         public virtual DbSet<UserAddress> UserAddress { get; set; }
         public virtual DbSet<UserAmountSummary> UserAmountSummary { get; set; }
+        public virtual DbSet<UserAmountSummaryAfter> UserAmountSummaryAfter { get; set; }
+        public virtual DbSet<UserAmountSummaryBefore> UserAmountSummaryBefore { get; set; }
         public virtual DbSet<UserAuthRecord> UserAuthRecord { get; set; }
         public virtual DbSet<UserBack> UserBack { get; set; }
         public virtual DbSet<UserBackKind> UserBackKind { get; set; }
@@ -5768,6 +5771,12 @@ namespace MySystem.Models.Main
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.FeeRate)
+                    .HasColumnType("varchar(20)")
+                    .HasComment("费率")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
                 entity.Property(e => e.HdBindWeChat)
                     .HasColumnType("bit(1)")
                     .HasDefaultValueSql("b'0'")
@@ -7153,6 +7162,53 @@ namespace MySystem.Models.Main
                     .HasComment("版本号");
             });
 
+            modelBuilder.Entity<MerchantFeeRecord>(entity =>
+            {
+                entity.HasComment("费率设置记录");
+
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("创建时间");
+
+                entity.Property(e => e.MerchantId)
+                    .HasColumnType("int(11)")
+                    .HasComment("商户ID");
+
+                entity.Property(e => e.Remark)
+                    .HasColumnType("mediumtext")
+                    .HasComment("备注")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SettleFee)
+                    .HasColumnType("varchar(20)")
+                    .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.UpdateDate)
+                    .HasColumnType("datetime")
+                    .HasComment("修改时间");
+
+                entity.Property(e => e.UserId)
+                    .HasColumnType("int(11)")
+                    .HasComment("创客ID");
+
+                entity.Property(e => e.Version)
+                    .HasColumnType("int(11)")
+                    .HasComment("版本号");
+            });
+
             modelBuilder.Entity<MerchantForCode>(entity =>
             {
                 entity.HasKey(e => e.Code)
@@ -17079,6 +17135,114 @@ namespace MySystem.Models.Main
                 entity.Property(e => e.UserId).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<UserAmountSummaryAfter>(entity =>
+            {
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.IsAct)
+                    .HasColumnType("int(11)")
+                    .HasComment("是否活动");
+
+                entity.Property(e => e.PayMode).HasColumnType("int(11)");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.TotalAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.TradeCount)
+                    .HasColumnType("int(11)")
+                    .HasComment("交易笔数");
+
+                entity.Property(e => e.TradeDate)
+                    .HasColumnType("varchar(8)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.TradeMonth)
+                    .HasColumnType("varchar(6)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UserId).HasColumnType("int(11)");
+            });
+
+            modelBuilder.Entity<UserAmountSummaryBefore>(entity =>
+            {
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.IsAct)
+                    .HasColumnType("int(11)")
+                    .HasComment("是否活动");
+
+                entity.Property(e => e.PayMode).HasColumnType("int(11)");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.TotalAmount).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.TradeCount)
+                    .HasColumnType("int(11)")
+                    .HasComment("交易笔数");
+
+                entity.Property(e => e.TradeDate)
+                    .HasColumnType("varchar(8)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.TradeMonth)
+                    .HasColumnType("varchar(6)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UserId).HasColumnType("int(11)");
+            });
+
             modelBuilder.Entity<UserAuthRecord>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");

+ 3 - 3
Util/HaoDa/AddNewMerchantSetUtil.cs

@@ -55,9 +55,9 @@ namespace MySystem
             addNewMerchant.mchtName = AddInfo.CertMerchantName; //商户名称 无营业执照商户命名规则:商户_姓名 有营业执照商户命名规则:与营业执照商户名一致
             addNewMerchant.mchtCnShortName = AddInfo.MerchantShortname; //商户简称
             addNewMerchant.address = AddInfo.BizStoreAddress; //商户门店地址 详细地址即可,不需要附带省市区
-            addNewMerchant.alipayRate = "0.38"; //支付宝费率,值0.38,0.33等
-            addNewMerchant.wechatPayRate = "0.38"; //微信费率,值0.38,0.33等
-            addNewMerchant.unionPayRate = "0.38"; //银联二维码费率,值0.38,0.33等
+            addNewMerchant.alipayRate = AddInfo.FeeRate; //支付宝费率,值0.38,0.33等
+            addNewMerchant.wechatPayRate = AddInfo.FeeRate; //微信费率,值0.38,0.33等
+            addNewMerchant.unionPayRate = AddInfo.FeeRate; //银联二维码费率,值0.38,0.33等
             addNewMerchant.areaNo = AddInfo.AreaNo; //经营地区区域码 参考区域码表,填6位地区码(联系对接人提供)
             addNewMerchant.businessId = AddInfo.BusinessId; //经营范围 参考经营范围表(联系对接人提供)
             if (!string.IsNullOrEmpty(AddInfo.LicenseNumber))

+ 85 - 0
Util/HaoDa/HaoDaFeeHelper.cs

@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Linq;
+using Microsoft.Extensions.Hosting;
+using MySystem;
+using MySystem.Models;
+using LitJson;
+using Library;
+using MySystem.Models.Main;
+
+public class HaoDaFeeHelper
+{
+    public readonly static HaoDaFeeHelper Instance = new HaoDaFeeHelper();
+    private HaoDaFeeHelper()
+    {
+    }
+
+    public void Start()
+    {
+        Thread th = new Thread(StartDo);
+        th.IsBackground = true;
+        th.Start();
+    }
+
+    private void StartDo()
+    {
+        while (true)
+        {
+            string content = RedisDbconn.Instance.RPop<string>("HaoDaFeeQueue");
+            if (!string.IsNullOrEmpty(content))
+            {
+                SetFee(int.Parse(content));
+            }
+            else
+            {
+                Thread.Sleep(10000);
+            }
+        }
+    }
+
+    public void SetFee(int Id)
+    {
+        try
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            MerchantAddInfo addinfo = db.MerchantAddInfo.FirstOrDefault(m => m.Id == Id);
+            MerchantInfo info = db.MerchantInfo.FirstOrDefault(m => m.Id == Id);
+            if(info != null && addinfo != null)
+            {
+                string FeeRate = addinfo.FeeRate;
+                if(!string.IsNullOrEmpty(FeeRate)) FeeRate = "0.38";
+                string result = HaoDaHelper.Instance.SetFee(addinfo.MchtNo, FeeRate, addinfo.BrandId);
+                JsonData jsonObj = JsonMapper.ToObject(result);
+                int Status = 0;
+                string Remark = "";
+                string resultCode = jsonObj["resultCode"].ToString();
+                if(resultCode != "0")
+                {
+                    Remark = jsonObj["errorDesc"].ToString();
+                }
+                else
+                {
+                    Status = 1;
+                }
+                db.MerchantFeeRecord.Add(new MerchantFeeRecord()
+                {
+                    Status = Status,
+                    CreateDate = DateTime.Now,
+                    SettleFee = FeeRate,
+                    MerchantId = addinfo.Id,
+                    UserId = info.UserId,
+                    Remark = Remark,
+                });
+                db.SaveChanges();
+            }            
+            db.Dispose();
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Instance.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "修改商户费率异常");
+        }
+    }
+}

+ 32 - 0
Util/HaoDa/HaoDaHelper.cs

@@ -701,6 +701,38 @@ namespace MySystem
             return result;
         }
 
+        /// <summary>
+        /// 修改商户费率
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public string SetFee(string mchtNo, string feeRate, int BrandId = 0)
+        {
+            var BoxRequestUrl = HaodaUnionParam.BoxRequestUrl;
+            if (BrandId == 1) BoxRequestUrl = HaodaParam.BoxRequestUrl;
+
+            LogHelper.Instance.WriteLog(DateTime.Now.ToString(), "好哒商户修改费率");
+            
+            Dictionary<string, object> request = new Dictionary<string, object>();
+
+            request.Add("mchtNo", mchtNo); // 商户号
+            request.Add("alipayRate", feeRate);
+            request.Add("wechatPayRate", feeRate);
+            request.Add("unionPayRate", feeRate);
+
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
+            LogHelper.Instance.WriteLog(req, "好哒商户修改费率");
+            Dictionary<string, string> headdic = GetHeader(req, BrandId);
+            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_disc", "好哒商户修改费率");
+            string result = PostWebRequest(BoxRequestUrl + "/api/inst/mcht/update_disc", req, headdic);
+            LogHelper.Instance.WriteLog("返回\n" + result + "\n\n", "好哒商户修改费率");
+
+            return result;
+        }
+
         public Dictionary<string, string> GetHeader(string req, int BrandId = 0)
         {
             var BoxAppId = HaodaUnionParam.BoxAppId;