Example #1
0
        /// <summary>
        /// 请求token接口
        /// </summary>
        /// <param name="basConfig"></param>
        /// <param name="method"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static string PostBztToken(WctBasConfig basConfig, string method, ref string msg)
        {
            string url = basConfig.IBZT_URL + method;
            //请求参数
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("username", basConfig.TOKEN_USR_NAME);
            dic.Add("password", basConfig.TOKEN_USR_PWD);
            dic.Add("grant_type", basConfig.GRANT_TYPE);
            dic.Add("client_id", basConfig.CLIENT_ID);
            dic.Add("client_secret", basConfig.CLIENT_SECRET);

            string param  = JsonConvert.SerializeObject(dic);
            string result = HttpRequest.Post(url, param, null);

            var jobj  = Newtonsoft.Json.Linq.JObject.Parse(result);
            var token = jobj["Data"]["access_token"].ToString();
            var type  = jobj["Data"]["token_type"].ToString();

            if (!string.IsNullOrEmpty(token) && !string.IsNullOrEmpty(type))
            {
                basConfig.BZT_TOKEN_TIME = DateTime.Now;
                basConfig.BZT_TOKEN      = type + " " + token;
                //new WCT_BAS_CONFIGBLL().UpdateWCT_BAS_CONFIG(basConfig);
                return(type + " " + token);
            }
            else
            {
                msg = jobj["Message"] + "";
            }

            return("");
        }
Example #2
0
        /// <summary>
        /// 二手车库存信息
        /// </summary>
        /// <param name="basConfig"></param>
        /// <param name="msg"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        public List <UseCarStockModel> GetUseCarStockInfo(WctBasConfig basConfig, string buNo, ref string msg, string method = "v1.0/InvStockMstr/GetUseCarListByPage")
        {
            List <UseCarStockModel> list = new List <UseCarStockModel>();

            string token = GetToken(basConfig, ref msg);

            if (!string.IsNullOrEmpty(token))
            {
                string url = basConfig.IBZT_URL + method + "?STOCK_STATUS=在库&GOODS_TYPE=4&BuSource=SCRM&BU_NO=" + buNo + "";
                Dictionary <string, string> dic = new Dictionary <string, string>();
                dic.Add("Authorization", token);
                string result = HttpRequest.Get(url, dic);
                var    data   = Newtonsoft.Json.Linq.JObject.Parse(result)["Data"]["Result"] + "";

                if (!string.IsNullOrEmpty(data) && data != "[]")
                {
                    list = JsonConvert.DeserializeObject <List <UseCarStockModel> >(data);
                    foreach (var item in list)
                    {
                        item.CarDisplay = item.GOODS_CLASS1_NAME + " " + item.GOODS_CLASS2_NAME + " " + item.GOODS_CLASS3_NAME + " " + item.GOODS_NAME + " " + item.VIN;
                    }
                }
                else
                {
                    msg = Newtonsoft.Json.Linq.JObject.Parse(result)["Message"] + "";
                }
            }

            return(list);
        }
Example #3
0
        /// <summary>
        /// 保存基础配置信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public ReturnMsg SaveWctBasConfigInfo(WctBasConfigDto dto)
        {
            var rm     = new ReturnMsg();
            var entity = new WctBasConfig();
            var redis  = _redisHelper.GetRedisClient(Convert.ToInt(dto.REDIS_NUM));

            if (string.IsNullOrEmpty(dto.Id))
            {
                _initHelper.InitAdd(dto, AbpSession.USR_ID, AbpSession.ORG_NO, AbpSession.BG_NO);
                entity = dto.ToEntity();
                _wctBasConfigRepository.Insert(entity);
                redis.Add(AbpSession.BG_NO + "-CONFIG_ID", dto);
            }
            else
            {
                _initHelper.InitUpdate(dto, AbpSession.USR_ID);
                entity = dto.ToEntity();
                _wctBasConfigRepository.Update(entity);
                //redis集团缓存配置修改
                if (redis.Exists(AbpSession.BG_NO + "-CONFIG_ID") != 1)
                {
                    redis.Add(AbpSession.BG_NO + "-CONFIG_ID", dto);
                }
                else
                {
                    redis.Set(AbpSession.BG_NO + "-CONFIG_ID", dto);
                }
            }
            rm.IsSuccess = true;

            return(rm);
        }
