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, 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(KeysDic.GetKey(resId)); // o.RES_CUSTOMER = rd.Get(KeysDic.GetKey(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(KeysDic.GetKey(resId), entry); //rd.AddToCache(KeysDic.GetKey(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 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 } }