using System; using System.Data; using System.Linq; using System.Web.Mvc; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Util; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.WeiXin { public class CommissionRuleController : BaseController { private readonly IWX_COMMISSIONRULE _wxCommissionrule; private readonly IWX_SZZYORDER _wxSzzyorder; private readonly ICACHE_Q _cache; private SEQUENCES_BL _sequencesBl = new SEQUENCES_BL(); ValidationErrors errors = new ValidationErrors(); public CommissionRuleController(IWX_COMMISSIONRULE wxCommissionrule, IWX_SZZYORDER wxSzzyorder, ICACHE_Q cache) { _wxCommissionrule = wxCommissionrule; _wxSzzyorder = wxSzzyorder; _cache = cache; } [HttpGet] [AuthorizeToolBar(InitRights.CONST_证星订单分成, InitToolBar.CONST_Add)] public ActionResult Edit() { decimal orderId = 0; decimal.TryParse(Request["orderid"], out orderId); var wxSzzyOrder = _wxSzzyorder.Get(p => p.ORDERID == orderId); if (wxSzzyOrder == null) { return JsonHandler.ManageMessage("参数错误,请确认!", false); } var model = new WX_COMMISSIONRULE_VIEW(); if (orderId > 0) { model.WxSzzyOrder = wxSzzyOrder; var wxCommissionRule = _wxCommissionrule.GetList(p => p.ORDERID == orderId).OrderBy(p => p.PKID); #region 加载分成显示 var i = 0; foreach (var wxCommissionrule in wxCommissionRule) { switch (i) { case 0: model.item0.EID = InnerUserHelper.Instance.GetEidByUserId(wxCommissionrule.SALEUSERID); model.item0.COMMISSIONRATIO = wxCommissionrule.COMMISSIONRATIO; model.item0.ISMAIN = wxCommissionrule.ISMAIN; model.item0.GID = wxCommissionrule.GID; break; case 1: model.item1.EID = InnerUserHelper.Instance.GetEidByUserId(wxCommissionrule.SALEUSERID); model.item1.COMMISSIONRATIO = wxCommissionrule.COMMISSIONRATIO; model.item1.ISMAIN = wxCommissionrule.ISMAIN; model.item1.GID = wxCommissionrule.GID; break; case 2: model.item2.EID = InnerUserHelper.Instance.GetEidByUserId(wxCommissionrule.SALEUSERID); model.item2.COMMISSIONRATIO = wxCommissionrule.COMMISSIONRATIO; model.item2.ISMAIN = wxCommissionrule.ISMAIN; model.item2.GID = wxCommissionrule.GID; break; case 3: model.item3.EID = InnerUserHelper.Instance.GetEidByUserId(wxCommissionrule.SALEUSERID); model.item3.COMMISSIONRATIO = wxCommissionrule.COMMISSIONRATIO; model.item3.ISMAIN = wxCommissionrule.ISMAIN; model.item3.GID = wxCommissionrule.GID; break; case 4: model.item4.EID = InnerUserHelper.Instance.GetEidByUserId(wxCommissionrule.SALEUSERID); model.item4.COMMISSIONRATIO = wxCommissionrule.COMMISSIONRATIO; model.item4.ISMAIN = wxCommissionrule.ISMAIN; model.item4.GID = wxCommissionrule.GID; break; case 5: model.item5.EID = InnerUserHelper.Instance.GetEidByUserId(wxCommissionrule.SALEUSERID); model.item5.COMMISSIONRATIO = wxCommissionrule.COMMISSIONRATIO; model.item5.ISMAIN = wxCommissionrule.ISMAIN; model.item5.GID = wxCommissionrule.GID; break; case 6: model.item6.EID = InnerUserHelper.Instance.GetEidByUserId(wxCommissionrule.SALEUSERID); model.item6.COMMISSIONRATIO = wxCommissionrule.COMMISSIONRATIO; model.item6.ISMAIN = wxCommissionrule.ISMAIN; model.item6.GID = wxCommissionrule.GID; break; } i++; } #endregion #region 升级订单统计 ViewBag.upgradeCount = _wxSzzyorder.CountUpgradeOrder(orderId); #endregion } return View(model); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_证星订单分成, InitToolBar.CONST_Add)] public JsonResult Edit(WX_COMMISSIONRULE_VIEW info) { try { string v_str = string.Empty; if (!ValidationRatio(info, out v_str)) { errors.Add(v_str); return JsonHandler.ManageMessage(errors, false); } //if (CheckHasGrouper(info)) //{ // return JsonHandler.ManageMessage("分成人中不能包含主管,请确认!", false); //} decimal orderId = info.WxSzzyOrder.ORDERID; var orderModel = _wxSzzyorder.Get(p => p.ORDERID == orderId); if (orderModel == null) { return JsonHandler.ManageMessage("未查找到订单,请确认!", false); } //if (orderModel.ISFINANCEPAY.HasValue && orderModel.ISFINANCEPAY.Value == 1) //{ // return JsonHandler.ManageMessage("已经月结,不能执行该操作!", false); //} string roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); if (!(roleCodes.Contains("[CW]") || roleCodes.Contains("[ZJZL]") || roleCodes.Contains("[SDZJ]"))) { if (!CheckDate(orderModel)) { return JsonHandler.ManageMessage("只能当天申请分成,请确认!", false); } } var isExists = _wxCommissionrule.Exists(p => p.ORDERID == orderId); if (!isExists) { _wxCommissionrule.CreateWxCommissionRuleList(info, UserId); } else { _wxCommissionrule.Delete(p => p.ORDERID == orderId); _wxCommissionrule.CreateWxCommissionRuleList(info, UserId); } #region 最后检查订单入库是否正确 var ruleList = _wxCommissionrule.GetList(p => p.ORDERID == orderId); decimal sumCommissionRatio = 0; foreach (var item in ruleList) { sumCommissionRatio += item.COMMISSIONRATIO; } if (sumCommissionRatio != 100) { return JsonHandler.ManageMessage("分成比例入库有误,请重新操作!", true); } #endregion return JsonHandler.ManageMessage("操作成功!", true); } catch (Exception ex) { LogHelper.Error("CommissionRuleController/Edit:" + ex.Message); return JsonHandler.ManageMessage(ex.Message, false); } } public string GetUserByEid(int EID) { var userName = InnerUserHelper.Instance.GetUsername(InnerUserHelper.Instance.GetUserIdByEid(EID)); if (string.IsNullOrEmpty(userName)) return string.Empty; decimal? deptId = 0; var inneruser = new CACHE_BL().GetUserList().FirstOrDefault(n => n.EID == EID); if (inneruser != null) { var dept = new CACHE_BL().GetList_InnerUserGroup().FirstOrDefault(n => n.INNERUSERID == inneruser.PKID); if (dept != null) { deptId = dept.GID.HasValue ? dept.GID : dept.DEPTID; } } //var isGrouper = _cache.GetGroupleaders().Any(p => p.EID == EID); //if (isGrouper) //{ // return userName + "," + "1"; //} return userName + "," + "0" + "," + deptId; } #region 验证分成比例合计 private bool ValidationRatio(WX_COMMISSIONRULE_VIEW model, out string errorstr) { errorstr = ""; decimal sum = 0; if (model.item0.EID > 0) sum += model.item0.COMMISSIONRATIO.GetValueOrDefault(0); if (model.item1.EID > 0) sum += model.item1.COMMISSIONRATIO.GetValueOrDefault(0); if (model.item2.EID > 0) sum += model.item2.COMMISSIONRATIO.GetValueOrDefault(0); if (model.item3.EID > 0) sum += model.item3.COMMISSIONRATIO.GetValueOrDefault(0); if (model.item4.EID > 0) sum += model.item4.COMMISSIONRATIO.GetValueOrDefault(0); if (model.item5.EID > 0) sum += model.item5.COMMISSIONRATIO.GetValueOrDefault(0); if (model.item6.EID > 0) sum += model.item6.COMMISSIONRATIO.GetValueOrDefault(0); if (sum == 100) return true; errorstr = "分成合计不等于100%!"; return false; } #endregion private bool CheckHasGrouper(WX_COMMISSIONRULE_VIEW model) { var groupers = _cache.GetGroupleaders(); int sum = 0; if (model.item0.EID > 0) sum += groupers.Count(p => p.EID == model.item0.EID); if (model.item1.EID > 0) sum += groupers.Count(p => p.EID == model.item1.EID); if (model.item2.EID > 0) sum += groupers.Count(p => p.EID == model.item2.EID); if (model.item3.EID > 0) sum += groupers.Count(p => p.EID == model.item3.EID); if (model.item4.EID > 0) sum += groupers.Count(p => p.EID == model.item4.EID); if (model.item5.EID > 0) sum += groupers.Count(p => p.EID == model.item5.EID); if (model.item6.EID > 0) sum += groupers.Count(p => p.EID == model.item6.EID); if (sum > 0) return true; return false; } private bool CheckDate(WX_SZZYORDER order) { //未开通订单都能修改,不影响业绩,已开通的必须开通当天填写分成 if (order.ISOPEN == 0) return true; var today = DateTime.Parse(DateTime.Now.Date.ToString()); var tomorrow = DateTime.Parse(DateTime.Now.Date.AddDays(1).ToString()); return order.OTIME > today && order.OTIME < tomorrow; } } }