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