TG.WXCRM.V4/BLL/Res/RES_DEPT_RULE_BL.cs

127 lines
4.2 KiB
C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Res;
using WX.CRM.Model.Entity;
namespace WX.CRM.BLL.Res
{
public class RES_DEPT_RULE_BL : DbContextRepository<RES_DEPT_RULE>, IRES_DEPT_RULE
{
private readonly CACHE_BL _cache = new CACHE_BL();
public List<DeptRuleView> GetDeptRule()
{
var businessDept = _cache.GetValue_Parameter("BusinessDept");
var depts = new List<BAS_SALESDEPARTMENT>();
if (string.IsNullOrEmpty(businessDept))
{
depts = _cache.GetList_SalesDepartMent();
}
else
{
var businessArr = businessDept.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select<string, decimal>(x => Convert.ToDecimal(x)).ToArray();
depts = _cache.GetList_SalesDepartMent().Where(p => businessArr.Contains(p.SALEDEPTID)).ToList();
}
var rules = GetList();
var list = new List<DeptRuleView>();
foreach (var item in depts.OrderBy(p => p.CREATIONDATE))
{
var info = new DeptRuleView()
{
DEPTID = item.SALEDEPTID,
DEPTNAME = item.DEPTNAME
};
var rule = rules.FirstOrDefault(p => p.DEPTID == info.DEPTID);
if (rule != null)
{
info.RATE = rule.RATE;
}
list.Add(info);
}
return list;
}
public bool Save(List<DeptRuleView> dto)
{
try
{
var ch = Utility.GetSettingOrNullByKey("Channel");
var url = _cache.GetValue_Parameter("Core_ZxdService_ResDeptRule");
if (string.IsNullOrEmpty(url))
{
LogHelper.Info("Core_ZxdService_ResDeptRule:未配置");
return false;
}
if (string.IsNullOrEmpty(ch))
{
LogHelper.Info("渠道号:未配置");
return false;
}
var depts = _cache.GetList_SalesDepartMent();
var rules = GetList();
foreach (var item in rules)
{
Delete(item);
}
var list = new List<RES_DEPT_RULE>();
var paraList = new List<ResDeptRuleDto>();
foreach (var item in dto)
{
paraList.Add(new ResDeptRuleDto()
{
ch = Convert.ToInt32(ch),
crmdeptid = Convert.ToInt32(item.DEPTID),
num = Convert.ToInt32(item.RATE)
}
);
var info = new RES_DEPT_RULE()
{
DEPTID = item.DEPTID,
DEPTNAME = item.DEPTNAME,
RATE = item.RATE,
CTIME = DateTime.Now
};
var dept = depts.Where(p => p.SALEDEPTID == item.DEPTID);
if (dept != null)
{
info.DEPTNAME = item.DEPTNAME;
}
list.Add(info);
}
if (!paraList.Any())
{
paraList.Add(new ResDeptRuleDto() { ch = Convert.ToInt32(ch), crmdeptid = 0, num = 0 });
}
var para = paraList.ToJson();
LogHelper.Info("para:" + para);
var rsp = Utility.PostAjaxData(url, para, Encoding.UTF8);
var rspObj = JsonConvert.DeserializeAnonymousType(rsp, new { result = false, retcode = 0, retmsg = string.Empty });
if (rspObj.result)
{
AddList(list);
}
return rspObj.result;
}
catch (Exception ex)
{
LogHelper.Error(ex);
return false;
}
}
}
}