ComplianceServer/oldcode/BLL/Res/RES_CUSTOMERDETAIL_BL.cs

277 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Data.Entity.Validation;
using System.Linq;
using WX.CRM.BLL.RedisBL;
using WX.CRM.BLL.Wx;
using WX.CRM.Common;
using WX.CRM.DAL.Res;
using WX.CRM.DAL.Util;
using WX.CRM.IBLL.Res;
using WX.CRM.Model.Entity;
using WX.CRM.Model.EntitySync;
namespace WX.CRM.BLL.Res
{
public class RES_CUSTOMERDETAIL_BL : DbContextRepository<RES_CUSTOMERDETAIL>, IRES_CUSTOMERDETAIL, IRES_CUSTOMERDETAIL_Q
{
private readonly ReadOrWriteFromRedis_BL redisBl = new ReadOrWriteFromRedis_BL();
private readonly CUSTOMER_DAL _customerDal = new CUSTOMER_DAL();
#region
public RES_CUSTOMERDETAIL GetModel_RES_CUSTOMERDETAIL(string resId)
{
////取redis
//WX.CRM.IBLL.Redis.IRedisHelper rd = new WX.CRM.BLL.Redis.RedisHelper();
//try
//{
// var o = rd.Get<RES_CUSTOMERDETAIL>(KeysDic.GetKey<RES_CUSTOMERDETAIL>(resId));
// o.RES_CUSTOMER = rd.Get<RES_CUSTOMER>(KeysDic.GetKey<RES_CUSTOMERDETAIL>(resId));
// if (o != null && o.RES_CUSTOMER != null)
// return o;
//}
//catch { }
////取ora
using (var db = new WX.CRM.Model.Entity.crmContext())
{
resId = resId.Trim();
RES_CUSTOMERDETAIL entry = db.RES_CUSTOMERDETAIL.FirstOrDefault(m => m.RESID == resId || m.UMID == resId);
////写入redis
////------------------------------------------------------------------------------------------------
//var rc = db.RES_CUSTOMER.FirstOrDefault(p => p.RESID == resId);
//rd.AddToCache<RES_CUSTOMERDETAIL>(KeysDic.GetKey<RES_CUSTOMERDETAIL>(resId), entry);
//rd.AddToCache<RES_CUSTOMER>(KeysDic.GetKey<RES_CUSTOMER>(resId), rc);
////------------------------------------------------------------------------------------------------
return entry;
}
}
public RES_CUSTOMERDETAIL GetModel_RES_CUSTOMERDETAIL_UMID(string umid)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
umid = umid.Trim();
RES_CUSTOMERDETAIL entry = db.RES_CUSTOMERDETAIL.FirstOrDefault(m => m.UMID == umid);
return entry;
}
}
#endregion
#region
public bool Update(ref ValidationErrors errors, WX.CRM.Model.Entity.RES_CUSTOMER model)
{
try
{
using (var db = new crmContext())
{
var entry = db.RES_CUSTOMERDETAIL.FirstOrDefault(m => m.RESID == model.RESID);
if (entry == null)
return false;
entry.CNAME = model.map_CNAME;
entry.PRIMARYNUMBERADDRESS = model.map_PRIMARYNUMBERADDRESS;
entry.PROVINCEID = model.map_PROVINCEID;
entry.CITYID = model.map_CITY;
entry.GENDER = model.map_GENDER;
entry.CUSTOMERTYPEID = model.map_CUSTOMERTYPEID;
entry.AMOUNTTYPEID = model.map_AMOUNTTYPEID;
entry.JOBTYPEID = model.map_JOBTYPEID;
entry.OPERATIONTYPE = model.map_OPERATIONTYPE;
entry.EMAIL = model.map_EMAIL;
entry.FAX = model.map_FAX;
entry.MSN = model.map_MSN;
entry.ADDRESS = model.map_ADDRESS;
entry.UTIME = DateTime.Now;
entry.UPDATEUSER = model.map_UPDATEUSER;
entry.CUSTOMERCATEGORY = model.map_CustomerCategory;
entry.BIRTHDAYAREA = model.RES_CUSTOMERDETAIL.BIRTHDAYAREA;
entry.DEALER = model.RES_CUSTOMERDETAIL.DEALER;
entry.OPERATIONTIME = model.RES_CUSTOMERDETAIL.OPERATIONTIME;
entry.FREQUENCY = model.RES_CUSTOMERDETAIL.FREQUENCY;
entry.STOCKPOSITION = model.RES_CUSTOMERDETAIL.STOCKPOSITION;
entry.GUPIAO = model.RES_CUSTOMERDETAIL.GUPIAO;
entry.RISKTOLERANCE = model.RES_CUSTOMERDETAIL.RISKTOLERANCE;
entry.PROFITANDLOSS = model.RES_CUSTOMERDETAIL.PROFITANDLOSS;
db.SaveChanges();
new WX_SZZYORDER_REFUND_BL().updateSzzyOrderCname(model.RESID, model.map_CNAME);
//AddToRedis(entry);
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
public bool UpdateStatus(ref ValidationErrors errors, RES_CUSTOMERDETAIL detail)
{
try
{
using (var db = new crmContext())
{
var entry = db.RES_CUSTOMERDETAIL.FirstOrDefault(m => m.RESID == detail.RESID);
if (entry == null)
return false;
entry.ISPRIMARYNUM = detail.ISPRIMARYNUM;
entry.UTIME = DateTime.Now;
db.SaveChanges();
return true;
}
}
catch (DbEntityValidationException dbEx)
{
string verror = "";
foreach (var eve in dbEx.EntityValidationErrors)
{
verror += string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
verror += string.Format("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
LogHelper.Error(verror);
return false;
}
catch (Exception ex)
{
LogHelper.Error(ex);
errors.Add(ex.Message);
return false;
}
}
public bool UpdateZJL(ref ValidationErrors errors, RES_CUSTOMERDETAIL detail)
{
try
{
using (var db = new crmContext())
{
var entry = db.RES_CUSTOMERDETAIL.FirstOrDefault(m => m.RESID == detail.RESID);
if (entry == null)
return false;
entry.AMOUNTTYPEID = detail.AMOUNTTYPEID;//修改资金量
entry.UTIME = DateTime.Now;
db.SaveChanges();
return true;
}
}
catch (DbEntityValidationException dbEx)
{
string verror = "";
foreach (var eve in dbEx.EntityValidationErrors)
LogHelper.Error(verror);
return false;
}
catch (Exception ex)
{
LogHelper.Error(ex);
errors.Add(ex.Message);
return false;
}
}
public bool UpdateVisitStatus(RES_CUSTOMERDETAIL detail)
{
try
{
using (var db = new crmContext())
{
var entry = db.RES_CUSTOMERDETAIL.FirstOrDefault(m => m.RESID == detail.RESID);
if (entry == null)
return false;
entry.VISITSTATUS = detail.VISITSTATUS;
entry.VISITTIME = detail.VISITTIME;
entry.VISITUSER = detail.VISITUSER;
entry.VISITREMARK = detail.VISITREMARK;
db.SaveChanges();
return true;
}
}
catch (Exception ex)
{
throw ex;
}
}
public bool UpdateCategoryDic(Dictionary<string, string> dic)
{
try
{
//using (var db = new crmContext())
//{
// foreach (var item in dic)
// {
// var entry = db.RES_CUSTOMERDETAIL.FirstOrDefault(m => m.RESID == item.Key);
// if (entry == null)
// continue;
// entry.CUSTOMERCATEGORY = item.Value;
// db.SaveChanges();
// }
//}
DataTableHelper dtHelper = new DataTableHelper();
dtHelper.AddColumn("resid");
dtHelper.AddColumn("customercategory");
var dt = dtHelper.GetDataTable;
foreach (var item in dic)
{
var row = dt.NewRow();
row[0] = item.Key;
row[1] = item.Value;
dt.Rows.Add(row);
}
new OracleBulk_DAL().OracleBulkInsert("a_customercategory", dt);
new RES_DISTRIBUTE_DAL().UpdateCategory();
return true;
}
catch (Exception ex)
{
return false;
}
}
private void AddToRedis(RES_CUSTOMERDETAIL detail, bool redisResult = true)
{
redisBl.AddRedis_Res_CustomerDetail(detail, out redisResult);
if (!redisResult)
{
#region redis
REDIS_CACHE_SSODATASYNC redisMoel1 = new REDIS_CACHE_SSODATASYNC();
redisMoel1.TABLETYPE = "res_customerdetail";
redisMoel1.KEYS = detail.RESID;
redisMoel1.OPTYPE = "A";
redisMoel1.TIME = DateTime.Now;
redisMoel1.LASTSYNCTIME = DateTime.Now;
redisMoel1.ERRNUM = 0;
redisMoel1.ERRMSG = "";
new REDIS_CACHE_SSODATASYNC_BL().Create_RedisCacheSSODataSYNC(redisMoel1);
#endregion
}
}
public void SetMobileBelongToArea(string belongToMobile, string resId)
{
_customerDal.SetMobileBelongToArea(belongToMobile, resId);
}
#endregion
}
}