Example #4
0
 /// <summary>
 /// 获取ODM请求的token
 /// </summary>
 public static string GetToken(WctBasConfig basConfig, ref string msg, string method = "v1.0/Token")
 {
     if (basConfig.BZT_TOKEN_TIME != null)
     {
         var expTime = (DateTime.Now - basConfig.BZT_TOKEN_TIME).Value.TotalHours;
         if (expTime > 12 || string.IsNullOrEmpty(basConfig.BZT_TOKEN))
         {
             var token = PostBztToken(basConfig, method, ref msg);
             return(token);
         }
         return(basConfig.BZT_TOKEN);
     }
     else
     {
         var token = PostBztToken(basConfig, method, ref msg);
         return(token);
     }
 }
Example #5
0
        /// <summary>
        /// 获取ODM车辆信息
        /// </summary>
        /// <param name="level">车等级</param>
        /// <param name="parentids">父级id</param>
        /// <returns></returns>
        public List <CarInfoModel> GetODMCarInfo(WctBasConfig basConfig, int level, string parentids, ref string msg, string ids = "", string method = "v1.0/CarType/GetCarClassList")
        {
            //List<CarInfoModel> list = new List<CarInfoModel>();

            string token = GetToken(basConfig, ref msg);

            if (!string.IsNullOrEmpty(token))
            {
                string url = basConfig.IBZT_URL + method;

                Dictionary <string, object> dic = new Dictionary <string, object>();
                dic.Add("CLASS_LEVEL", level);
                dic.Add("CLASS_STATUS", 1);

                if (!string.IsNullOrEmpty(parentids))
                {
                    List <string> list = parentids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    dic.Add("parentids", list);
                }

                if (!string.IsNullOrEmpty(ids))
                {
                    List <string> list = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    dic.Add("CarIds", list);
                }

                Dictionary <string, string> header = new Dictionary <string, string>();
                header.Add("Authorization", token);

                string result = HttpRequest.Post(url, JsonConvert.SerializeObject(dic), header);
                var    data   = Newtonsoft.Json.Linq.JObject.Parse(result)["Data"] + "";

                if (!string.IsNullOrEmpty(data))
                {
                    List <CarInfoModel> carlist = JsonConvert.DeserializeObject <List <CarInfoModel> >(data);
                    return(carlist);
                }
                else
                {
                    msg = Newtonsoft.Json.Linq.JObject.Parse(result)["Message"] + "";
                }
            }
            return(null);
        }
Example #6
0
        /// <summary>
        /// 预约服务-预约推送ERP
        /// </summary>
        /// <param name="config"></param>
        /// <param name="apt"></param>
        /// <param name="log"></param>
        /// <returns></returns>
        public bool AptToErp(WctBasConfig config, AptInfo apt, Log log)
        {
            var creator = config.CREATOR;
            var tDate   = apt.APT_DATE.ToString("yyyy-MM-dd");
            var dic     = new Dictionary <string, object>();

            dic.Add("storeNo", apt.orgNo);
            dic.Add("cusNo", apt.CUS_NO);
            dic.Add("appointmentMode", "微信");
            dic.Add("appointmentSource", apt.APT_CLASS);
            dic.Add("appointmentType", "主动预约");
            dic.Add("receiveHead", apt.USR_ID);
            dic.Add("Creator", creator);
            dic.Add("appointmentDate", Convert.ToDateTime(tDate));
            dic.Add("Consigner", apt.NAME);
            dic.Add("consignerPhone", apt.CUS_PHONE_NO);
            dic.Add("Remark", apt.APT_RMK);
            dic.Add("carId", apt.CAR_ID);
            dic.Add("Vin", apt.VIN);
            dic.Add("AppointmentPeriod", apt.APT_TIMESPAN);
            dic.Add("WorkingHoursDiscount", string.IsNullOrEmpty(apt.DISCOUNT) ? "" : (Convert.ToDouble(apt.DISCOUNT) / 10) + "");
            dic.Add("appointmentProject", apt.APT_PROJECT);
            var json   = JsonConvert.SerializeObject(dic);
            var url    = "";
            var msg    = "";
            var getUrl = _wxHelper.GetErpApiUrl(apt.orgNo, ref url, ref msg);

            if (!getUrl)
            {
                log.Write("getUrl:" + msg + "");
                return(false);
            }
            var     result = HttpRequest.ErpRequestApi(json, "CRM/SaveAfterSaleAppointMentInfo", url, apt.orgNo);
            JObject jo     = (JObject)JsonConvert.DeserializeObject(result);

            if (!Convert.ToBoolean(jo["IsSuccess"]))
            {
                log.Write("AptToErp:" + jo["msg"].ToString() + "");
                return(false);
            }
            return(true);
        }
