From 520219f63a2ced43bfb3a02028d0a7896f0e4d2f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 15 七月 2024 16:06:46 +0800
Subject: [PATCH] 提交

---
 server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerInfoRequest.java |    8 +-
 server/web/src/main/java/com/doumee/api/web/CustomerApi.java                           |    2 
 server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerPostRequest.java |   18 ++++
 server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java                   |    1 
 server/service/src/main/java/com/doumee/core/utils/Constants.java                      |    2 
 server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java          |   82 ++++++++++++++++++--
 server/service/src/main/java/com/doumee/service/business/InitService.java              |    1 
 server/web/src/main/java/com/doumee/api/web/PersonnelApi.java                          |    2 
 server/web/src/main/java/com/doumee/api/web/CatalogApi.java                            |   86 +++++++++++++++++++++
 server/service/src/main/java/com/doumee/biz/zbom/model/crm/CRMConstants.java           |    3 
 10 files changed, 190 insertions(+), 15 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java b/server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java
index 6140b41..77b2005 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java
@@ -22,6 +22,7 @@
 
     int dealCustomerLogData(CustomerLog customerLog);
     String zbomEncode(String str);
+    String getCrmGoUrl(String userName);
 
     CRMBaseResponse<List<CRMCustomerListResponse>> getCustomerList(CrmCustomerListRequest entity );
     CRMBaseResponse<List<CRMDaogouBindListResponse>> getDaogouBindList(CrmDaogouBindListRequest entity );
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
index c360fb8..89a91a3 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
@@ -4,15 +4,14 @@
 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;
@@ -70,13 +69,23 @@
         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.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="鎻愪氦鎴愬姛";
@@ -119,6 +128,36 @@
         return result;// 榛樿澶辫触
     }
 
+    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_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){
         log.info("銆�"+name+"銆�================寮�濮�===="+ JSONObject.toJSONString(param));
         String appKey = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_KEY);
@@ -130,7 +169,6 @@
             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>>(){};
@@ -199,4 +237,30 @@
         }
         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){
+        StringBuffer sb = new StringBuffer();
+        String result = null;
+        try {
+            // 鍒涘缓StringBuffer瀵硅薄鐢ㄦ潵鎿嶄綔瀛楃涓�
+            int _t = (int)(System.currentTimeMillis());
+            String  appkey =  (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_AUTH_API_KEY);
+            String  url =  (String) 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=mp&sign="+ DigestUtils.md5Hex( _t + appkey);;
+            return url;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+       throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鑾峰彇璺宠浆鍦板潃澶辫触鍝︼紒");
+    }
 }
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CRMConstants.java b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CRMConstants.java
index 7fc96fc..c97f9d5 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CRMConstants.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CRMConstants.java
@@ -16,6 +16,7 @@
         String POST_CUS_DATA_URL ="/api/public/zbom/postCusData";
         String CUS_BEFORE_PAGE_LIST_URL ="api/public/mini/program/cusOrBeforeList";
         String DAOGOU_BIND_LIST_URL ="api/public/mini/program/list";
+        String GO_CRM_AUTH_URL ="oauth/authorize/jump";
 
     }
     public interface IntegerName{
@@ -35,6 +36,8 @@
        String SOURCE_ZBLDX = "ZBLDX";// 蹇楅偊鑰佸甫鏂�(ZBLDX)
        String SOURCE_ZBFGCS = "ZBFGCS";// 蹇楅偊椋庢牸娴嬭瘯(ZBFGCS)
        String SOURCE_ZBJX = "DSLX22";// 蹇楅偊瀹堕��(ZBJX)
+       String SOURCE_MP01 = "MP01";// 闆跺厓璁捐
+       String SOURCE_MP02 = "MP02";//鎶ヤ环璁$畻鍣�
     }
 
 
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerInfoRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerInfoRequest.java
index c5a374e..3411ed2 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerInfoRequest.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerInfoRequest.java
@@ -17,9 +17,9 @@
     private String phone;
     @ApiModelProperty(value = "璁捐甯堟墜鏈哄彿")
     private String shopper;
-    @ApiModelProperty(value = "鏉ユ簮")
+    @ApiModelProperty(value = "鏉ユ簮 MP01銆愰浂鍏冭璁°�戙�丮P02銆愭姤浠疯绠楀櫒銆�")
     private String source;
-    @ApiModelProperty(value = "娓犻亾")
+    @ApiModelProperty(value = "娓犻亾MP0100 锛孧P0200 ")
     private String channel;
     @ApiModelProperty(value = "鏃ユ湡 yyyy/MM/dd HH:mm")
     private String date;
@@ -39,6 +39,6 @@
     private String openid;
     @ApiModelProperty(value = "缁堢淇℃伅")
     private String terminal;
-    @ApiModelProperty(value = "鏉ユ簮绫诲瀷  3绗笁鏂瑰钩鍙�  12 灏忕▼搴�)")
-    private String lyType;
+    @ApiModelProperty(value = "灏忕▼搴忕敤鎴穙pneid)")
+    private String openId;
 }
\ No newline at end of file
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerPostRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerPostRequest.java
new file mode 100644
index 0000000..8088b51
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerPostRequest.java
@@ -0,0 +1,18 @@
+package com.doumee.biz.zbom.model.crm;
+
+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 CrmCustomerPostRequest extends CRMBaseRequst implements Serializable {
+    @JsonProperty("cus_info")
+    @SerializedName("cus_info")
+    private List< CrmCustomerInfoRequest > cusInfo;
+}
\ No newline at end of file
diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
index f9eebca..0db86a1 100644
--- a/server/service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -43,6 +43,7 @@
 
 
     //琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛�
