jiangping
2024-07-15 520219f63a2ced43bfb3a02028d0a7896f0e4d2f
提交
已添加2个文件
已修改8个文件
205 ■■■■■ 文件已修改
server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/crm/CRMConstants.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerInfoRequest.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/crm/CrmCustomerPostRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/InitService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CatalogApi.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerApi.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/PersonnelApi.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 );
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(),"获取跳转地址失败哦!");
    }
}
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";//报价计算器
    }
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【零元设计】、MP02【报价计算器】")
    private String source;
    @ApiModelProperty(value = "渠道")
    @ApiModelProperty(value = "渠道MP0100 ï¼ŒMP0200 ")
    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 = "小程序用户opneid)")
    private String openId;
}
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;
}
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";
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());
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("操作成功");
    }
}
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 = "【C端小程序】用户业务")
@Trace(exclude = true)
@RestController
@RequestMapping("/web/customer")
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 = "【B端小程序】用户业务")
@Trace(exclude = true)
@RestController
@RequestMapping("/web/personnel")