Example #7
0
        /// <summary>
        /// 推送预约单到odm
        /// </summary>
        /// <param name="basConfig"></param>
        /// <param name="aptInfo"></param>
        /// <param name="log"></param>
        /// <param name="method"></param>
        /// <returns></returns>
        private bool PushAptInfoToOdm(WctBasConfig basConfig, AptInfo aptInfo, Log log, string method = "CrmAptMstr/SaveCrmAptMstrInfo")
        {
            string url   = basConfig.IBZT_URL + method;
            string msg   = "";
            string token = OdmCarRequest.GetToken(basConfig, ref msg);

            CrmAptInputModel crmAptInputModel = new CrmAptInputModel()
            {
                CusNo       = aptInfo.CUS_NO,
                CusName     = aptInfo.NAME,
                CusMobile   = aptInfo.CUS_PHONE_NO,
                CusSex      = string.IsNullOrEmpty(aptInfo.SEX) ? "3" : aptInfo.SEX,
                OpenId      = aptInfo.openId,
                AptClass    = aptInfo.APT_CLASS,
                AptDate     = aptInfo.APT_DATE,
                AptTimeSpan = aptInfo.APT_TIMESPAN,
                AptItem     = aptInfo.APT_PROJECT,
                AptContent  = aptInfo.APT_RMK,
                CarId       = aptInfo.CAR_ID,
                Vin         = aptInfo.VIN,
                BuNo        = aptInfo.orgNo,
                ScrmAptNo   = aptInfo.APT_TYPE.ToString()
            };

            string json = JsonConvert.SerializeObject(crmAptInputModel);
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("Authorization", token);
            string result = HttpRequest.Post(url, json, dic);

            var data = Newtonsoft.Json.Linq.JObject.Parse(result)["Data"] + "";
            var code = Newtonsoft.Json.Linq.JObject.Parse(result)["Code"] + "";

            msg = Newtonsoft.Json.Linq.JObject.Parse(result)["Message"] + "";
            if (code == "1")
            {
                return(true);
            }
            log.Write(msg);
            return(false);
        }
Example #8
0
        /// <summary>
        /// 发送短信通知
        /// </summary>
        /// <param name="apt"></param>
        /// <param name="mobile"></param>
        /// <param name="basConfig"></param>
        /// <param name="log"></param>
        /// <returns></returns>
        public bool SendMessage(AptInfo apt, string mobile, WctBasConfig basConfig, Log log)
        {
            BaseConfig config = new BaseConfig()
            {
                AppKey       = basConfig.SMS_APP_KEY,
                MasterSecret = basConfig.SMS_MASTER_SECRET
            };
            //发送营销类短信
            var cusInfo = "客户姓名:" + apt.NAME + "" + (apt.APT_TYPE == 2 ? ",车牌号:" + apt.CAR_ID + "" : "");
            Dictionary <string, string> extraParam = new Dictionary <string, string>();

            extraParam.Add("projectName", apt.APT_CLASS);
            extraParam.Add("cusInfo", cusInfo);
            extraParam.Add("timeSpan", apt.APT_DATE.ToString("yyyy-MM-dd") + " " + apt.APT_TIMESPAN);
            var ret = Utils.Jg.Sms.SmsHelper.SendMarketing(config, mobile, Convert.ToInt32(basConfig.SMS_MSG_CODE), extraParam, out Utils.Common.NetHelper.HttpHelper.Model.HttpResult result);

            if (!ret)
            {
                log.Write("发送短消息失败");
            }
            return(ret);
        }
