|  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.TypeReference; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
|---|
|  |  |  | import com.doumee.biz.zbom.ZbomCRMService; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.CRMConstants; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.CrmCustomerInfoRequest; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.CrmCustomerListRequest; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.CrmDaogouBindListRequest; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.*; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.response.CRMBaseResponse; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.response.CRMCustomerListResponse; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.crm.response.CRMDaogouBindListResponse; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.zhongtai.ZTConstants; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.zhongtai.response.ZTBaseResponse; | 
|---|
|  |  |  | import com.doumee.core.constants.ResponseStatus; | 
|---|
|  |  |  | import com.doumee.core.exception.BusinessException; | 
|---|
|  |  |  | import com.doumee.core.utils.Constants; | 
|---|
|  |  |  | import com.doumee.core.utils.DateUtil; | 
|---|
|  |  |  | import com.doumee.core.utils.HttpsUtil; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Async; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.BufferedReader; | 
|---|
|  |  |  | import java.io.InputStreamReader; | 
|---|
|  |  |  | import java.net.HttpURLConnection; | 
|---|
|  |  |  | import java.net.MalformedURLException; | 
|---|
|  |  |  | import java.net.URL; | 
|---|
|  |  |  | import java.net.URLEncoder; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | private CustomerLogMapper customerLogMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private CrmInterfaceLogMapper crmInterfaceLogMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RedisTemplate<String, Object> redisTemplate; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | public int dealCustomerLogData(CustomerLog customerLog){ | 
|---|
|  |  |  | public void dealCustomerLogData(CustomerLog customerLog){ | 
|---|
|  |  |  | if(StringUtils.isBlank(customerLog.getPhone())){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | CrmCustomerInfoRequest entity = new CrmCustomerInfoRequest(); | 
|---|
|  |  |  | entity.setId(customerLog.getId()); | 
|---|
|  |  |  | entity.setName(customerLog.getName()); | 
|---|
|  |  |  | 
|---|
|  |  |  | entity.setAreaname(customerLog.getAreaName()); | 
|---|
|  |  |  | entity.setAreacode(customerLog.getAreaCode()); | 
|---|
|  |  |  | entity.setOpenid(customerLog.getOpenid()); | 
|---|
|  |  |  | entity.setSource(CRMConstants.CRM_SOURCE.SOURCE_ZBJX); | 
|---|
|  |  |  | entity.setChannel(CRMConstants.CRM_SOURCE.SOURCE_ZBJX+"00"); | 
|---|
|  |  |  | //        提交类型 0-测试装修风格;1-0元定制;2装修计算器 | 
|---|
|  |  |  | if(Constants.equalsInteger(customerLog.getType(),Constants.ONE)){ | 
|---|
|  |  |  | entity.setSource(CRMConstants.CRM_SOURCE.SOURCE_MP01); | 
|---|
|  |  |  | entity.setChannel(CRMConstants.CRM_SOURCE.SOURCE_MP01+"00"); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | entity.setSource(CRMConstants.CRM_SOURCE.SOURCE_MP02); | 
|---|
|  |  |  | entity.setChannel(CRMConstants.CRM_SOURCE.SOURCE_MP02+"00"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        entity.setOpenId(customerLog.getOpenid()); | 
|---|
|  |  |  | entity.setOpenid(customerLog.getOpenid()); | 
|---|
|  |  |  | entity.setDate(DateUtil.dateToString(customerLog.getCreateDate(),"yyyy/MM/dd HH:mm")); | 
|---|
|  |  |  | CrmCustomerPostRequest obj = new CrmCustomerPostRequest(); | 
|---|
|  |  |  | obj.setCusInfo(new ArrayList<>()); | 
|---|
|  |  |  | obj.getCusInfo().add(entity); | 
|---|
|  |  |  | int status ; | 
|---|
|  |  |  | String crmInfo; | 
|---|
|  |  |  | String param = JSONObject.toJSONString(entity); | 
|---|
|  |  |  | CRMBaseResponse result = sendHttpRequest(CRMConstants.IntegerUrl.POST_CUS_DATA_URL,CRMConstants.IntegerName.POST_CUS_DATA_NAME,param); | 
|---|
|  |  |  | String param = JSONObject.toJSONString(obj); | 
|---|
|  |  |  | CRMBaseResponse result = sendCusHttpRequest(CRMConstants.IntegerUrl.POST_CUS_DATA_URL,CRMConstants.IntegerName.POST_CUS_DATA_NAME,param); | 
|---|
|  |  |  | if (result != null && (StringUtils.equalsIgnoreCase(result.getCode(), CRMConstants.CODE_SUCCESS))) { | 
|---|
|  |  |  | status = 1; | 
|---|
|  |  |  | crmInfo="提交成功"; | 
|---|
|  |  |  | 
|---|
|  |  |  | .set(CustomerLog::getCrmStatus,Constants.ONE ) | 
|---|
|  |  |  | .set(CustomerLog::getCrmInfo,crmInfo ) | 
|---|
|  |  |  | .set(CustomerLog::getCrmDate,new Date() ));// 更新状态 | 
|---|
|  |  |  | return status;// 默认失败 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取导购绑定列表 | 
|---|
|  |  |  | 
|---|
|  |  |  | int status ; | 
|---|
|  |  |  | String crmInfo; | 
|---|
|  |  |  | String param = JSONObject.toJSONString(entity); | 
|---|
|  |  |  | CRMBaseResponse<List<CRMDaogouBindListResponse>> result = sendHttpRequest(CRMConstants.IntegerUrl.DAOGOU_BIND_LIST_URL,CRMConstants.IntegerName.DAOGOU_BIND_LIST_NAME,param); | 
|---|
|  |  |  | CRMBaseResponse<List<CRMDaogouBindListResponse>> result = sendHttpRequest(CRMConstants.IntegerUrl.DAOGOU_BIND_LIST_URL, | 
|---|
|  |  |  | CRMConstants.IntegerName.DAOGOU_BIND_LIST_NAME, | 
|---|
|  |  |  | param, | 
|---|
|  |  |  | new TypeReference<CRMBaseResponse<List<CRMDaogouBindListResponse>>>(){}); | 
|---|
|  |  |  | return result;// 默认失败 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | int status ; | 
|---|
|  |  |  | String crmInfo; | 
|---|
|  |  |  | String param = JSONObject.toJSONString(entity); | 
|---|
|  |  |  | CRMBaseResponse<List<CRMCustomerListResponse>> result = sendHttpRequest(CRMConstants.IntegerUrl.CUS_BEFORE_PAGE_LIST_URL,CRMConstants.IntegerName.CUS_BEFORE_PAGE_LIST_NAME,param); | 
|---|
|  |  |  | CRMBaseResponse<List<CRMCustomerListResponse>> result = sendHttpRequest(CRMConstants.IntegerUrl.CUS_BEFORE_PAGE_LIST_URL | 
|---|
|  |  |  | ,CRMConstants.IntegerName.CUS_BEFORE_PAGE_LIST_NAME | 
|---|
|  |  |  | ,param | 
|---|
|  |  |  | ,new TypeReference<CRMBaseResponse<List<CRMCustomerListResponse>>>(){}); | 
|---|
|  |  |  | return result;// 默认失败 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public   <T> CRMBaseResponse<T> sendHttpRequest(String interfaceUrl,  String name,  String param){ | 
|---|
|  |  |  | public   <T> CRMBaseResponse<T> sendCusHttpRequest(String interfaceUrl,  String name,  String param){ | 
|---|
|  |  |  | log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param)); | 
|---|
|  |  |  | String appKey = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_POSTCUS_API_KEY); | 
|---|
|  |  |  | String url = redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_URL) + interfaceUrl ; | 
|---|
|  |  |  | long _t = System.currentTimeMillis(); | 
|---|
|  |  |  | if (StringUtils.isNotBlank(appKey)||StringUtils.isNotBlank(url)) { | 
|---|
|  |  |  | String res = null; | 
|---|
|  |  |  | int success = 0; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | url += "?type=postCusData&_t=" + _t + "&token=" + DigestUtils.md5Hex( "postCusData" + _t + appKey); | 
|---|
|  |  |  | Map<String,String> headers = new HashMap<>(); | 
|---|
|  |  |  | res = HttpsUtil.postJson(url,param); | 
|---|
|  |  |  | TypeReference typeReference = | 
|---|
|  |  |  | new TypeReference<CRMBaseResponse<T>>(){}; | 
|---|
|  |  |  | CRMBaseResponse<T>  result = JSONObject.parseObject(res, typeReference.getType()); | 
|---|
|  |  |  | logResult(result,name); | 
|---|
|  |  |  | if(StringUtils.equals(result.getCode(),CRMConstants.CODE_SUCCESS)){ | 
|---|
|  |  |  | return  result; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | success =1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | success = 1; | 
|---|
|  |  |  | log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(param)); | 
|---|
|  |  |  | }finally { | 
|---|
|  |  |  | saveInterfaceLog(url,name,param,success,res); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return  null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public   <T> CRMBaseResponse<T> sendHttpRequest(String interfaceUrl,  String name,  String param,TypeReference<CRMBaseResponse<T>> typeReference){ | 
|---|
|  |  |  | log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param)); | 
|---|
|  |  |  | String appKey = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_KEY); | 
|---|
|  |  |  | String url = redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_URL) + interfaceUrl ; | 
|---|
|  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | url += "?timestamp=" + _t + "&sign=" + DigestUtils.md5Hex( _t + appKey); | 
|---|
|  |  |  | Map<String,String> headers = new HashMap<>(); | 
|---|
|  |  |  | String index = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_ZHONGTAI_API_URL); | 
|---|
|  |  |  | res = HttpsUtil.postJson(url,param); | 
|---|
|  |  |  | TypeReference typeReference = | 
|---|
|  |  |  | new TypeReference<CRMBaseResponse<T>>(){}; | 
|---|
|  |  |  | CRMBaseResponse<T>  result = JSONObject.parseObject(res, typeReference.getType()); | 
|---|
|  |  |  | logResult(result,name); | 
|---|
|  |  |  | if(StringUtils.equals(result.getCode(),CRMConstants.CODE_SUCCESS)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return  result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 跳转crm功能 获取授权地址 | 
|---|
|  |  |  | * http://localhost:8080/core/oauth/authorize/jump?timestamp=1719998741&sign=41fbeb13965c43916876db7b5799e8ac&agent_phone_number=199077&bindKey=mp | 
|---|
|  |  |  | * @param userName | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public    String getCrmGoUrl(String userName,Integer type){ | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 创建StringBuffer对象用来操作字符串 | 
|---|
|  |  |  | int _t = (int)(System.currentTimeMillis()); | 
|---|
|  |  |  | String pageKey ="mp";//客户列表页面码 | 
|---|
|  |  |  | if(Constants.equalsInteger(type,Constants.ONE)){ | 
|---|
|  |  |  | pageKey = "mpAddIntention";//新增意向页面码 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String  appkey =  (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_AUTH_API_KEY); | 
|---|
|  |  |  | String  url =   redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_URL) | 
|---|
|  |  |  | +CRMConstants.IntegerUrl.GO_CRM_AUTH_URL | 
|---|
|  |  |  | + "?timestamp="+_t | 
|---|
|  |  |  | +"&agent_phone_number=" + URLEncoder.encode(userName, "UTF-8") | 
|---|
|  |  |  | + "&bindKey="+pageKey+"&sign="+ DigestUtils.md5Hex( _t + appkey);; | 
|---|
|  |  |  | return url; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"获取跳转地址失败哦!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|