+    public static final String ZBOM_CRM_AUTH_API_KEY = "ZBOM_CRM_AUTH_API_KEY";
     public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID";
     public static final String LW_BEVISITED_USER_VALID = "LW_BEVISITED_USER_VALID";
     public static final String SELECT_DOORS_VISIT_REQUIRED = "SELECT_DOORS_VISIT_REQUIRED";
@@ -352,6 +353,7 @@
        String IMPORTING_USERS ="IMPORTING_USERS";
        String IAM_APPID ="IAM_APPID";
        String ZBOM_CRM_API_KEY ="ZBOM_CRM_API_KEY";
+       String ZBOM_CRM_AUTH_API_KEY ="ZBOM_CRM_AUTH_API_KEY";
        String ZBOM_CRM_API_URL ="ZBOM_CRM_API_URL";
        String ZBOM_ENCODE_URL ="ZBOM_ENCODE_URL";
        String ZBOM_SMS_API_KEY ="ZBOM_SMS_API_KEY";
diff --git a/server/service/src/main/java/com/doumee/service/business/InitService.java b/server/service/src/main/java/com/doumee/service/business/InitService.java
index 4028db6..3ac4288 100644
--- a/server/service/src/main/java/com/doumee/service/business/InitService.java
+++ b/server/service/src/main/java/com/doumee/service/business/InitService.java
@@ -36,6 +36,7 @@
         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_AUTH_API_KEY,systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_CRM_AUTH_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());
diff --git a/server/web/src/main/java/com/doumee/api/web/CatalogApi.java b/server/web/src/main/java/com/doumee/api/web/CatalogApi.java
new file mode 100644
index 0000000..6401f59
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/CatalogApi.java
@@ -0,0 +1,86 @@
+package com.doumee.api.web;
+
+import com.doumee.config.annotation.UserLoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.dao.business.model.SmsEmail;
+import com.doumee.dao.web.response.AccountResponse;
+import com.doumee.service.business.SmsEmailService;
+import com.doumee.service.business.UsersService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/7/10 18:06
+ */
+@Api(tags = "鍒嗙被鍜屾爣绛剧浉鍏虫帴鍙�")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/personnel")
+@Slf4j
+public class CatalogApi extends ApiController{
+
+    @Autowired
+    public UsersService usersService;
+
+    @Autowired
+    public SmsEmailService smsEmailService;
+
+
+    @ApiOperation(value = "灏忕▼搴忕櫥闄�", notes = "鍛樺伐绔皬绋嬪簭")
+    @GetMapping("/loginByWx")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "寰俊code", required = true),
+    })
+    public ApiResponse<AccountResponse> loginByWx(@RequestParam String code) {
+        return  ApiResponse.success(usersService.wxLogin(code));
+    }
+
+    @ApiOperation(value = "鍙戦�佺煭淇¢獙璇佺爜", notes = "鍛樺伐绔皬绋嬪簭")
+    @GetMapping("/sendSms")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "鎵嬫満鍙�", required = true),
+    })
+    public ApiResponse sendSms(@RequestParam String phone) {
+        SmsEmail smsEmail = new SmsEmail();
+        smsEmail.setPhone(phone);
+        smsEmailService.sendSms(smsEmail);
+        return  ApiResponse.success("鍙戦�佹垚鍔�");
+    }
+
+
+
+    @ApiOperation(value = "鎵嬫満鍙烽獙璇佺爜鐧婚檰", notes = "鍛樺伐绔皬绋嬪簭")
+    @GetMapping("/loginByPhone")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "鎵嬫満鍙�", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "鐭俊楠岃瘉鐮�", required = true),
+    })
+    public ApiResponse<AccountResponse> loginByPhone(@RequestParam String phone,@RequestParam String code) {
+        return  ApiResponse.success(usersService.phoneLogin(phone,code));
+    }
+
+
+    @UserLoginRequired
+    @ApiOperation(value = "缁戝畾openid", notes = "鍛樺伐绔皬绋嬪簭")
+    @GetMapping("/bindingOpenid")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "寰俊code", required = true),
+    })
+    public ApiResponse bindingOpenid(@RequestParam String code) {
+        usersService.bindingOpenid(code,getMemberId());
+        return  ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+}
diff --git a/server/web/src/main/java/com/doumee/api/web/CustomerApi.java b/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
index 0eb842c..0e9ba35 100644
--- a/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -32,7 +32,7 @@
  * @Author : Rk
  * @create 2024/7/10 14:03
  */
-@Api(tags = "瀹㈡埛绔皬绋嬪簭鐢ㄦ埛涓氬姟")
+@Api(tags = "銆怌绔皬绋嬪簭銆戠敤鎴蜂笟鍔�")
 @Trace(exclude = true)
 @RestController
 @RequestMapping("/web/customer")
diff --git a/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java b/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
index 8772dde..b68354e 100644
--- a/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
@@ -26,7 +26,7 @@
  * @Author : Rk
  * @create 2024/7/10 18:06
  */
-@Api(tags = "鍛樺伐绔皬绋嬪簭鐢ㄦ埛涓氬姟")
+@Api(tags = "銆怋绔皬绋嬪簭銆戠敤鎴蜂笟鍔�")
 @Trace(exclude = true)
 @RestController
 @RequestMapping("/web/personnel")

--
Gitblit v1.9.3