Example #9
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);
        }
 /// <summary>
 /// 转换为数据传输对象
 /// </summary>
 /// <param name="entity">实体</param>
 public static WctBasConfigDto ToDto(this WctBasConfig entity)
 {
     if (entity == null)
     {
         return(new WctBasConfigDto());
     }
     return(new WctBasConfigDto {
         Id = entity.Id,
         SMS_APP_KEY = entity.SMS_APP_KEY,
         SMS_MASTER_SECRET = entity.SMS_MASTER_SECRET,
         SMS_CODE_ID = entity.SMS_CODE_ID,
         IS_TOERP = entity.IS_TOERP,
         CREATOR = entity.CREATOR,
         OPRATOR_NO = entity.OPRATOR_NO,
         MEMBER_LEVEL = entity.MEMBER_LEVEL,
         CREATE_DATE = entity.CREATE_DATE,
         UPDATE_PSN = entity.UPDATE_PSN,
         UPDATE_DATE = entity.UPDATE_DATE,
         OPEN_IS_ENABLED = entity.OPEN_IS_ENABLED,
         OPEN_APP_ID = entity.OPEN_APP_ID,
         OPEN_APP_SECRET = entity.OPEN_APP_SECRET,
         OPEN_APP_TOKEN = entity.OPEN_APP_TOKEN,
         OPEN_SECRET_KEY = entity.OPEN_SECRET_KEY,
         CLIENT_IP = entity.CLIENT_IP,
         ERP_API_OURL = entity.ERP_API_OURL,
         ERP_API_NURL = entity.ERP_API_NURL,
         DEL_FLAG = entity.DEL_FLAG,
         BG_NO = entity.BG_NO,
         IS_GROUP = entity.IS_GROUP,
         IS_APPCONFIG = entity.IS_APPCONFIG,
         UDF1 = entity.UDF1,
         UDF2 = entity.UDF2,
         UDF3 = entity.UDF3,
         UDF4 = entity.UDF4,
         UDF5 = entity.UDF5,
         IS_ONLYSTORE = entity.IS_ONLYSTORE,
         IS_IRIS = entity.IS_IRIS,
         ERP_APP_ID = entity.ERP_APP_ID,
         ERP_APP_KEY = entity.ERP_APP_KEY,
         ERP_APP_SECRET = entity.ERP_APP_SECRET,
         WXPAY_RETURNURL = entity.WXPAY_RETURNURL,
         IRIS_APT_URL = entity.IRIS_APT_URL,
         IRIS_CHAT_URL = entity.IRIS_CHAT_URL,
         APT_URL = entity.APT_URL,
         IS_TRANSFER = entity.IS_TRANSFER,
         IS_SEND_MSG = entity.IS_SEND_MSG,
         SMS_MSG_CODE = entity.SMS_MSG_CODE,
         IS_EXCHANGE_TICKET = entity.IS_EXCHANGE_TICKET,
         REDIS_NUM = entity.REDIS_NUM,
         SALE_APT = entity.SALE_APT,
         AFTER_SALE_APT = entity.AFTER_SALE_APT,
         IS_BZT = entity.IS_BZT,
         TOKEN_USR_NAME = entity.TOKEN_USR_NAME,
         TOKEN_USR_PWD = entity.TOKEN_USR_PWD,
         GRANT_TYPE = entity.GRANT_TYPE,
         CLIENT_ID = entity.CLIENT_ID,
         CLIENT_SECRET = entity.CLIENT_SECRET,
         IBZT_URL = entity.IBZT_URL,
         GOODS_FROM = entity.GOODS_FROM,
         CAR_FROM = entity.CAR_FROM,
         BZT_TOKEN = entity.BZT_TOKEN,
         BZT_TOKEN_TIME = entity.BZT_TOKEN_TIME,
         IS_RANDOMSALE = entity.IS_RANDOMSALE,
         IS_CAR_BIND = entity.IS_CAR_BIND,
         IS_APT_REMIND = entity.IS_APT_REMIND,
         IS_APT_GROUP = entity.IS_APT_GROUP
     });
 }