コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        //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());
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
ファイル: ChatHelper.cs プロジェクト: TravelerJ/myProject
        /// <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);
        }
コード例 #7
0
 /// <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)
     });
 }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        /// <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);
        }