//using CRM.Core.DTO; using System; using System.Linq; using WX.CRM.BLL.Base; using WX.CRM.BLL.Csvr; using WX.CRM.BLL.Res; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.Model.Entity; namespace WX.CRM.BLL.Soft { /// /// 抓取接口数据,旧系统为JMDUSER /// public class GET_REGUSER { private CACHE_BL cacheQ = new CACHE_BL(); //RES_ACTIVITY_BL _resActivityQ = new RES_ACTIVITY_BL(); private CSVR_FAVORITECUSTOMER_BL _favCustomerQ = new CSVR_FAVORITECUSTOMER_BL(); private CSVR_TODOITEM_BL _todoItem = new CSVR_TODOITEM_BL(); //RES_DISTRIBUTE_DETAIL_BL _resDistributeDetial = new RES_DISTRIBUTE_DETAIL_BL(); private RES_APPLY_BL _apply = new RES_APPLY_BL(); private RES_MYALLOCATERES_BL _resMyAllocateRes = new RES_MYALLOCATERES_BL(); private BAS_INNERUSER_BL _user = new BAS_INNERUSER_BL(); private BAS_PARAMETER_BL _para = new BAS_PARAMETER_BL(); /*接口返回的字符串:18696548545,5001,6201075,5001,2013-8-7 13:54:16【手机号,标签,卡号,用户名,注册时间】*/ /// /// 从接口抓取到的注册用户,旧系统名称为jmdUser /// /// 手机号 /// 注册标签 /// 卡号 /// 用户名 /// 注册时间 public void RegUser(string mobile, string tag, string cardNo, string userName, DateTime? regDate, int companyId, string activeMobile = null, string platform = null, string jsonData = null, string dataType = null, string extXML = null, string kWord = null, string eid = null, string openid = null, string openplat = null, string unionid = null, string liveCode = null, string regSource = null, string refeid = null, int? sgid = null) { ValidationErrors errors = new ValidationErrors(); try { var userList = cacheQ.GetUserList(); var pici = new SEQUENCES_BL().Seq_base_get(); var v_resid = string.Empty; var v_umid = string.Empty; if (!string.IsNullOrEmpty(mobile)) { v_resid = ResUtil.CreateResId(mobile); LogHelper.Info($"开始获取umid{v_resid}"); v_umid = cacheQ.GetUMid(mobile); new BLL.Res.RES_CUSTOMER_BL().ResgisterCustomer(mobile, v_resid, tag); } using (var db = new crmContext()) { //注册customer var regUser = db.SOFT_USER.FirstOrDefault(p => p.USERNAME == userName); if (regUser == null) { var softUser = new SOFT_USER(); softUser.USERNAME = userName; softUser.USERPASS = "string.Empty"; if (!string.IsNullOrEmpty(cardNo)) softUser.USERNO = decimal.Parse(cardNo); softUser.CTIME = System.DateTime.Now; softUser.COMPANYID = companyId; softUser.REGCAMPAINID = Convert.ToInt32(tag); softUser.REGDATE = regDate; softUser.RESID = v_resid; softUser.REGPLATFORM = platform ?? "0"; softUser.OPENID = openid;//***第三方用户ID*** softUser.OPENPLAT = openplat;//***第三方平台*** if (!string.IsNullOrWhiteSpace(refeid)) { softUser.EID = Convert.ToInt32(refeid); eid = refeid; } if (!string.IsNullOrEmpty(activeMobile)) { softUser.ISACTIVE = 1; softUser.ACTIVERESID = v_resid; softUser.ACTIVETIME = regDate; } if (!string.IsNullOrEmpty(unionid)) softUser.UNIONID = unionid; softUser.LIVECODE = liveCode; softUser.REGSOURCE = regSource; db.SOFT_USER.Add(softUser); } else { if (!string.IsNullOrWhiteSpace(refeid)) { regUser.EID = Convert.ToInt32(refeid); } if (!string.IsNullOrEmpty(unionid)) { regUser.UNIONID = unionid; } //LogHelper.Info("regUser.EID:" + regUser.EID.ToString() + ",regUser.UNIONID:" + regUser.UNIONID); } //分配EID不是空的,直接分配资源 if (!string.IsNullOrWhiteSpace(eid) && !string.IsNullOrEmpty(v_resid)) { var isExe = false; var myRes = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == v_resid); var para = _para.GetModel_Patameter("IgnoreManager"); if (para != null && myRes != null) { var manager = _user.GetModel(myRes.INNERUSERID); if (!string.IsNullOrEmpty(para.PARAVALUE)) { var manageList = para.PARAVALUE.Split(','); foreach (var item in manageList) { if (item == manager.EID.ToString()) { isExe = true; } } } } //如果不存在分配关系,才需要分配 if (myRes == null || isExe) { var eid32 = Convert.ToInt32(eid); //var user = userList.FirstOrDefault(p => p.EID == eid32); var user = _user.getInnerUserByEid(eid32); if (user != null) { var info = new RES_ALLCOTE_USER() { ID = new SEQUENCES_BL().Seq_base_get(), INNERUSERID = user.PKID, EID = eid32, NUM = 1, CTIME = DateTime.Now, PICI = pici, RESID = v_resid, TYPE = 1 }; if (sgid.HasValue) { info.SGID = sgid.Value; } db.RES_ALLCOTE_USER.Add(info); } } } db.SaveChanges(); } //资源绑定关系 if (!string.IsNullOrEmpty(v_resid)) { new BLL.Res.RES_CUSTOMERUSER_BL().ContractUser(v_resid, userName); } //资源分配关系 if (!string.IsNullOrWhiteSpace(eid) && !string.IsNullOrEmpty(v_resid)) { var eid1000 = userList.FirstOrDefault(p => p.EID == 10000).PKID; _resMyAllocateRes.ExeSeniorDistributeByResId(eid1000, pici, "扫码直接分配"); } //进入资源流程 if (!string.IsNullOrEmpty(mobile)) { ImportResApply(mobile, tag, cardNo, userName, regDate); } #region 提醒 if (!string.IsNullOrEmpty(v_resid)) { try { var user10000 = cacheQ.GetUserList().Find(p => p.EID == 10000).PKID; var favCustomer = _favCustomerQ.GetModel_FavoriteCustomer(v_resid, null); if (favCustomer != null) { //说明这个用户有人收藏,提醒业务员 var todoItem = new CSVR_TODOITEM() { PKID = new SEQUENCES_BL().Seq_base_get(), SENDEDUSERID = user10000, RECEIVEDUSERID = favCustomer.SALESID, ISPRIVATE = 1, RESID = v_resid, MEMO = "您收藏的客户注册了", STARTTIME = DateTime.Now, URL = "/Csvr/CustomerInfo/CustomerDetail?resid=" + v_resid, URLTITLE = "客户详细" }; _todoItem.Create(ref errors, todoItem); LogHelper.Info(todoItem.ToJson()); } } catch (Exception exx) { LogHelper.Error(exx.ToString()); } } #endregion 提醒 } catch (System.Data.Entity.Validation.DbEntityValidationException exception) { var errorMessages = exception.EntityValidationErrors .SelectMany(validationResult => validationResult.ValidationErrors) .Select(m => m.ErrorMessage); var fullErrorMessage = string.Join(", ", errorMessages); //记录日志 //Log.Error(fullErrorMessage); var exceptionMessage = string.Concat(exception.Message, " 验证异常消息是:", fullErrorMessage); LogHelper.Error(exceptionMessage); throw new System.Data.Entity.Validation.DbEntityValidationException(exceptionMessage, exception.EntityValidationErrors); } catch { throw; } } //public void BindUser(BindRegUserDto dto)//string username, string unionid, int eid, int ch) //{ // try // { // //var resid = string.Empty; // var userList = cacheQ.GetUserList(); // var isExe = true; // var pici = new SEQUENCES_BL().Seq_base_get(); // using (var db = new crmContext()) // { // var user = new SOFT_USER(); // if (!string.IsNullOrEmpty(dto.unionId)) // user = db.SOFT_USER.FirstOrDefault(p => p.UNIONID == dto.unionId); // if (!string.IsNullOrEmpty(dto.username)) // user = db.SOFT_USER.FirstOrDefault(p => p.USERNAME == dto.username); // if (user == null) // { // LogHelper.Info("找不到客户username:" + dto.username + "|||unionid:" + dto.unionId); // return; // } // if (string.IsNullOrEmpty(user.RESID)) // { // LogHelper.Info("客户资源resid为空:" + dto.username + " |||unionid:" + dto.unionId); // return; // } // //resid = user.RESID; // //user.EID = eid; // user.UNIONID = dto.unionId; // //LogHelper.Info("regUser.EID:" + user.EID.ToString() + ",regUser.UNIONID:" + user.UNIONID); // if (dto.eid > 0) // { // var eid32 = Convert.ToInt32(dto.eid); // //var userId = userList.FirstOrDefault(p => p.EID == eid32).PKID; // var userId = _user.getInnerUserByEid(eid32).PKID; // var info = new RES_ALLCOTE_USER() // { // ID = new SEQUENCES_BL().Seq_base_get(), // INNERUSERID = userId, // EID = eid32, // NUM = 1, // CTIME = DateTime.Now, // PICI = pici, // RESID = user.RESID, // TYPE = 1 // }; // if (dto.groupid.HasValue) // { // info.SGID = dto.groupid.Value; // } // var isExists = db.RES_MYALLOCATERES.Any(p => p.RESID == info.RESID); // var isFav = db.CSVR_FAVORITECUSTOMER.Any(p => p.RESID == info.RESID); // var isOrder = db.WX_SZZYORDER.Any(p => p.RESID == info.RESID && p.OTIME != null); // if (isExists) // { // var para = _para.GetModel_Patameter("IgnoreManager"); // if (para != null) // { // var myRes = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == info.RESID); // if (myRes != null) // { // var manager = _user.GetModel(myRes.INNERUSERID); // if (!string.IsNullOrEmpty(para.PARAVALUE)) // { // var manageList = para.PARAVALUE.Split(','); // foreach (var item in manageList) // { // if (item == manager.EID.ToString()) // { // isExists = false; // } // } // } // } // } // } // if (isExists || isFav || isOrder) // { // isExe = false; // } // else // { // db.RES_ALLCOTE_USER.Add(info); // db.SaveChanges(); // } // } // } // //资源分配关系 // if (dto.eid > 0 && isExe) // { // var eid1000 = userList.FirstOrDefault(p => p.EID == 10000).PKID; // _resMyAllocateRes.ExeSeniorDistributeByResId(eid1000, pici, "扫码直接分配"); // } // } // catch (Exception ex) // { // LogHelper.Error("更新软件用户:" + ex.ToString()); // } //} /// /// (当手机号不为空时时进入资源系统,等清洗)从接口抓取到的注册用户,旧系统名称为jmdUser /// /// 手机号 /// 注册标签 /// 卡号 /// 用户名 /// 注册时间 public bool ImportResApply(string mobile, string tag, string cardNo, string userName, DateTime? regDate, string jsonData = null, string dataType = null, string extXML = null, string kWord = null) { ValidationErrors errors = new ValidationErrors(); try { if (string.IsNullOrEmpty(mobile)) return true; //WX.CRM.Common.LogHelper.Error("ImportResApply**************************************************"); var model = new WX.CRM.Model.Entity.RES_APPLY { PKID = new Base.SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable), RESOURCETAG = tag, RESID = Common.ResUtil.CreateResId(mobile), USERNAME = userName, JSONDATA = jsonData, RTIME = regDate, JSONTYPE = 1, STATUS = 0, MOBILE = mobile.Trim(), DATATYPE = dataType, EXTXML = extXML, KWORD = kWord }; _apply.Create(ref errors, model); return true; } catch (Exception ex) { errors.Add(ex.Message + ex.StackTrace); //WX.CRM.Common.LogHelper.Error("----------"+ex.Message + ex.StackTrace); return false; } } public DateTime GetServiceLastExecTime() { DateTime rdate = System.DateTime.Now; try { WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext(); var par = db.BAS_PARAMETER.FirstOrDefault(p => p.PARAKEY.Trim() == "RegUserServiceExecLastTime" && p.GROUPID.Trim() == "SysServiceExecTime"); if (par != null) rdate = DateTime.Parse(par.PARAVALUE); else throw new Exception("RegUserServiceExecLastTime参数错误"); } catch { rdate = System.DateTime.Now; } return rdate; } public void UpdateExecLastTime(DateTime lastTime) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { var par = db.BAS_PARAMETER.FirstOrDefault(p => p.PARAKEY.Trim() == "RegUserServiceExecLastTime" && p.GROUPID.Trim() == "SysServiceExecTime"); if (par == null) { throw new Exception("RegUserServiceExecLastTime参数错误"); } par.PARAVALUE = lastTime.ToString(); db.SaveChanges(); } } } }