server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.doumee.biz.zbom; import com.doumee.biz.zbom.model.CrmCustomerSubmmitModel; import com.doumee.biz.zbom.model.IamUpateShopModel; import com.doumee.biz.zbom.model.IamUpateUserModel; import org.springframework.stereotype.Service; import java.util.List; /** * å¿é¦CRM对æ¥ä¸å¡æ¥å£ * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ @Service public interface ZbomCRMService { int postDataToCrm(CrmCustomerSubmmitModel entity ); } server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java
@@ -9,7 +9,7 @@ import java.util.List; /** * 人åä¿¡æ¯è¡¨Serviceå®ç° * å¿é¦IAM对æ¥ä¸å¡æ¥å£ * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ server/service/src/main/java/com/doumee/biz/zbom/ZbomSMSService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.doumee.biz.zbom; import com.doumee.biz.zbom.model.CrmCustomerSubmmitModel; import org.springframework.stereotype.Service; /** * å¿é¦çä¿¡éé对æ¥ä¸å¡æ¥å£ * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ @Service public interface ZbomSMSService { boolean sendMessage(String content,String phone) ; } server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
@@ -5,7 +5,7 @@ import org.springframework.stereotype.Service; /** * 人åä¿¡æ¯è¡¨Serviceå®ç° * å¿é¦ä¸å°å¯¹æ¥ä¸å¡æ¥å£ * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,116 @@ package com.doumee.biz.zbom.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.zbom.ZbomCRMService; import com.doumee.biz.zbom.model.CrmCustomerInfoModel; import com.doumee.biz.zbom.model.CrmCustomerSubmmitModel; import com.doumee.core.utils.Constants; import com.doumee.core.utils.HttpsUtil; import com.doumee.dao.business.CrmInterfaceLogMapper; import com.doumee.dao.business.CustomerLogMapper; import com.doumee.dao.business.model.CrmInterfaceLog; import com.doumee.dao.business.model.CustomerLog; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.*; /** * å¿é¦CRM客æ·ä¿¡æ¯æäº¤æ¥å£ * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ @Service public class ZbomCRMServiceImpl implements ZbomCRMService { @Autowired private CustomerLogMapper customerLogMapper; @Autowired private CrmInterfaceLogMapper crmInterfaceLogMapper; @Autowired private RedisTemplate<String, Object> redisTemplate; /** * å¿é¦å®¢æ·ä¿¡æ¯æäº¤æ¥å£ * @param entity * @return */ @Override public int postDataToCrm(CrmCustomerSubmmitModel entity ) { // TODO Auto-generated method stub int status = 2; if(entity==null || entity.getCusInfo()==null || entity.getCusInfo().size() ==0){ return status; } String type = "postCusData"; String appid = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_KEY); String urlStr = (String)redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_URL) ; long _t = System.currentTimeMillis(); String crmInfo="æäº¤å¤±è´¥"; if (StringUtils.isNotBlank(appid)||StringUtils.isNotBlank(urlStr)) { String token = DigestUtils.md5Hex(type + _t + appid); String url = urlStr + "?type=" + type + "&_t=" + _t + "&token=" + token;// æäº¤CRMå°å String param = JSONObject.toJSONString(entity); int success =1; String result = null; try { result = HttpsUtil.postJson(url,param); if (StringUtils.isNotBlank(result)) { JSONObject r = JSONObject.parseObject(result.replace("(", "").replace(")", "")); if (r != null && (StringUtils.equalsIgnoreCase(r.getString("code"), "1") || StringUtils.equalsIgnoreCase(r.getString("code"), "2"))) { status = 1; crmInfo="æäº¤æå"; success =0; }else{ status = 2; crmInfo="æäº¤å¤±è´¥["+ result+"]"; } } }catch (Exception e){ e.printStackTrace(); crmInfo+= e.getMessage(); }finally { saveInterfaceLog(url,"å¿é¦CRM客æ·çèµä¿¡æ¯æäº¤",param,success,result); } }else{ status = 2; crmInfo="æäº¤å¤±è´¥crmé ç½®æè¯¯ï¼appid:["+ appid+"]"+"url:["+ urlStr+"]"; } List<Long> idList = new ArrayList<>(); for(CrmCustomerInfoModel info : entity.getCusInfo()){ idList.add(info.getId()); } // 妿æäº¤æå CustomerLog d = new CustomerLog(); d.setId(entity.getCusInfo().get(0).getId()); d.setCrmStatus(Constants.ONE); customerLogMapper.update(null,new UpdateWrapper<CustomerLog>().lambda() .in(CustomerLog::getId,idList) .set(CustomerLog::getCrmStatus,Constants.ONE ) .set(CustomerLog::getCrmInfo,crmInfo ) .set(CustomerLog::getCrmDate,new Date() ));// æ´æ°ç¶æ return status;// é»è®¤å¤±è´¥ } public void saveInterfaceLog(String url,String name,String param,Integer success,String respone){ CrmInterfaceLog log = new CrmInterfaceLog(); log.setCreateDate(new Date()); log.setUrl(url); log.setEditDate(log.getCreateDate()); log.setPlat(Constants.ZERO); log.setName(name); log.setIsdeleted(Constants.ZERO); log.setRequest(param); log.setType(Constants.ONE); log.setSuccess(success); log.setRepose(respone); crmInterfaceLogMapper.insert(log); } } server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomSMSServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,107 @@ package com.doumee.biz.zbom.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.zbom.ZbomCRMService; import com.doumee.biz.zbom.ZbomSMSService; import com.doumee.biz.zbom.model.CrmCustomerInfoModel; import com.doumee.biz.zbom.model.CrmCustomerSubmmitModel; import com.doumee.core.utils.Constants; import com.doumee.core.utils.HttpsUtil; import com.doumee.dao.business.CrmInterfaceLogMapper; import com.doumee.dao.business.CustomerLogMapper; import com.doumee.dao.business.model.CrmInterfaceLog; import com.doumee.dao.business.model.CustomerLog; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * å¿é¦CRM客æ·ä¿¡æ¯æäº¤æ¥å£ * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ @Service public class ZbomSMSServiceImpl implements ZbomSMSService { @Autowired private CustomerLogMapper customerLogMapper; @Autowired private CrmInterfaceLogMapper crmInterfaceLogMapper; @Autowired private RedisTemplate<String, Object> redisTemplate; /** * å¿é¦å®¢æ·ä¿¡æ¯æäº¤æ¥å£ * @return */ @Override public boolean sendMessage(String content,String phone) { // TODO Auto-generated method stub if(StringUtils.isBlank(content)){ return false; } String appkey = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_SMS_API_KEY); String urlStr = (String)redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_SMS_API_URL) ; try { StringBuffer sb = new StringBuffer(urlStr); Integer _t = (int) System.currentTimeMillis(); // åStringBuffer追å ç¨æ·å sb.append("_t=" + _t); sb.append("&smsphone=" + phone); sb.append("&smscode=10005"); // åStringBuffer追å å¯ç ï¼ç»éç½é¡µçï¼å¨ç®¡çä¸å¿--åºæ¬èµæ--æ¥å£å¯ç ï¼æ¯28ä½çï¼ sb.append("&smsmsg=" + URLEncoder.encode(content.replace(" ", ""), "UTF-8")); // å å¯ // 497fbc01e744ef44001296b7466148e8 sb.append("&token=" + DigestUtils.md5Hex(phone + _t + appkey)); // å建url对象 URL url = new URL(sb.toString()); // æå¼urlè¿æ¥ HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置urlè¯·æ±æ¹å¼ âgetâ æè âpostâ connection.setRequestMethod("POST"); connection.setConnectTimeout(500); connection.setReadTimeout(500); // åé BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); // è¿ååéç»æ String inputline = in.readLine(); // è¿åç»æä¸ºâ0ï¼20140009090990,1ï¼æäº¤æåâ åéæå å ·ä½è§è¯´æææ¡£ System.out.println(inputline); saveInterfaceLog(urlStr,"å¿é¦çä¿¡å鿥å£", sb.toString(), 0,inputline); return true;// }catch (Exception e){ return false; } } public void saveInterfaceLog(String url,String name,String param,Integer success,String respone){ CrmInterfaceLog log = new CrmInterfaceLog(); log.setCreateDate(new Date()); log.setUrl(url); log.setEditDate(log.getCreateDate()); log.setPlat(Constants.ZERO); log.setName(name); log.setIsdeleted(Constants.ZERO); log.setRequest(param); log.setType(Constants.ONE); log.setSuccess(success); log.setRepose(respone); crmInterfaceLogMapper.insert(log); } } server/service/src/main/java/com/doumee/biz/zbom/model/CrmCustomerInfoModel.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.doumee.biz.zbom.model; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data @ApiModel("å¿é¦CRM客æ·çèµæäº¤æç»åæ°") public class CrmCustomerInfoModel implements Serializable { @ApiModelProperty(value = "人åç¼ç ") private Long id; @ApiModelProperty(value = "å§å") private String name; @ApiModelProperty(value = "ææºå·") private String phone; @ApiModelProperty(value = "è®¾è®¡å¸ææºå·") private String shopper; @ApiModelProperty(value = "æ¥æº") private String source; @ApiModelProperty(value = "æ¸ é") private String channel; @ApiModelProperty(value = "æ¥æ yyyy/MM/dd HH:mm") private String date; @ApiModelProperty(value = "æ¨èäººææºå·") private String recphone; @ApiModelProperty(value = "æ¨è人å§å") private String recname; @ApiModelProperty(value = "å¿åºåç§°") private String areaname; @ApiModelProperty(value = "å¿åºç¼ç ") private String areacode; @ApiModelProperty(value = "ç³»ç»çæ¬å·") private String sysversion; @ApiModelProperty(value = "æµè§å¨ä¿¡æ¯") private String browser; @ApiModelProperty(value = "å°ç¨åºopenid") private String openid; @ApiModelProperty(value = "ç»ç«¯ä¿¡æ¯") private String terminal; } server/service/src/main/java/com/doumee/biz/zbom/model/CrmCustomerSubmmitModel.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.doumee.biz.zbom.model; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.gson.annotations.SerializedName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; @Data @ApiModel("å¿é¦CRM客æ·çèµæäº¤åæ°") public class CrmCustomerSubmmitModel implements Serializable { @ApiModelProperty(value = "客æ·ä¿¡æ¯") @JsonProperty("cus_info") @SerializedName("cus_info") private List<CrmCustomerInfoModel> cusInfo; } server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -318,6 +318,10 @@ public static final String WX_PLATFORM_APPID = "WX_PLATFORM_APPID"; public static final String WX_PLATFORM_SECRET = "WX_PLATFORM_SECRET"; public static final String WX_PLATFORM_AUDIT_VISIT = "WX_PLATFORM_AUDIT_VISIT"; public static final String ZBOM_CRM_API_URL = "ZBOM_CRM_API_URL"; public static final String ZBOM_CRM_API_KEY = "ZBOM_CRM_API_KEY"; public static final String ZBOM_SMS_API_KEY = "ZBOM_SMS_API_KEY"; public static final String ZBOM_SMS_API_URL = "ZBOM_SMS_API_URL"; public static final String WX_PLATFORM_PREFIX = "WX_PLATFORM_PREFIX"; @@ -329,6 +333,10 @@ public static final String IMPORTING_MEMBER ="IMPORTING_MEMBER"; public static final String IMPORTING_SHOP ="IMPORTING_SHOP"; public static final String IAM_APPID ="IAM_APPID"; public static final String ZBOM_CRM_API_KEY ="ZBOM_CRM_API_KEY"; public static final String ZBOM_CRM_API_URL ="ZBOM_CRM_API_URL"; public static final String ZBOM_SMS_API_KEY ="ZBOM_SMS_API_KEY"; public static final String ZBOM_SMS_API_URL ="ZBOM_SMS_API_URL"; public static final String IAM_APPKEY ="IAM_APPKEY"; public static final String SHOP_TREE ="SHOP_TREE"; public static final String ERP_TOKEN ="ERP_TOKEN"; server/service/src/main/java/com/doumee/dao/business/model/CrmInterfaceLog.java
@@ -59,7 +59,7 @@ @ApiModelProperty(value = "å°åä¿¡æ¯") @ExcelColumn(name="å°åä¿¡æ¯") private Date url; private String url; @ApiModelProperty(value = "请æ±åæ°") @ExcelColumn(name="请æ±åæ°") server/service/src/main/java/com/doumee/service/business/InitService.java
@@ -36,6 +36,10 @@ public void initIamAppIdAndAppKey(){ redisTemplate.opsForValue().set(Constants.RedisKeys.IAM_APPKEY,systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_IAM_APPKEY).getCode()); redisTemplate.opsForValue().set(Constants.RedisKeys.IAM_APPID,systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_IAM_APPID).getCode()); redisTemplate.opsForValue().set(Constants.RedisKeys.ZBOM_CRM_API_KEY,systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_CRM_API_KEY).getCode()); redisTemplate.opsForValue().set(Constants.RedisKeys.ZBOM_CRM_API_URL,systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_CRM_API_URL).getCode()); redisTemplate.opsForValue().set(Constants.RedisKeys.ZBOM_SMS_API_URL,systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_SMS_API_URL).getCode()); redisTemplate.opsForValue().set(Constants.RedisKeys.ZBOM_SMS_API_KEY,systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_SMS_API_KEY).getCode()); } @PostConstruct public void cacheShopTree(){