/// <summary> /// 登录验证 /// </summary> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="orgNo"></param> /// <param name="bgNo"></param> /// <param name="bizType"></param> /// <returns></returns> public async Task <SysUsrMstrDto> Login(string userName, string password, string orgNo, string bgNo, string bizType) { var log = new Log("Login/" + orgNo + ""); log.Write("userName:"******",password:"******""); var userInfo = new SysUsrMstr(); try { userName = userName.Trim(); password = password.Trim(); userInfo = _sysUsrMstrRepository.FirstOrDefault(c => (c.USR_NAME == userName || c.USR_MOBILE == userName) && c.ORG_NO == orgNo && c.BG_NO == bgNo && c.USR_STATUS == 1 && c.DEL_FLAG == 1); if (userInfo != null && userInfo.Id > 0) { if (bizType == "web") { password = Encrypt.Md5Hash(password); if (userInfo.USR_PWD.Equals(password)) { return(userInfo.ToDto()); } return(null); } return(userInfo.ToDto()); } return(null); } catch (Exception ex) { log.Write(ex.Message); return(null); } }
/// <summary> /// 获取顾问信息 /// </summary> /// <param name="userId"></param> /// <returns></returns> public SysUsrMstr GetUserInfo(string userId) { var model = new SysUsrMstr(); if (!string.IsNullOrEmpty(userId)) { model = _chatHelper.GetUserInfo(userId); } return(model); }
/// <summary> /// 绑定预约专员 /// </summary> /// <param name="userList"></param> /// <param name="wctInfo"></param> /// <param name="usrJob"></param> /// <returns></returns> public static SysUsrMstr GetAptUser(List <SysUsrMstr> userList, SysUsrWct wctInfo, string usrJob) { var list = userList.Where(c => c.USR_JOB == usrJob).ToList(); if (list.Count == 0) { return(null); } Random random = new Random(); int i = random.Next(list.Count); SysUsrMstr userInfo = list[i]; return(userInfo); }
//public override System.Threading.Tasks.Task OnConnected() //{ // string clientName = Context.QueryString["clientName"].ToString(); // string clientId = Context.QueryString["clientId"].ToString(); // OnLineUsers.AddOrUpdate(clientId, clientName, (key, value) => clientName); // Clients.All.userChange(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), string.Format("{0} 加入了。", clientName), OnLineUsers.ToArray()); // return base.OnConnected(); //} //public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled) //{ // string clientName = Context.QueryString["clientName"].ToString(); // string clientId = Context.QueryString["clientId"].ToString(); // Clients.All.userChange(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), string.Format("{0} 离开了。", clientName), OnLineUsers.ToArray()); // OnLineUsers.TryRemove(clientId, out clientName); // return base.OnDisconnected(stopCalled); //} /// <summary> /// /// </summary> /// <returns></returns> public override Task OnConnectedAsync() { var orgNo = ""; var bgNo = ""; var result = 0; var user = new SysUsrMstr(); string clientId = Context.GetHttpContext().Request.Query["clientId"].ToString(); string clientName = Context.GetHttpContext().Request.Query["clientName"]; if (string.IsNullOrEmpty(clientName)) { user = _chatHelper.GetUserInfo(clientId); clientName = user.USR_REAL_NAME; } _chatHelper.GetStoreNo(clientId, ref orgNo, ref bgNo); var log = new Log("Chat/Connect/" + bgNo + ""); log.Write("connect:" + Context.ConnectionId + ""); try { UserList = UserList.Where(c => c.BgNo == bgNo).ToList(); var onlineUser = UserList.Where(p => p.ConnectionId == Context.ConnectionId && p.BgNo == bgNo).FirstOrDefault(); log.Write("onlineUser:"******""); if (user != null) { UserList.Remove(onlineUser); } // RemoveMessage(clientId); var newUser = new OnlineUserInfo(); if (int.TryParse(clientId, out result)) { newUser.UserType = int.Parse(user.USR_TYPE); } newUser.UserId = clientId; newUser.ConnectionId = Context.ConnectionId; newUser.UserNickName = clientName; newUser.Url = _chatHelper.GetWxUrl(clientId); newUser.BgNo = bgNo; UserList.Add(newUser); Clients.Clients(GetUserConnectionIds()).SendAsync("userChange", clientId, true); } catch (Exception ex) { log.Write(ex.Message); } return(base.OnConnectedAsync()); }
/// <summary> /// 保存员工信息 /// </summary> /// <param name="dto"></param> /// <returns></returns> public ReturnMsg SaveSysUsrInfo(SysUsrMstrDto dto) { var rm = new ReturnMsg(); var entity = new SysUsrMstr(); var isOk = CheckSysUsrInfo(dto, rm); if (!isOk.IsSuccess) { return(rm); } if (dto.Id == 0) { dto.USR_REG_DATE = DateTime.Now; _initHelper.InitAdd(dto, AbpSession.USR_ID, AbpSession.ORG_NO, AbpSession.BG_NO); entity = dto.ToEntity(); _sysUsrMstrRepository.Insert(entity); } else { _initHelper.InitUpdate(dto, AbpSession.USR_ID); entity = dto.ToEntity(); _sysUsrMstrRepository.Update(entity); } var userAuth = _sysUsrAuthRepository.GetAllList(c => c.USR_ID == dto.Id); if (userAuth.Count > 0) { _sysUsrAuthRepository.DelSysUsrAuthInfo(dto.Id.ToString()); } if (!string.IsNullOrEmpty(dto.RoleIds)) { var list = dto.RoleIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach (var item in list) { var auth = new SysUsrAuth(); auth.Id = Guid.NewGuid().ToString("N"); auth.USR_ID = (long)dto.Id; auth.ROLE_ID = Convert.ToInt32(item); _initHelper.InitAdd(auth, AbpSession.USR_ID, AbpSession.ORG_NO, AbpSession.BG_NO); _sysUsrAuthRepository.Insert(auth); } } rm.IsSuccess = true; return(rm); }
/// <summary> /// 获取用户信息 /// </summary> /// <param name="userId"></param> /// <returns></returns> public SysUsrMstr GetUserInfo(string userId) { var user = new SysUsrMstr(); if (decimal.TryParse(userId, out var result)) { user = _sysUsrMstrRepository.FirstOrDefault(c => c.Id == result && c.DEL_FLAG == 1 && c.USR_STATUS == 1); if (user == null) { user = _sysUsrMstrRepository.FirstOrDefault(c => c.ERP_EMP_ID == userId && c.DEL_FLAG == 1 && c.USR_STATUS == 1); } } else { user = _sysUsrMstrRepository.FirstOrDefault(c => c.ERP_EMP_ID == userId && c.DEL_FLAG == 1 && c.USR_STATUS == 1); } return(user); }
/// <summary> /// 转换为数据传输对象 /// </summary> /// <param name="entity">实体</param> public static SysUsrMstrDto ToDto(this SysUsrMstr entity) { if (entity == null) { return(new SysUsrMstrDto()); } return(new SysUsrMstrDto { Id = entity.Id, USR_NAME = entity.USR_NAME, USR_PWD = entity.USR_PWD, USR_STATUS = entity.USR_STATUS, USR_AVATAR_STATUS = entity.USR_AVATAR_STATUS, USR_REG_DATE = entity.USR_REG_DATE, ORG_NO = entity.ORG_NO, CREATE_PSN = entity.CREATE_PSN, CREATE_DATE = entity.CREATE_DATE, UPDATE_PSN = entity.UPDATE_PSN, UPDATE_DATE = entity.UPDATE_DATE, CREATE_ORG_NO = entity.CREATE_ORG_NO, USR_REAL_NAME = entity.USR_REAL_NAME, USR_MOBILE = entity.USR_MOBILE, USR_EMAIL = entity.USR_EMAIL, USR_MOBILE_PASS = entity.USR_MOBILE_PASS, USR_AVATAR_PATH = entity.USR_AVATAR_PATH, USR_ALIPAY = entity.USR_ALIPAY, INVITATION_CODE = entity.INVITATION_CODE, FROM_CHANNEL = entity.FROM_CHANNEL, FROM_INVITATION_CODE = entity.FROM_INVITATION_CODE, UDF1 = entity.UDF1, UDF2 = entity.UDF2, UDF3 = entity.UDF3, UDF4 = entity.UDF4, UDF5 = entity.UDF5, USR_NICKNAME = entity.USR_NICKNAME, USR_REGION = entity.USR_REGION, DEL_FLAG = entity.DEL_FLAG, ERP_ORG_NO = entity.ERP_ORG_NO, ERP_EMP_ID = entity.ERP_EMP_ID, USR_DEVICE_ID = entity.USR_DEVICE_ID, USR_EMP_NO = entity.USR_EMP_NO, USR_TYPE = entity.USR_TYPE, DEPT_ID = entity.DEPT_ID, USR_BIZ_FROM = entity.USR_BIZ_FROM, USR_ASSIGN_SPAN = entity.USR_ASSIGN_SPAN, USR_ASSIGN_AUTO = entity.USR_ASSIGN_AUTO, USR_CURRENT_STATUS = entity.USR_CURRENT_STATUS, BEAT_DATE = entity.BEAT_DATE, LOGIN_DATE = entity.LOGIN_DATE, LOGOUT_DATE = entity.LOGOUT_DATE, SUP_NO = entity.SUP_NO, USR_GRADE = entity.USR_GRADE, USR_ROLE_NAMES = entity.USR_ROLE_NAMES, USR_DESC = entity.USR_DESC, USR_JOB = entity.USR_JOB, USR_FIELD = entity.USR_FIELD, USR_HOBBY = entity.USR_HOBBY, USR_LOCATION = entity.USR_LOCATION, USR_QRCODE_PATH = entity.USR_QRCODE_PATH, LAST_REC_ORDER_DATE = entity.LAST_REC_ORDER_DATE, ERP_CUS_NO = entity.ERP_CUS_NO, ERP_MEMBER_NO = entity.ERP_MEMBER_NO, USR_SPELL = entity.USR_SPELL, BG_NO = entity.BG_NO, OPEN_ID = entity.OPEN_ID, SALE_BRANDS = entity.SALE_BRANDS, DUTY_ID = entity.DUTY_ID, RoleIds = GetRoleIds(entity.Id) }); }
/// <summary> /// 分配预约专员 /// </summary> /// <param name="obj"></param> /// <param name="basInfo"></param> /// <param name="log"></param> /// <param name="userInfo"></param> /// <returns></returns> public bool GetWxUsrAptInfo(AptInfo obj, WctBasConfig basInfo, Log log, ref SysUsrMstr userInfo) { bool ret = true; try { var usrList = new List <SysUsrMstr>(); var job = obj.APT_TYPE == 1 ? basInfo.SALE_APT : basInfo.AFTER_SALE_APT; var salescode = ""; //查询微信粉丝信息 string where = string.Format(" OPEN_ID='{0}' and BG_NO='{1}' and FOLLOW_STATUS=1 and DEL_FLAG=1", obj.openId, obj.BG_NO); var wctInfo = _sysUsrWctRepository.FirstOrDefault(c => c.OPEN_ID == obj.openId && c.BG_NO == obj.BG_NO && c.DEL_FLAG == 1); if (wctInfo == null) { ret = false; log.Write("该粉丝信息不存在或未关注公众号!"); return(ret); } var sql = string.Format("ORG_NO='{0}' and DEL_FLAG=1", obj.orgNo); usrList = _sysUsrMstrRepository.GetAllList(c => c.ORG_NO == obj.orgNo && c.USR_TYPE == "2" && c.DEL_FLAG == 1); //未绑定预约专员 if (string.IsNullOrEmpty(obj.APT_TYPE == 1 ? wctInfo.CUS_SVC_CODE : wctInfo.AFTER_SALE_CODE)) { //绑定销售顾问 userInfo = GetAptUser(usrList, wctInfo, job); if (userInfo != null) { log.Write("绑定成功"); } else { log.Write("绑定失败"); ret = false; return(ret); } salescode = userInfo.ERP_EMP_ID;//赋值预约专员erp编码 } else { //查询绑定的预约专员是否存在 salescode = obj.APT_TYPE == 1 ? wctInfo.CUS_SVC_CODE : wctInfo.AFTER_SALE_CODE; userInfo = usrList.Where(c => c.ERP_EMP_ID == salescode && c.USR_JOB == job).FirstOrDefault(); if (userInfo == null) { //重新绑定销售顾问 userInfo = GetAptUser(usrList, wctInfo, job); if (userInfo != null) { log.Write("更新绑定成功"); } else { log.Write("更新绑定失败"); ret = false; return(ret); } salescode = userInfo.ERP_EMP_ID; } else { salescode = userInfo.ERP_EMP_ID; log.Write("该粉丝已绑定预约专员"); } } if (obj.APT_TYPE == 1 && wctInfo.CUS_SVC_CODE != salescode) { wctInfo.CUS_SVC_CODE = salescode; _sysUsrWctRepository.Update(wctInfo); } if (obj.APT_TYPE == 2 && wctInfo.AFTER_SALE_CODE != salescode) { wctInfo.AFTER_SALE_CODE = salescode; _sysUsrWctRepository.Update(wctInfo); } } catch (Exception ex) { log.Write("" + ex.Message + ""); } return(ret); }
/// <summary> /// 新增预约信息 /// </summary> /// <param name="obj"></param> /// <param name="log"></param> /// <returns></returns> public bool InsertCRM_APT_Info(AptInfo obj, Log log) { var pk = _wxHelper.CreatePK("APT"); bool ret = true; using (var unitOfWork = _unitOfWorkManager.Begin(TransactionScopeOption.RequiresNew)) { try { var apt = new CrmAptMstr(); apt.Id = pk; apt.APT_NO = pk;//预约单号 apt.APT_TYPE = "主动"; apt.APT_CLASS = obj.APT_CLASS; apt.APT_CHANNEL = "微信"; apt.CUS_NAME = obj.NAME; //客户姓名 apt.UDF1 = obj.SEX; //性别 apt.CUS_NO = obj.CUS_NO; apt.CUS_PHONE_NO = obj.CUS_PHONE_NO; apt.UDF2 = obj.MILEAGE; apt.UDF3 = obj.BRAND_NAME; //品牌 apt.UDF4 = obj.CARCLASS_NAME; //车系 apt.UDF5 = obj.CARTYPE_NAME; //车型 apt.UDF6 = obj.CARTYPEDET_NAME; //车型细分 apt.VIN = obj.VIN; //vin码 apt.CAR_ID = obj.CAR_ID; //车牌号 apt.UDF8 = obj.BU_NAME; //门店名称 apt.UDF9 = obj.DISCOUNT; //工时折扣 apt.UDF10 = obj.APT_PROJECT; //预约项目 apt.APT_DATE = obj.APT_DATE; apt.APT_TIMESPAN = obj.APT_TIMESPAN; //时段 apt.IS_SA_APPOINT = 0; apt.SERVICE_DESK = obj.CONSULTANT_NAME; apt.APT_BU_NO = obj.orgNo; apt.APT_STATUS = "未完成"; apt.APT_RMK = obj.APT_RMK; apt.CREATE_ORG_NO = obj.orgNo; apt.CREATE_PSN = obj.BPM_USRID; apt.CREATE_DATE = DateTime.Now; apt.UPDATE_PSN = obj.BPM_USRID; apt.UPDATE_DATE = DateTime.Now; apt.DEL_FLAG = 1; apt.BG_NO = obj.BG_NO; apt.BOOKING_TYPE = obj.APT_TYPE; apt.OPENID = obj.openId; _crmAptMstrRepository.Insert(apt); SysUsrMstr userInfo = new SysUsrMstr(); var basInfo = _wxHelper.GetBasConfig(obj.BG_NO); if (obj.APT_TYPE == 1)//售前 { if (basInfo != null) { if (basInfo.IS_IRIS == 1)//对接iris { //预约试驾调用iris接口 string url = basInfo.IRIS_APT_URL; log.Write("url:" + url + ""); Dictionary <string, object> dic = new Dictionary <string, object>(); //obj.APT_TIMESPAN; 预约时间段解析 string[] arr = obj.APT_TIMESPAN.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries); string aptDate = obj.APT_DATE.ToString("yyyy-MM-dd"); string startTime = aptDate + " " + arr[0]; string endTime = aptDate + " " + arr[1]; dic.Add("appCode", "iris"); dic.Add("custName", obj.NAME); dic.Add("custSex", obj.SEX == "女" ? 0 : 1); dic.Add("custMobile", obj.CUS_PHONE_NO); dic.Add("startTime", startTime); dic.Add("endTime", endTime); dic.Add("storeCode", obj.orgNo); dic.Add("brandCode", obj.BRAND_CODE); dic.Add("brandName", obj.BRAND_NAME); dic.Add("seriesCode", obj.CARCLASS_CODE); dic.Add("seriesName", obj.CARCLASS_NAME); dic.Add("carType", obj.CARTYPE_CODE); dic.Add("carCode", obj.CARTYPEDET_CODE); dic.Add("displayName", obj.CARTYPEDET_NAME); string json = JsonConvert.SerializeObject(dic); string result = IrisHelper.RequestIrisApi(url, basInfo.IRIS_CHAT_URL, json, log); log.Write("预约试驾推送Iris接口结果:" + result); var code = JObject.Parse(result)["code"] + ""; obj.APT_RMK = code == "fail" ? "预约试驾推送Iris失败" : obj.APT_RMK; //推送微信公众号模板消息 if (code == "fail") { ret = false; ret = WxToMessage(obj, basInfo.APT_URL, code, log); } else { ret = SendAptSuccessMessage(obj, basInfo.APT_URL, log); } } else { if (basInfo.IS_SEND_MSG == 1) { ret = GetWxUsrAptInfo(obj, basInfo, log, ref userInfo); if (!ret) { return(ret); } ret = _smsHelper.SendMessage(obj, userInfo.USR_MOBILE, basInfo, log); if (!ret) { log.Write("发送短消息失败"); } //推送微信公众号模板消息 ret = SendAptSuccessMessage(obj, basInfo.APT_URL, log); if (!ret) { log.Write("发送模板消息失败"); } } else { //推送微信公众号模板消息 ret = SendAptSuccessMessage(obj, basInfo.APT_URL, log); } } } else { ret = false; log.Write("请先维护基础配置"); return(ret); } } else if (obj.APT_TYPE == 2)//售后 { if (basInfo.IS_TOERP == 1) { ret = AptToErp(basInfo, obj, log); } else if (basInfo.IS_BZT == 1) { ret = PushAptInfoToOdm(basInfo, obj, log); } if (ret) { if (basInfo == null) { ret = false; log.Write("请先维护基础配置"); return(ret); } if (basInfo.IS_SEND_MSG == 1) { ret = GetWxUsrAptInfo(obj, basInfo, log, ref userInfo); if (!ret) { return(ret); } ret = _smsHelper.SendMessage(obj, userInfo.USR_MOBILE, basInfo, log); if (!ret) { log.Write("发送短消息失败"); } ret = SendAptSuccessMessage(obj, basInfo.APT_URL, log); if (!ret) { log.Write("发送模板消息失败"); } } else { ret = SendAptSuccessMessage(obj, basInfo.APT_URL, log); } } } } catch (Exception ex) { ret = false; log.Write("预约服务-" + ex.Message + ""); return(ret); } unitOfWork.Complete(); } return(ret); }