TG.WXCRM.V4/WX.CRM.DataSynFactory/Cmd/Client_SubProduct_IMP.cs

231 lines
11 KiB
C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Wx;
using WX.CRM.Common;
using WX.CRM.DataSynFactory.Templates;
namespace WX.CRM.DataSynFactory.Cmd
{
public class Client_SubProduct_IMP : Interfaces.IDataImportSvr<Client_SubProduct>
{
private readonly WX_SZZYSUBPRODUCT_BL _subProduct = new WX_SZZYSUBPRODUCT_BL();
private readonly WX_SZZYMIDPRODUCT_BL _midProduct = new WX_SZZYMIDPRODUCT_BL();
public bool GenerateBusinessOne(Client_SubProduct t)
{
try
{
LogHelper.Info(t.ToJson());
var subProduct = _subProduct.Get(p => p.SUBPRODUCTID == t.SUBPRODUCTID);
if (subProduct == null)
{
subProduct = new Model.Entity.WX_SZZYSUBPRODUCT()
{
SUBPRODUCTID = t.SUBPRODUCTID,
PRODUCTID = t.PRODUCTID,
SUBPRODUCTNAME = t.SUBPRODUCTNAME,
SUBPRODUCTDESC = t.SUBPRODUCTDESC,
PRICE = t.PRICE,
RIGHTPERIOD = t.RIGHTPERIOD,
RIGHTUNIT = t.RIGHTUNIT,
ISVALID = t.ISVALID,
ORDEROPENTYPE = t.ORDEROPENTYPE,
OPENDATE = t.OPENDATE,
ENDDATE = t.ENDDATE,
SORT = t.SORT,
PRODUCTALIAS = t.PRODUCTALIAS,
PRODUCTCODE = t.PRODUCTCODE,
PRODUCTTYPE = t.PRODUCTTYPE,
PRODUCTLEVEL = t.PRODUCTLEVEL,
PRODUCTINVESTTIME = t.PRODUCTINVESTTIME,
PRODUCTINVESTTYPE = t.PRODUCTINVESTTYPE,
MID = t.Mid.HasValue ? Convert.ToDecimal(t.Mid) : 0,
ISGIFT = t.IsGift.HasValue ? t.IsGift.Value : 0,
ISONLINEBUY = t.IsOnlineBuy.HasValue ? Convert.ToDecimal(t.IsOnlineBuy.Value) : 0,
BUYLINK = t.BuyLink,
CANUPGRADE = t.CanUpgrade,
CATEGORY = t.Category,
CALLBACKLINK = t.CallBackLink,
MIDPRODUCTID = t.MidProductId.HasValue ? t.MidProductId.Value : 0,
ISCOMPLIANCE = t.IsCompliance,
MIDS = t.Mids,
CLOSEUPGRADEROLE = t.CloseUpgradeRole.HasValue ? Convert.ToDecimal(t.CloseUpgradeRole.Value) : 0,
THIRDORDERCATE = t.ThirdOrderCate.HasValue ? Convert.ToDecimal(t.ThirdOrderCate.Value) : 0,
ATT = t.Att,
REMARK = t.Remark,
PRODUCTEXT = t.ProductExt,
DISCOUNT = t.DISCOUNT,
CUSTOMPRICE = t.CUSTOMPRICE,
ISDISCOUNT = t.ISDISCOUNT,
ISSHOW = 1,
DELIVER_TYPE=t.deliverType,
DELIVER_PERMISSION=t.deliverPermission,
DELIVER_URL=t.deliverUrl,
MODULES = t.modules
//CHANNEL = t.Channel.HasValue ? Convert.ToDecimal(t.Channel.Value):0,
//COMPANYCODE = t.CompanyCode
};
_subProduct.Add(subProduct);
//坐席增加产品小类
var midProduct = _midProduct.Get(p => p.MIDPRODUCTID == subProduct.MIDPRODUCTID);
if (midProduct == null)
{
var sort = 0;
var list = _midProduct.GetList();
if (list != null && list.Any())
{
sort = Convert.ToInt32(list.Max(p => p.SORT) + 1);
}
midProduct = new Model.Entity.WX_SZZYMIDPRODUCT()
{
MIDPRODUCTID = subProduct.MIDPRODUCTID,
PRODUCTID = subProduct.PRODUCTID,
MIDPRODUCTNAME = t.productTxt3,
SORT = sort
};
LogHelper.Info("midProduct:" + midProduct.ToJson());
_midProduct.Add(midProduct);
}
}
else
{
if (subProduct.ISVALID == 0 && t.ISVALID == 1)//修改了上线状态
{
subProduct.ISSHOW = 1;
}
subProduct.PRODUCTID = t.PRODUCTID;
subProduct.SUBPRODUCTNAME = t.SUBPRODUCTNAME;
subProduct.SUBPRODUCTDESC = t.SUBPRODUCTDESC;
subProduct.PRICE = t.PRICE;
subProduct.RIGHTPERIOD = t.RIGHTPERIOD;
subProduct.RIGHTUNIT = t.RIGHTUNIT;
subProduct.ISVALID = t.ISVALID;
subProduct.ORDEROPENTYPE = t.ORDEROPENTYPE;
subProduct.OPENDATE = t.OPENDATE;
subProduct.ENDDATE = t.ENDDATE;
subProduct.SORT = t.SORT;
subProduct.PRODUCTALIAS = t.PRODUCTALIAS;
subProduct.PRODUCTCODE = t.PRODUCTCODE;
subProduct.PRODUCTTYPE = t.PRODUCTTYPE;
subProduct.PRODUCTLEVEL = t.PRODUCTLEVEL;
subProduct.PRODUCTINVESTTIME = t.PRODUCTINVESTTIME;
subProduct.PRODUCTINVESTTYPE = t.PRODUCTINVESTTYPE;
subProduct.MID = t.Mid.HasValue ? Convert.ToDecimal(t.Mid.Value) : 0;
subProduct.ISGIFT = t.IsGift ?? 0;
subProduct.ISONLINEBUY = t.IsOnlineBuy;
subProduct.BUYLINK = t.BuyLink;
subProduct.CANUPGRADE = t.CanUpgrade;
subProduct.CATEGORY = t.Category;
subProduct.CALLBACKLINK = t.CallBackLink;
subProduct.MIDPRODUCTID = t.MidProductId.HasValue ? t.MidProductId.Value : 0;
subProduct.ISCOMPLIANCE = t.IsCompliance;
subProduct.MIDS = t.Mids;
subProduct.CLOSEUPGRADEROLE = t.CloseUpgradeRole ?? 0;
subProduct.THIRDORDERCATE = t.ThirdOrderCate ?? 0;
subProduct.ATT = t.Att;
subProduct.REMARK = t.Remark;
subProduct.PRODUCTEXT = t.ProductExt;
subProduct.DISCOUNT = t.DISCOUNT;
subProduct.CUSTOMPRICE = t.CUSTOMPRICE;
subProduct.ISDISCOUNT = t.ISDISCOUNT;
subProduct.DELIVER_TYPE = t.deliverType;
subProduct.DELIVER_PERMISSION = t.deliverPermission;
subProduct.DELIVER_URL = t.deliverUrl;
subProduct.ISDISCOUNTAREA = t.isdiscountarea;
subProduct.MODULES = t.modules;
if(!string.IsNullOrEmpty(t.discountarea))
{
var discountAreaList = new List<DiscountArea>();
var discountAreaObj = JsonConvert.DeserializeObject<List<DiscountArea>>(t.discountarea);
if (!string.IsNullOrEmpty(subProduct.DISCOUNTAREA))
{
discountAreaList = JsonConvert.DeserializeObject<List<DiscountArea>>(subProduct.DISCOUNTAREA);
foreach (var item in discountAreaObj)
{
var area = discountAreaList.Find(p => p.Id == item.Id);
//找不到对象,说明是新增
if (area == null)
{
area = new DiscountArea() { Id = item.Id, Min = item.Min, Max = item.Max, MinRate = item.MinRate, MaxRate = item.MaxRate, IsShow = 0 };
discountAreaList.Add(area);
}
else
{
area.Min = item.Min;
area.Max = item.Max;
area.MinRate = item.MinRate;
area.MaxRate = item.MaxRate;
if (!item.Min.HasValue && !item.Max.HasValue)
{
area.IsShow = 0;
}
}
}
}
else
{
discountAreaList = discountAreaObj;
}
subProduct.DISCOUNTAREA = JsonConvert.SerializeObject(discountAreaList);
LogHelper.Info("DISCOUNTAREA=>" + subProduct.DISCOUNTAREA);
}
//subProduct.ISSHOW = t.ISVALID;
_subProduct.Update(subProduct);
//坐席增加产品小类
var midProduct = _midProduct.Get(p => p.MIDPRODUCTID == subProduct.MIDPRODUCTID);
if (midProduct == null)
{
var sort = 0;
var list = _midProduct.GetList();
if (list != null && list.Any())
{
sort = Convert.ToInt32(list.Max(p => p.SORT) + 1);
}
midProduct = new Model.Entity.WX_SZZYMIDPRODUCT()
{
MIDPRODUCTID = subProduct.MIDPRODUCTID,
PRODUCTID = subProduct.PRODUCTID,
MIDPRODUCTNAME = t.productTxt3,
SORT = sort
};
LogHelper.Info("midProduct:" + midProduct.ToJson());
_midProduct.Add(midProduct);
}
else
{
midProduct.MIDPRODUCTNAME = t.productTxt3;
_midProduct.Update(midProduct);
}
}
return true;
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return false;
}
}
}
public class DiscountArea
{
public int Id { get; set; }
public decimal? Min { get; set; }
public decimal? Max { get; set; }
public decimal? MinRate { get; set; }
public decimal? MaxRate { get; set; }
public int IsShow { get; set; }
}
}