258 lines
11 KiB
C#
258 lines
11 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|