public void Batch(int agengtid, string InfoList, int Value) { SysAgent tempAgent = Entity.SysAgent.FirstOrNew(o => o.Id == Value); //调入商户 SysAgent Agengt = Entity.SysAgent.FirstOrNew(o => o.Id == agengtid); //调出商户 if (tempAgent == null || Agengt == null) { Response.Write(0); } int Ret = 0; //string SQL = "update SysAgent set agentid='" + Value + "' where id in("+InfoList+")"; //Ret = Entity.ExecuteStoreCommand(SQL); string[] users = InfoList.Split(','); //调入记录 foreach (var info in users) { int temp = int.Parse(info); Users Users = Entity.Users.FirstOrDefault(o => o.Id == temp); if (Users != null) { UsersMoveLog UsersMoveLog = new UsersMoveLog() { AddTime = DateTime.Now, ToSAId = tempAgent.Id, ToName = tempAgent.Name, FromName = Agengt.Name, FromSAId = Agengt.Id, UId = Users.Id, UTrueName = Users.TrueName.IsNullOrEmpty()?"":Users.TrueName, OpName = AdminUser.TrueName, Type = 1, Tel = Users.UserName, }; if (!Users.MyPId.IsNullOrEmpty()) { ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(o => o.UId == Users.MyPId && o.Tier == 1); if (ShareTotal != null) { ShareTotal.ShareNum = ShareTotal.ShareNum - 1; } } Users.MyPId = 0; Users.Agent = Value; this.Entity.UsersMoveLog.AddObject(UsersMoveLog); } } Entity.SaveChanges(); Response.Write(Ret); }
public void AllUsers(int agengtid, int Value) { SysAgent tempAgent = Entity.SysAgent.FirstOrNew(o => o.Id == Value); //调入商户 SysAgent Agengt = Entity.SysAgent.FirstOrNew(o => o.Id == agengtid); //调出商户 if (tempAgent == null || Agengt == null) { Response.Write(0); } int Ret = 0; IList <Users> UsersList = Entity.Users.Where(o => o.Agent == agengtid && o.UserName != Agengt.LinkMobile).ToList(); //调入记录 foreach (var info in UsersList) { UsersMoveLog UsersMoveLog = new UsersMoveLog() { AddTime = DateTime.Now, ToSAId = tempAgent.Id, ToName = tempAgent.Name, FromName = Agengt.Name, FromSAId = Agengt.Id, UId = info.Id, UTrueName = info.TrueName.IsNullOrEmpty() ? "" : info.TrueName, OpName = AdminUser.TrueName, Type = 1, Tel = info.UserName, }; if (!info.MyPId.IsNullOrEmpty()) { ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(o => o.UId == info.MyPId && o.Tier == 1); if (ShareTotal != null) { ShareTotal.ShareNum = ShareTotal.ShareNum - 1; } } info.MyPId = 0; info.Agent = Value; this.Entity.UsersMoveLog.AddObject(UsersMoveLog); } Entity.SaveChanges(); Response.Write(Ret); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[UsersTrueNameByAPI]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } UserAuth UserAuth = new UserAuth(); UserAuth = JsonToObject.ConvertJsonToModel(UserAuth, json); SysSet SysSet = this.Entity.SysSet.FirstOrNew(); if (!UserAuth.IdentityCode.IsNullOrEmpty()) { var y = UserAuth.IdentityCode.Substring(6, 4); var m = UserAuth.IdentityCode.Substring(10, 2); var d = UserAuth.IdentityCode.Substring(12, 2); var birthday = new DateTime(int.Parse(y), int.Parse(m), int.Parse(d)); var now = DateTime.Now; int age = now.Year - birthday.Year; if (now.Month < birthday.Month || (now.Month == birthday.Month && now.Day < birthday.Day)) { age--; } if (age > SysSet.AuthMaxAge || age < SysSet.AuthMinAge) { DataObj.OutError("1104"); return; } } Users Users = new Users(); Users = JsonToObject.ConvertJsonToModel(Users, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); if (UserAuth.Token.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (UserAuth.NeekName.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (Users.X.IsNullOrEmpty() || Users.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } string HaoFu_Auth_Open = ConfigurationManager.AppSettings["HaoFu_Auth_Open"].ToString(); //SysSet SysSet = Entity.SysSet.FirstOrNew(); byte CardItemNum = 0; byte CardType = 0; byte UsedCardType = 0; if (Equipment.RqType == "Apple") { CardItemNum = SysSet.IosSet10; if (SysSet.IosSet11 == 0) { CardType = 0; } if (SysSet.IosSet11 == 1) { CardType = 2; } if (SysSet.IosSet11 == 2) { CardType = 1; } } else { CardItemNum = SysSet.ApkSet10; if (SysSet.ApkSet11 == 0) { CardType = 0; } if (SysSet.ApkSet11 == 1) { CardType = 2; } if (SysSet.ApkSet11 == 2) { CardType = 1; } } if (HaoFu_Auth_Open != "true") { CardItemNum = 6;//兼容直连六要素接口 } if (CardItemNum == 6) { if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty() || UserAuth.Mobile.IsNullOrEmpty() || UserAuth.CVV.IsNullOrEmpty() || UserAuth.EndDate.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } CardType = 2;//六要素一定是信用卡 } else if (CardItemNum == 4) { if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty() || UserAuth.Mobile.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } } else if (CardItemNum == 3) { if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } } else { DataObj.OutError("1000"); return; } Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserAuth.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1) { DataObj.OutError("2003"); return; } if (baseUsers.CardStae == 2) //已实名认证 { DataObj.OutError("2007"); return; } int CardIdCount = Entity.Users.Count(n => n.CardId == UserAuth.IdentityCode && n.CardStae == 2); if (CardIdCount > 0) //身份证已用过 { DataObj.OutError("2020"); return; } //验证账号是否被限制 if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == baseUsers.UserName && UBL.State == 1) != null) { //提示暂不支持您入网 DataObj.OutError("2027"); return; } //验证身份证是否被限制 if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == UserAuth.IdentityCode && UBL.State == 2) != null) { //提示暂不支持您入网 DataObj.OutError("2027"); return; } //验证银行卡是否被限制 if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == UserAuth.BankAccount && UBL.State == 3) != null) { //提示暂不支持您入网 DataObj.OutError("2027"); return; } //2016-10-07 非法关键词限制 if (!SysSet.NoWord.IsNullOrEmpty()) { string NeekName = Users.NeekName; NeekName = NeekName.Replace(" ", "").Replace(" ", ""); string[] NoWord = SysSet.NoWord.Split('|'); bool hasNoWord = false; string noword = ""; foreach (var p in NoWord) { if (NeekName.Contains(p)) { hasNoWord = true; noword = p; break; } } if (hasNoWord) { DataObj.Msg = "禁止使用关键词“" + noword + "”"; DataObj.OutError("2025"); return; } } //2016-09-30 限制重名提交 Users tempUsers = Entity.Users.FirstOrDefault(n => n.NeekName == Users.NeekName && n.State == 1 && (n.CardStae == 2 || n.CardStae == 1)); if (tempUsers != null) { DataObj.OutError("2024"); return; } int Count = Entity.UserAuth.Count(n => n.UId == baseUsers.Id && n.IsCharge == 1); if (Count >= SysSet.AuthTimes) { DataObj.OutError("2022"); return; } if (!UserAuth.EndDate.IsNullOrEmpty()) { //处理年月问题传上来是MMYY //20151112调整成YYMM if (UserAuth.EndDate.Length == 4) { string MM = UserAuth.EndDate.Substring(0, 2); string YY = UserAuth.EndDate.Substring(2, 2); UserAuth.EndDate = YY + MM; } } UserAuth.AddTime = DateTime.Now; UserAuth.UId = baseUsers.Id; UserAuth.IsCharge = 0; Entity.UserAuth.AddObject(UserAuth); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, UserAuth); #region 贴牌配置 int ApkSet3 = SysSet.ApkSet3; int IosSet3 = SysSet.IosSet3; var vSysAgent = Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent); if (vSysAgent == null) { DataObj.OutError("1000"); return; } var topSysAgent = vSysAgent.GetTopAgent(Entity); if (topSysAgent != null && topSysAgent.IsTeiPai == 1) { ApkSet3 = topSysAgent.Set3; IosSet3 = topSysAgent.Set3; } #endregion #region 激活码逻辑 Card Card = null; bool IsCheckCard = false; //必填 if ((ApkSet3 == 1 && this.Equipment.RqType == "Android") || (IosSet3 == 1 && this.Equipment.RqType == "Apple")) { IsCheckCard = true; if (UserAuth.CardNum.IsNullOrEmpty() || UserAuth.CardPWD.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } } //选填 if ((ApkSet3 == 3 && this.Equipment.RqType == "Android") || (IosSet3 == 3 && this.Equipment.RqType == "Apple")) { if (!UserAuth.CardNum.IsNullOrEmpty() && !UserAuth.CardPWD.IsNullOrEmpty()) { IsCheckCard = true; } } if (IsCheckCard) { Card = Entity.Card.FirstOrDefault(n => n.Code == UserAuth.CardNum && n.PasWd == UserAuth.CardPWD && n.Auto == 1); if (Card == null) { DataObj.OutError("5001"); return; } if (Card.State != 1) { string StateStr = string.Empty; switch (Card.State) { case 2: StateStr = "已授权"; break; case 3: StateStr = "已使用"; break; case 0: StateStr = "已失效"; break; } DataObj.Msg = "激活码" + StateStr; DataObj.OutError("5001"); return; } if (Card.AId.IsNullOrEmpty()) { DataObj.OutError("5002"); return; } if (Card.AdminId.IsNullOrEmpty()) { DataObj.OutError("5002"); return; } Card.State = 3;//使用中 baseUsers.CardNum = Card.Code; } #endregion string ret_code = ""; string ret_msg = ""; string isCharge = ""; string CONTENT = ""; #region 第三方接口查询 if (HaoFu_Auth_Open == "true") { if (CardItemNum != 6) { UsedCardType = GetCardType(UserAuth.BankAccount); if (CardType == 1)//要求借记卡 { if (UsedCardType != 1) { DataObj.OutError("2023"); Utils.WriteLog(CardType + "===" + UsedCardType + "无法查询的卡:" + UserAuth.BankAccount, "bankcard"); return; } } if (CardType == 2)//要求信用卡 { if (UsedCardType != 2) { DataObj.OutError("2023"); Utils.WriteLog(CardType + "===" + UsedCardType + "无法查询的卡:" + UserAuth.BankAccount, "bankcard"); return; } } } else { UsedCardType = 2; } string HaoFu_Auth_MerId = ConfigurationManager.AppSettings["HaoFu_Auth_MerId"].ToString(); string HaoFu_Auth_MerKey = ConfigurationManager.AppSettings["HaoFu_Auth_MerKey"].ToString(); string HaoFu_Auth_Url = ConfigurationManager.AppSettings["HaoFu_Auth_Url"].ToString(); string data = "{\"action\":\"authuser\",\"merid\":\"" + HaoFu_Auth_MerId + "\",\"orderid\":\"" + UserAuth.OId + "\",\"bankaccount\":\"" + UserAuth.BankAccount + "\",\"accountname\":\"" + UserAuth.AccountName + "\",\"identitycode\":\"" + UserAuth.IdentityCode + "\",\"mobile\":\"" + UserAuth.Mobile + "\",\"cvv\":\"" + UserAuth.CVV + "\",\"enddate\":\"" + UserAuth.EndDate + "\"}"; string DataBase64 = LokFuEncode.Base64Encode(data, "utf-8"); string Sign = (DataBase64 + HaoFu_Auth_MerKey).GetMD5(); DataBase64 = HttpUtility.UrlEncode(DataBase64, Encoding.UTF8); string postdata = "req=" + DataBase64 + "&sign=" + Sign; CONTENT = Utils.PostRequest(HaoFu_Auth_Url, postdata, "utf-8"); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(CONTENT); } catch (Exception Ex) { Log.Write("[UsersTrueNameByAPI]:", "【CONTENT】" + CONTENT, Ex); } if (JS == null) { DataObj.OutError("2021"); return; } string resp = JS["resp"].ToString(); CONTENT = LokFuEncode.Base64Decode(resp, "utf-8"); try { JS = (JObject)JsonConvert.DeserializeObject(CONTENT); } catch (Exception Ex) { Log.Write("[UsersTrueNameByAPI]:", "【CONTENT2】" + CONTENT, Ex); } if (JS == null) { DataObj.OutError("2021"); return; } ret_code = JS["respcode"].ToString(); ret_msg = JS["respmsg"].ToString(); if (JS["ischarge"] != null) { isCharge = JS["ischarge"].ToString(); } if (isCharge == "1") { UserAuth.IsCharge = 1; } else { UserAuth.IsCharge = 0; } } #endregion #region 审核处理 UserAuth.RetCode = ret_code; UserAuth.RetMsg = ret_msg; UserAuth.RetLog = CONTENT; baseUsers.TrueName = UserAuth.AccountName; baseUsers.NeekName = UserAuth.NeekName; baseUsers.CardId = UserAuth.IdentityCode; baseUsers.CardFace = ""; baseUsers.CardType = 1; if (UsedCardType == 2) { baseUsers.HasT0 = 1; } else { baseUsers.HasT0 = 0; } string Code = "0000"; if (ret_code == "0000") { baseUsers.CardStae = 2;//直接审核通过 //======================================= string GPSAddress = Users.RegAddress; if (GPSAddress.IsNullOrEmpty()) { GPSAddress = Utils.GetAddressByGPS(Users.X, Users.Y); } if (!GPSAddress.IsNullOrEmpty()) { baseUsers.RegAddress = GPSAddress; baseUsers.X = Users.X; baseUsers.Y = Users.Y; } //======================================= UserTrack.ENo = DataObj.ENo; UserTrack.OPType = "自动认证"; UserTrack.GPSAddress = GPSAddress; UserTrack.GPSX = Users.X; UserTrack.GPSY = Users.Y; baseUsers.SeavGPSLog(UserTrack, Entity); //======================================= //20151125需要对有绑卡的用户验证是否是来源与推广,增加抽奖次数 #region 人推广 if (!baseUsers.MyPId.IsNullOrEmpty()) { if (baseUsers.ShareType == 2) { //支付通道升级推广 PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == baseUsers.PayConfigId && n.State == 1 && n.ShareNumber > 0); if (PCC != null) { int count = Entity.Users.Count(n => n.CardStae == 2 && n.State == 1 && n.MyPId == baseUsers.MyPId && n.PayConfigId == baseUsers.PayConfigId && n.Id != baseUsers.Id); count++; //这里统计会漏掉当前用户的,需要增加1个。 if (count == PCC.ShareNumber) //相等的那一次调整,避免超出了还一直调整 { Users UP = Entity.Users.FirstOrDefault(n => n.Id == baseUsers.MyPId); if (PCC.CState == 1) { if (UP.Cash0 > PCC.Cash0) { UP.Cash0 = PCC.Cash0; } if (UP.ECash0 > PCC.ECash0) { UP.ECash0 = PCC.ECash0; } } if (PCC.EState == 1) { if (UP.Cash1 > PCC.Cash1) { UP.Cash1 = PCC.Cash1; } if (UP.ECash1 > PCC.ECash1) { UP.ECash1 = PCC.ECash1; } } IList <UserPay> List = Entity.UserPay.Where(n => n.UId == baseUsers.MyPId).ToList();//获取用户配置 foreach (var p in List) { PayConfigTemp PCT = Entity.PayConfigTemp.FirstOrDefault(n => n.PId == p.PId && n.PCCId == PCC.Id); //获取套餐配置 if (PCT != null) { if (PCT.State == 1) { if (p.Cost > PCT.Cost) { p.Cost = PCT.Cost; } } } } string UserPayCashName = "UserPay_" + UP.Id.ToString() + "_" + Equipment.RqType; CacheBuilder.EntityCache.Remove(UserPayCashName, null); string PayConfigChangeCashName = "PayConfigChange_" + UP.Agent + "_" + UP.Id; CacheBuilder.EntityCache.Remove(PayConfigChangeCashName, null); //Utils.WriteLog("UserPayCashName:" + UserPayCashName + " PayConfigChangeCashName:" + PayConfigChangeCashName, "ClearCache"); } } } if (baseUsers.ShareType == 1) { //增加推广抽奖次数 TurnUsers TurnUsers = Entity.TurnUsers.FirstOrNew(n => n.UId == baseUsers.MyPId); if (!TurnUsers.Id.IsNullOrEmpty()) { TurnUsers.Times++; } } #region 分享统计数 //===================================增加分享统计数=================================== //获取用户所属各级分润配置 // IList<UserPromoteGet> UserPromoteGetList = Entity.UserPromoteGet.Where(n => n.AgentID == baseUsers.Agent).OrderBy(n => n.PromoteLevel).ToList(); int MaxLevel = SysSet.GlobaPromoteMaxLevel; //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0 IList <Users> UsersList = baseUsers.GetUsersById(Entity, MaxLevel); foreach (var U in UsersList.Where(n => n.Tier > 0)) { ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier); if (ShareTotal == null) { ShareTotal = new ShareTotal(); ShareTotal.UId = U.Id; ShareTotal.AddTime = DateTime.Now; ShareTotal.ShareNum = 1; ShareTotal.Amount = 0; ShareTotal.Profit = 0; ShareTotal.Tier = U.Tier; Entity.ShareTotal.AddObject(ShareTotal); } else { ShareTotal.ShareNum += 1; } Entity.SaveChanges(); } //===================================增加分享统计数 End=================================== #endregion } #endregion if (Card != null) { //代理商信息 baseUsers.Agent = Card.AId; baseUsers.AId = Card.AdminId; //推广信息 if (!Card.PUId.IsNullOrEmpty()) { if (baseUsers.MyPId.IsNullOrEmpty()) { //不是费率升级推广才有效 baseUsers.MyPId = Card.PUId; baseUsers.PayConfigId = 0; baseUsers.ShareType = 1; } } Card.State = 2; } } else { Code = "2021"; baseUsers.CardStae = 3;//审核失败 baseUsers.CardNum = ""; if (Card != null) { Card.State = 1; } } Entity.SaveChanges(); #endregion DataObj.Data = UserAuth.OutJson(); DataObj.Code = Code; DataObj.OutString(); }
public ActionResult UsersMove(Users users) { #region 校验 Users Users = this.Entity.Users.Where(o => o.UserName == users.UserName.Trim() && o.TrueName == users.TrueName.Trim() && o.CardId == users.CardId.Trim()).FirstOrDefault(); if (Users == null) { ViewBag.ErrorMsg = "用户不存在"; return(View("Error")); } if (Users.CardStae != 2) { ViewBag.ErrorMsg = "用户未实名认证"; return(View("Error")); } if (Users.SAId != 0) { ViewBag.ErrorMsg = "此商户不可调入"; return(View("Error")); } if (Users.Agent == this.BasicAgent.Id) { ViewBag.ErrorMsg = "用户:" + Users.UserName + " ,已经是你的商户,无需调入"; return(View("Error")); } UserCard UserCard = this.Entity.UserCard.FirstOrDefault(o => o.UId == Users.Id && o.Card == users.CardNum.Trim() && o.Type == 1 && o.State == 1); if (UserCard == null) { ViewBag.ErrorMsg = "借记卡卡号不正确"; return(View("Error")); } var FSysAgent = this.Entity.SysAgent.FirstOrDefault(o => o.Id == Users.Agent); if (FSysAgent == null) { ViewBag.ErrorMsg = "所属代理不存在"; return(View("Error")); } #endregion //处理下级用户 var sonUsers = this.Entity.Users.Where(o => o.MyPId == Users.Id).ToList(); foreach (var item in sonUsers) { //新增分享记录减少 if (!item.MyPId.IsNullOrEmpty()) { ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(o => o.UId == item.MyPId && o.Tier == 1); if (ShareTotal != null) { ShareTotal.ShareNum = ShareTotal.ShareNum - 1; } } item.MyPId = 0; } int Agent = 0; //处理调入用户 Agent = Users.Agent; if (!Users.MyPId.IsNullOrEmpty()) { ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(o => o.UId == Users.MyPId && o.Tier == 1); if (ShareTotal != null) { ShareTotal.ShareNum = ShareTotal.ShareNum - 1; } } Users.MyPId = 0; Users.Agent = this.BasicAgent.Id; Users.AId = this.AdminUser.Id; //调入记录 UsersMoveLog UsersMoveLog = new UsersMoveLog() { AddTime = DateTime.Now, ToSAId = this.BasicAgent.Id, ToName = this.BasicAgent.Name, FromName = FSysAgent.Name, FromSAId = Agent, UId = Users.Id, UTrueName = users.TrueName ?? users.UserName, OpName = this.BasicAgent.Name, Type = 1, Tel = users.UserName, }; this.Entity.UsersMoveLog.AddObject(UsersMoveLog); this.Entity.SaveChanges(); ViewBag.Title = "操作成功"; ViewBag.Msg = string.Format("商户:{0},已经成功调入!!", Users.UserName); return(View("Succeed")); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[ShareTotal2]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } ShareTotal ShareTotal = new ShareTotal(); ShareTotal = JsonToObject.ConvertJsonToModel(ShareTotal, json); //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == ShareTotal.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } if (baseUsers.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } if (baseUsers.MiBao != 1)//未设置支付密码 { DataObj.OutError("2008"); return; } IList <ShareTotal> STList = new List <ShareTotal>(); SysSet SysSet = Entity.SysSet.FirstOrNew(); for (byte i = 1; i <= SysSet.GlobaPromoteMaxLevel; i++) { ShareTotal st = Entity.ShareTotal.FirstOrDefault(n => n.UId == baseUsers.Id && n.Tier == i); if (st == null) { st = new ShareTotal(); st.ShareNum = 0; st.Amount = 0; st.Profit = 0; st.Tier = i; } STList.Add(st); } STList = STList.OrderBy(n => n.Tier).ToList(); //计算总的 int ShareNum = 0; decimal Amount = 0, Profit = 0; foreach (var p in STList) { ShareNum += p.ShareNum; Amount += p.Amount; Profit += p.Profit; } decimal Today = 0; decimal Yesterday = 0; DateTime tdate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); DateTime ldate = tdate.AddDays(-1); Today = Entity.OrderProfitLog.Where(n => n.UId == baseUsers.Id && n.LogType == 1 && n.AddTime > tdate).Sum(n => (decimal?)n.Profit) ?? 0m; Yesterday = Entity.OrderProfitLog.Where(n => n.UId == baseUsers.Id && n.LogType == 1 && n.AddTime > ldate && n.AddTime < tdate).Sum(n => (decimal?)n.Profit) ?? 0m; //增加汇总行 ShareTotal ST = new ShareTotal(); ST.ShareNum = ShareNum; ST.Amount = Amount; ST.Profit = Profit; ST.Tier = 0; ST.Total = Profit; ST.Today = Today; ST.Yesterday = Yesterday; //判断是否为代理商 //SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(o => o.LinkMobile == baseUsers.UserName && o.State == 1); //if (SysAgent != null) //{ // ST.UserType = 2; //} //if (ST.UserType == 1) //{ // ST.UserTotal = Entity.Users.Where(o => o.MyPId == baseUsers.Id).Count(); //} //if (ST.UserType == 2) //{ // ST.UserTotal = Entity.Users.Where(o => o.Agent == SysAgent.Id && o.Id != baseUsers.Id).Count(); //} string STStr = STList.EntityToJson(); JArray JS = new JArray(); try { JS = (JArray)JsonConvert.DeserializeObject(STStr); } catch (Exception Ex) { Log.Write("[ShareTotal2]:", "【STStr】" + STStr, Ex); } if (JS == null) { DataObj.OutError("1000"); return; } ST.Json = JS; ST.Cols = "Total,Today,Yesterday,Json,UserType,UserTotal"; //STList.Add(ST); DataObj.Data = ST.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// 订单分润/分润退款 /// </summary> /// <param name="O"></param> /// <param name="Entity"></param> /// <param name="Type">1分润入帐 2分润退款</param> /// <returns></returns> public static FastOrder PayAgent(this FastOrder O, LokFuEntity Entity, int Type) { FastConfig FastConfig = Entity.FastConfig.FirstOrNew(); if (FastConfig.AgentWay != 1) { return(O); } if (O.Agent.IsNullOrEmpty()) {//代理商没有情况下 return(O); } //if (O.AgentPayGet.IsNullOrEmpty()) //{ // //没有佣金 // //直接标识为已结算 // O.AgentState = 1; // O.AgentTime = DateTime.Now; // Entity.SaveChanges(); // return O; //} if (Type != 1)//类型不对 { return(O); } Users OrderUser = Entity.Users.FirstOrDefault(n => n.Id == O.UId);//读取订单用户 if (Type == 1) { string TypeString = "收付直通车"; #region 结算 if (O.AgentState != 0) {//已结算,不能重复结算 return(O); } O.AgentState = 1; O.AgentTime = DateTime.Now; Entity.SaveChanges(); //获取各级代理商 SysAgent SysAgent = new SysAgent(); SysAgent.Id = O.Agent; IList <SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity); decimal AIdPayGet = (decimal)O.AgentPayGet; // decimal sumpayget = 0; int tier = 1; foreach (var p in SysAgentList) { if (p.State == 1) { decimal PayGet = SysAgent.GetSplit(p.Tier, Entity); AIdPayGet = O.Amoney * PayGet; //当前级总佣金,需获取是否有下级拆分他的佣金 AIdPayGet = AIdPayGet.Floor(); decimal AIdPayGetNext = 0; //定义下一级佣金 if (tier < SysAgentList.Count) { //不是最后一级,需计算下级拆分金额 SysAgent SysAgentNext = SysAgentList.Skip(tier).Take(1).FirstOrDefault(); if (SysAgentNext != null) { if (SysAgentNext.State == 1) {//下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = SysAgent.GetSplit(SysAgentNext.Tier, Entity); AIdPayGetNext = O.Amoney * PayGetNext; AIdPayGetNext = AIdPayGetNext.Floor(); } } } decimal AIdPayGetMy = AIdPayGet - AIdPayGetNext; //当前级所能得到真实佣金 decimal UsersGetAll = 0; //定义所有用户佣金 //最后一级代理商 处理用户分润 #region 最后一级代理商 处理用户分润 if (tier == SysAgentList.Count) { //获取各级分润配置 SysSet SysSet = Entity.SysSet.FirstOrNew(); int MaxLevel = SysSet.GlobaPromoteMaxLevel; //有用户分润,开始执行用户分润 Users Users = new Users(); Users.Id = O.UId; //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0 IList <Users> UsersList = Users.GetUsersById(Entity, MaxLevel); int UsersTier = 1; foreach (var U in UsersList.Where(n => n.Tier > 0 && n.State == 1)) { //UsersGetAll //UserPromoteGet UserPromoteGet = UserPromoteGetList.FirstOrDefault(n => n.PromoteLevel == U.Tier); //if (UserPromoteGet != null) //{ decimal PromoteGet = Users.GetUsersSplit(Entity, U.Tier); decimal UsersGet = O.Amoney * PromoteGet; UsersGet = UsersGet.Floor(); if (UsersTier == 1) { UsersGetAll = UsersGet; } //UsersGetSum += UsersGet; if (UsersTier < UsersList.Count) { //不是最后一级,需计算下级拆分金额 byte nexttier = (byte)(U.Tier + 1); Users UsersNext = UsersList.FirstOrDefault(o => o.Tier == nexttier); if (UsersNext != null) { if (UsersNext.State == 1) { //下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = Users.GetUsersSplit(Entity, UsersNext.Tier); decimal UserPayGetNext = O.Amoney * PayGetNext; UserPayGetNext = UserPayGetNext.Floor(); //减掉下级用户的金额 UsersGet = UsersGet - UserPayGetNext; } } } if (UsersGet > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", TypeString, O.TNum); string SP_Ret = Entity.SP_UsersMoney(U.Id, O.TNum, UsersGet, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", U.Id, O.TNum, 8, UsersGet, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = U.Id; OPL.Agent = 0; OPL.TNum = O.TNum; OPL.LogType = 1; OPL.Tier = U.Tier; OPL.Profit = UsersGet; OPL.Amoney = O.Amoney; OPL.OrderType = 21; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); //=====增加统计记录===== ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier); if (ShareTotal == null) { ShareTotal = new ShareTotal(); ShareTotal.UId = U.Id; ShareTotal.AddTime = DateTime.Now; ShareTotal.ShareNum = 0; ShareTotal.Amount = O.Amoney; ShareTotal.Profit = UsersGet; ShareTotal.Tier = U.Tier; Entity.ShareTotal.AddObject(ShareTotal); } else { ShareTotal.Amount += O.Amoney; ShareTotal.Profit += UsersGet; } sumpayget = sumpayget + UsersGet; } UsersTier++; // } } } #endregion //20160704 Lin 增加统计用户拆分多少,最后一级代理金额减掉这部分金额即可。 //解决用户分剩下钱规系统逻辑问题 AIdPayGetMy = AIdPayGetMy - UsersGetAll; #region 最后一级代理商 处理同级分润 if (tier == SysAgentList.Count) { if (!p.SameAgent.IsNullOrEmpty() && AIdPayGet > 0) { SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); decimal SameMoney = AIdPayGet * SysMoneySet.SameAgent; SameMoney = SameMoney.Floor(); SysAgent SameSysAgent = Entity.SysAgent.FirstOrNew(o => o.Id == p.SameAgent); if (SameSysAgent.State == 1 && !SameSysAgent.MyUId.IsNullOrEmpty()) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "直通车同级分润", O.TNum); string SP_Ret = Entity.SP_UsersMoney(SameSysAgent.MyUId, O.TNum, SameMoney, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", SameSysAgent.MyUId, O.TNum, 8, SameMoney, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = SameSysAgent.MyUId; OPL.Agent = SameSysAgent.Id; OPL.TNum = O.TNum; OPL.LogType = 3; OPL.Tier = p.Tier; OPL.Profit = SameMoney; OPL.Amoney = O.Amoney; OPL.OrderType = 21; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); O.SameGet = SameMoney; } } } #endregion if (!p.MyUId.IsNullOrEmpty() && AIdPayGetMy > 0)//某一级未绑定钱包,钱留给系统^-^ { //获取钱包信息 //为了减少系统开销,这里不读取用户信息——By Lin //Users Users = Entity.Users.FirstOrDefault(n => n.Id == p.MyUId); if (p.MyUId > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", TypeString, O.TNum); string SP_Ret = Entity.SP_UsersMoney(p.MyUId, O.TNum, AIdPayGetMy, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", p.MyUId, O.TNum, 8, AIdPayGetMy, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = p.MyUId; OPL.Agent = p.Id; OPL.TNum = O.TNum; OPL.LogType = 2; OPL.Tier = p.Tier; OPL.Profit = AIdPayGetMy; OPL.Amoney = O.Amoney; OPL.OrderType = 21; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); sumpayget = sumpayget + AIdPayGetMy; } } } tier++; } Entity.SaveChanges(); //统计所有分润 //decimal Profit = 0; //if (Entity.OrderProfitLog.Count(n => n.TNum == O.TNum) > 0) //{ // Profit = Entity.OrderProfitLog.Where(n => n.TNum == O.TNum).Sum(n => n.Profit);//是否会为空的情况 //} O.AgentPayGet = sumpayget;//记录总佣金支出,以便总系统计算利润 O.AgentState = 1; Entity.SaveChanges(); #endregion } if (Type == 2) { //没有退款,分润也不需要写 } return(O); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[ShareTotal]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } ShareTotal ShareTotal = new ShareTotal(); ShareTotal = JsonToObject.ConvertJsonToModel(ShareTotal, json); //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == ShareTotal.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } if (baseUsers.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } if (baseUsers.MiBao != 1)//未设置支付密码 { DataObj.OutError("2008"); return; } IList <ShareTotal> STList = new List <ShareTotal>(); SysSet SysSet = Entity.SysSet.FirstOrNew(); for (byte i = 1; i <= SysSet.GlobaPromoteMaxLevel; i++) { ShareTotal st = Entity.ShareTotal.FirstOrDefault(n => n.UId == baseUsers.Id && n.Tier == i); if (st == null) { st = new ShareTotal(); st.ShareNum = 0; st.Amount = 0; st.Profit = 0; st.Tier = i; } STList.Add(st); } //计算总的 int ShareNum = 0; decimal Amount = 0, Profit = 0; foreach (var p in STList) { ShareNum += p.ShareNum; Amount += p.Amount; Profit += p.Profit; } //增加汇总行 ShareTotal ST = new ShareTotal(); ST.ShareNum = ShareNum; ST.Amount = Amount; ST.Profit = Profit; ST.Tier = 0; STList.Add(ST); STList = STList.OrderBy(n => n.Tier).ToList(); DataObj.Data = STList.EntityToJson(); DataObj.Code = "0000"; DataObj.OutString(); }
public void Save(Users Users) { Users baseUsers = Entity.Users.FirstOrDefault(n => n.Id == Users.Id); baseUsers = Request.ConvertRequestToModel <Users>(baseUsers, Users); baseUsers.CardType = 0; //审核通过 Card Card = null; if (!baseUsers.CardNum.IsNullOrEmpty()) { Card = this.Entity.Card.Where(o => o.Code == baseUsers.CardNum && o.State == 3 && o.Auto == 1).FirstOrDefault(); } if (baseUsers.CardStae == 2) { #region 推广人处理 if (!baseUsers.MyPId.IsNullOrEmpty()) { #region 分享 if (baseUsers.ShareType == 2) { //支付通道升级推广 PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == baseUsers.PayConfigId && n.State == 1 && n.ShareNumber > 0); if (PCC != null) { //仅统计降费率的人数 int count = Entity.Users.Count(n => n.CardStae == 2 && n.State == 1 && n.MyPId == baseUsers.MyPId && n.PayConfigId == baseUsers.PayConfigId && n.ShareType == 2); count++; //这里统计会漏掉当前用户的,需要增加1个。 if (count == PCC.ShareNumber) { //相等的那一次调整,避免超出了还一直调整 Users UP = Entity.Users.FirstOrDefault(n => n.Id == baseUsers.MyPId); //读取分享人,不能加ShareType if (PCC.CState == 1) { if (UP.Cash0 > PCC.Cash0) { UP.Cash0 = PCC.Cash0; } if (UP.ECash0 > PCC.ECash0) { UP.ECash0 = PCC.ECash0; } } if (PCC.EState == 1) { if (UP.Cash1 > PCC.Cash1) { UP.Cash1 = PCC.Cash1; } if (UP.ECash1 > PCC.ECash1) { UP.ECash1 = PCC.ECash1; } } IList <UserPay> List = Entity.UserPay.Where(n => n.UId == UP.Id).ToList();//获取用户配置 foreach (var p in List) { PayConfigTemp PCT = Entity.PayConfigTemp.FirstOrDefault(n => n.PId == p.PId && n.PCCId == PCC.Id); //获取套餐配置 if (PCT != null) { if (PCT.State == 1) { if (p.Cost > PCT.Cost) { p.Cost = PCT.Cost; } } } } UP.ClearCache(this.Entity); } } } if (baseUsers.ShareType == 1) { //增加推广抽奖次数 TurnUsers TurnUsers = Entity.TurnUsers.FirstOrNew(n => n.UId == baseUsers.MyPId); if (!TurnUsers.Id.IsNullOrEmpty()) { TurnUsers.Times++; } } #endregion #region 分享统计 //===================================增加分享统计数=================================== //获取用户所属各级分润配置 IList <UserPromoteGet> UserPromoteGetList = Entity.UserPromoteGet.Where(n => n.AgentID == baseUsers.Agent).OrderBy(n => n.PromoteLevel).ToList(); int MaxLevel = UserPromoteGetList.Count(); //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0 IList <Users> UsersList = baseUsers.GetUsersById(Entity, MaxLevel); foreach (var U in UsersList.Where(n => n.Tier > 0)) { ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier); if (ShareTotal == null) { ShareTotal = new ShareTotal(); ShareTotal.UId = U.Id; ShareTotal.AddTime = DateTime.Now; ShareTotal.ShareNum = 1; ShareTotal.Amount = 0; ShareTotal.Profit = 0; ShareTotal.Tier = U.Tier; Entity.ShareTotal.AddObject(ShareTotal); } else { ShareTotal.ShareNum += 1; } Entity.SaveChanges(); } //===================================增加分享统计数 End=================================== #endregion } #endregion #region 激活码处理 if (Card != null) { //代理商信息 baseUsers.Agent = Card.AId; baseUsers.AId = Card.AdminId; //推广信息 if (!Card.PUId.IsNullOrEmpty()) { if (baseUsers.MyPId.IsNullOrEmpty()) {//不是费率升级推广才有效 baseUsers.MyPId = Card.PUId; baseUsers.PayConfigId = 0; baseUsers.ShareType = 1; } } Card.State = 2; } #endregion } else//审核失败 { baseUsers.CardNum = ""; if (Card != null) { Card.State = 1; } } Entity.SaveChanges(); baseUsers.PushMsg();//推送消息 BaseRedirect(); }