Browse Source

Merge remote-tracking branch 'origin/test' into test

zhaoxian 3 năm trước cách đây
mục cha
commit
c5a09323a8

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 9 - 0
ruixuan-admin/src/main/resources/application-prod.yml


+ 10 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/constant/RobotConstant.java

@@ -12,10 +12,20 @@ public class RobotConstant {
     public static final String REQUEST_PREFIX = "http://jiqiren-external-api.weiwenjia.com";
     public static final String REQUEST_PREFIX = "http://jiqiren-external-api.weiwenjia.com";
 
 
     /**
     /**
+     * 回调地址
+     */
+    public static final String CALL_BACK_URL = "http://ruixuan.api.tjyourong.com.cn/sale/saleClueInfoController/robotCallbackUrl";
+
+    /**
      * 刷新token
      * 刷新token
      */
      */
     public static final String REFRESH_TOKEN = REQUEST_PREFIX+"/api/v1/authorize";
     public static final String REFRESH_TOKEN = REQUEST_PREFIX+"/api/v1/authorize";
 
 
+    /**
+     * 导入电话号码
+     */
+    public static final String CUSTOMER_IMPORT = REQUEST_PREFIX+"/api/v1/customer/import";
+
 
 
 
 
 
 

+ 37 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/controller/SaleClueInfoController.java

@@ -3,6 +3,7 @@ package com.ruixuan.salesLeads.controller;
 
 
 import com.alibaba.excel.util.ConverterUtils;
 import com.alibaba.excel.util.ConverterUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.common.annotation.RateLimiter;
 import com.ruixuan.common.core.controller.BaseController;
 import com.ruixuan.common.core.controller.BaseController;
 import com.ruixuan.common.core.domain.ResultResponse;
 import com.ruixuan.common.core.domain.ResultResponse;
 import com.ruixuan.common.core.redis.RedisCache;
 import com.ruixuan.common.core.redis.RedisCache;
@@ -11,15 +12,18 @@ import com.ruixuan.common.utils.StringUtils;
 import com.ruixuan.common.utils.file.FileTypeUtils;
 import com.ruixuan.common.utils.file.FileTypeUtils;
 import com.ruixuan.common.utils.http.HttpUtil;
 import com.ruixuan.common.utils.http.HttpUtil;
 import com.ruixuan.salesLeads.listener.ImportExcelListener;
 import com.ruixuan.salesLeads.listener.ImportExcelListener;
+import com.ruixuan.salesLeads.pojo.SaleClueCallRecordPojo;
 import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
 import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
 import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
 import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
 import com.ruixuan.salesLeads.pojo.TestPojo;
 import com.ruixuan.salesLeads.pojo.TestPojo;
 import com.ruixuan.salesLeads.pojo.vo.SaleRecordVo;
 import com.ruixuan.salesLeads.pojo.vo.SaleRecordVo;
 import com.ruixuan.salesLeads.pojo.vo.SaleTaskInfoVo;
 import com.ruixuan.salesLeads.pojo.vo.SaleTaskInfoVo;
+import com.ruixuan.salesLeads.service.ISaleClueCallRecordService;
 import com.ruixuan.salesLeads.service.ISaleClueInfoService;
 import com.ruixuan.salesLeads.service.ISaleClueInfoService;
 import com.ruixuan.salesLeads.service.ITestService;
 import com.ruixuan.salesLeads.service.ITestService;
 import com.ruixuan.salesLeads.service.impl.TelephoneRobotServiceImpl;
 import com.ruixuan.salesLeads.service.impl.TelephoneRobotServiceImpl;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -40,6 +44,7 @@ import java.util.stream.Collectors;
  */
  */
 
 
 
 
+@Slf4j
 @Api(tags = "销售线索",description = "saleClueInfoController")
 @Api(tags = "销售线索",description = "saleClueInfoController")
 @RestController
 @RestController
 @RequestMapping("sale/saleClueInfoController")
 @RequestMapping("sale/saleClueInfoController")
@@ -239,8 +244,40 @@ public class SaleClueInfoController extends BaseController {
 
 
 
 
 
 
+    @Autowired
+    private ISaleClueCallRecordService saleClueCallRecordService;
+
+
+
+    @ApiOperation(value = "回调地址",notes = "回调地址")
+    @PostMapping(value = "/robotCallbackUrl")
+    public JSONObject robotCallbackUrl(@RequestBody JSONObject json){
+        saleClueCallRecordService.SaleClueCallRecordMapper(json.toJSONString());
+        log.info("callBackUrl----->>>{}",json);
+        return json;
+    }
+
+
 
 
 
 
+    @ApiOperation(value = "外呼机器人-导入号码",notes = "外呼机器人-导入号码")
+    @RateLimiter(count = 1)
+    @PostMapping(value = "/importRobotTelephone")
+    public ResultResponse importRobotTelephone(@ApiParam(value = "卖家ids") @RequestParam(value = "sellerIds") List<Long> sellerIds,
+                                               @ApiParam(value = "用户id") @RequestParam(value = "userId") String userId){
+        if (sellerIds.size() > 5000){
+            return ResultResponse.error("单次最大导入号码数量不能超过5000条!");
+        }
+        return telephoneRobotService.importRobotTelephone(sellerIds,userId);
+    }
+
+
+    @ApiOperation(value = "外呼机器人-外呼记录查询",notes = "外呼机器人-外呼记录查询")
+    @GetMapping(value = "/getRobotTelephoneRecordList")
+    public ResultResponse<List<SaleClueCallRecordPojo>> getRobotTelephoneRecordList(){
+        return telephoneRobotService.getRobotTelephoneRecordList();
+    }
+
 
 
 
 
 
 

+ 26 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/mapper/SaleClueCallRecordMapper.java

@@ -0,0 +1,26 @@
+package com.ruixuan.salesLeads.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.salesLeads.pojo.SaleClueCallRecordPojo;
+import com.ruixuan.salesLeads.pojo.TestPojo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: TODO
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+public interface SaleClueCallRecordMapper {
+
+    void addSaleCallRecord(String str);
+
+    List<SaleClueCallRecordPojo> getSaleClueCallRecordInfo();
+
+    void updateCallRecordUser(String userId);
+
+}

+ 43 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SaleClueCallRecordPojo.java

@@ -0,0 +1,43 @@
+package com.ruixuan.salesLeads.pojo;
+
+
+import com.ruixuan.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo-测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+
+@Data
+@ApiModel(value = "saleClueCallRecordPojo", description = "销售线索通话记录")
+public class SaleClueCallRecordPojo {
+
+
+    private int id;
+
+    @ApiModelProperty("原始内容")
+    private String content;
+
+    @ApiModelProperty("创建人")
+    private int createUserId;
+
+    @ApiModelProperty("创建人姓名")
+    private String createUserName;
+
+    @ApiModelProperty("成功集合")
+    private List successList;
+
+    @ApiModelProperty("失败集合")
+    private List errorList;
+
+
+}

+ 19 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/ISaleClueCallRecordService.java

@@ -0,0 +1,19 @@
+package com.ruixuan.salesLeads.service;
+
+import com.ruixuan.common.core.domain.ResultResponse;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+public interface ISaleClueCallRecordService {
+
+
+    void SaleClueCallRecordMapper(String str);
+
+
+}

+ 4 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/ITelephoneRobotService.java

@@ -21,4 +21,8 @@ public interface ITelephoneRobotService {
 
 
     JSONObject getTelephoneRobotToken();
     JSONObject getTelephoneRobotToken();
 
 
+    ResultResponse importRobotTelephone(List<Long> sellerIds,String userId);
+
+    ResultResponse getRobotTelephoneRecordList();
+
 }
 }

+ 35 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/impl/SaleClueCallRecordServiceImpl.java

@@ -0,0 +1,35 @@
+package com.ruixuan.salesLeads.service.impl;
+
+import com.ruixuan.common.core.domain.ResultResponse;
+import com.ruixuan.common.utils.PageUtils;
+import com.ruixuan.salesLeads.mapper.SaleClueCallRecordMapper;
+import com.ruixuan.salesLeads.mapper.TestMapper;
+import com.ruixuan.salesLeads.pojo.TestPojo;
+import com.ruixuan.salesLeads.service.ISaleClueCallRecordService;
+import com.ruixuan.salesLeads.service.ITestService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: demo测试
+ * @CreateDate: 2022-05-19
+ * ****************************************************
+ */
+@Service
+public class SaleClueCallRecordServiceImpl implements ISaleClueCallRecordService {
+
+
+    @Autowired
+    private SaleClueCallRecordMapper saleClueCallRecordMapper;
+
+
+    @Override
+    public void SaleClueCallRecordMapper(String str) {
+        saleClueCallRecordMapper.addSaleCallRecord(str);
+    }
+}

+ 93 - 8
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/service/impl/TelephoneRobotServiceImpl.java

@@ -1,8 +1,10 @@
 package com.ruixuan.salesLeads.service.impl;
 package com.ruixuan.salesLeads.service.impl;
 
 
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
 import com.github.pagehelper.PageInfo;
+import com.google.gson.JsonObject;
 import com.ruixuan.common.core.domain.ResultResponse;
 import com.ruixuan.common.core.domain.ResultResponse;
 import com.ruixuan.common.core.page.TableDataInfo;
 import com.ruixuan.common.core.page.TableDataInfo;
 import com.ruixuan.common.core.redis.RedisCache;
 import com.ruixuan.common.core.redis.RedisCache;
@@ -13,14 +15,8 @@ import com.ruixuan.common.utils.file.FileTypeUtils;
 import com.ruixuan.common.utils.http.HttpUtil;
 import com.ruixuan.common.utils.http.HttpUtil;
 import com.ruixuan.salesLeads.constant.RobotConstant;
 import com.ruixuan.salesLeads.constant.RobotConstant;
 import com.ruixuan.salesLeads.listener.ImportExcelListener;
 import com.ruixuan.salesLeads.listener.ImportExcelListener;
-import com.ruixuan.salesLeads.mapper.SaleClueDistributionInfoMapper;
-import com.ruixuan.salesLeads.mapper.SaleClueInfoMapper;
-import com.ruixuan.salesLeads.mapper.SaleClueRecordInfoMapper;
-import com.ruixuan.salesLeads.mapper.SaleQuotaInfoMapper;
-import com.ruixuan.salesLeads.pojo.SaleClueDistributionInfoPojo;
-import com.ruixuan.salesLeads.pojo.SaleClueInfoPojo;
-import com.ruixuan.salesLeads.pojo.SaleClueRecordInfoPojo;
-import com.ruixuan.salesLeads.pojo.SaleQuotaInfoPojo;
+import com.ruixuan.salesLeads.mapper.*;
+import com.ruixuan.salesLeads.pojo.*;
 import com.ruixuan.salesLeads.pojo.vo.SaleRecordVo;
 import com.ruixuan.salesLeads.pojo.vo.SaleRecordVo;
 import com.ruixuan.salesLeads.pojo.vo.SaleTaskInfoVo;
 import com.ruixuan.salesLeads.pojo.vo.SaleTaskInfoVo;
 import com.ruixuan.salesLeads.service.ISaleClueInfoService;
 import com.ruixuan.salesLeads.service.ISaleClueInfoService;
@@ -62,6 +58,12 @@ public class TelephoneRobotServiceImpl implements ITelephoneRobotService {
     @Autowired
     @Autowired
     private RedisCache redisCache;
     private RedisCache redisCache;
 
 
+    @Autowired
+    private SaleClueInfoMapper saleClueInfoMapper;
+
+    @Autowired
+    private SaleClueCallRecordMapper saleClueCallRecordMapper;
+
 
 
     /**
     /**
      *
      *
@@ -95,4 +97,87 @@ public class TelephoneRobotServiceImpl implements ITelephoneRobotService {
 
 
 
 
 
 
+
+    /**
+     *
+     * @description: 外呼机器人-导入号码
+     *
+     * @param sellerIds
+     * @param userId
+     * @return: com.ruixuan.common.core.domain.ResultResponse
+     * @author: zianY
+     */
+    @Override
+    public ResultResponse importRobotTelephone(List<Long> sellerIds,String userId){
+        Map<String,String> headers = new HashMap<>();
+        Map<String,Object> result = new HashMap<>();
+        result.put("taskId",123);
+        result.put("batchId",123);
+        result.put("callBackUrl",RobotConstant.CALL_BACK_URL);
+        result.put("canCover",true);
+
+        List customerList = new ArrayList();
+        for (Long sellerId : sellerIds) {
+            SaleRecordVo saleInfo = saleClueInfoMapper.selectSaleClueInfoBySellerId(sellerId);
+            Map<String,Object> param = new HashMap<>();
+            param.put("id",saleInfo.getSellerId());
+            param.put("name",saleInfo.getSellerName());
+            param.put("companyName","");
+            param.put("phone","17778037644");
+            param.put("website","");
+            customerList.add(param);
+        }
+        result.put("customerList",customerList);
+        //headers.put("Auth-Token","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJndW95YW5saW5nIiwiZXhwIjoxNjU4MTMyMjEyfQ.OyhpastRRzBxAlSc8JOfdxO3rK3NG592U3Qlh752xDQ");
+        JSONObject tokenObj = redisCache.getCacheObject("salesLeads:robotToken:str");
+        if (!StringUtils.isEmpty(tokenObj)){
+            log.info("导入时获取redis中的token信息----->>>{}",tokenObj);
+
+        }else {
+            tokenObj = getTelephoneRobotToken();
+            log.info("导入时redis中的token信息已失效,重新获取token----->>>{}");
+        }
+        headers.put("Auth-Token",JSONObject.parseObject(tokenObj.getString("data")).getString("token"));
+        String content = HttpUtil.httpPostRequest(RobotConstant.CUSTOMER_IMPORT,result,headers);
+        JSONObject jsonObject = JSONObject.parseObject(content);
+        if (!"0".equals(jsonObject.getString("code"))){
+            log.info("导入数据接口异常======>>>>>{}"+jsonObject);
+            return ResultResponse.error("第三方接口异常,请稍候再试");
+        }
+
+        //更新记录 用户
+        saleClueCallRecordMapper.updateCallRecordUser(userId);
+        JSONArray success = jsonObject.getJSONArray("success");
+        JSONArray error = jsonObject.getJSONArray("error");
+        return ResultResponse.successMsg("本次导入记录,成功"+success.size()+"条;失败"+error.size()+"条。",null);
+    }
+
+
+
+    /**
+     *
+     * @description: 外呼记录查询
+     *
+     * @param
+     * @return: com.ruixuan.common.core.domain.ResultResponse
+     * @author: zianY
+     */
+    @Override
+    public ResultResponse getRobotTelephoneRecordList(){
+
+        PageUtils.startPage();
+        //查询导入记录
+        List<SaleClueCallRecordPojo> callRecordList = saleClueCallRecordMapper.getSaleClueCallRecordInfo();
+        for (SaleClueCallRecordPojo recordPojo : callRecordList) {
+            String record = recordPojo.getContent();
+            JSONObject recordJson = JSONObject.parseObject(record);
+            recordPojo.setSuccessList(recordJson.getJSONArray("success"));
+            recordPojo.setErrorList(recordJson.getJSONArray("error"));
+        }
+        return ResultResponse.successMsg("查询导入记录成功。",callRecordList);
+    }
+
+
+
+
 }
 }

+ 44 - 0
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueCallRecordMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruixuan.salesLeads.mapper.SaleClueCallRecordMapper">
+
+
+	<!--  -->
+	<insert id="addSaleCallRecord">
+		replace into sale_clue_call_record(
+		content
+	)
+		values
+			(
+			#{content}
+
+			)
+
+	</insert>
+
+
+<!-- 查询 导入记录-->
+	<select id="getSaleClueCallRecordInfo" resultType="com.ruixuan.salesLeads.pojo.SaleClueCallRecordPojo">
+		SELECT
+		id,content,create_user_id,
+		(SELECT u.nick_name from sys_user u where u.user_id = create_user_id) createUserName
+		FROM
+		sale_clue_call_record
+		ORDER BY create_time DESC
+	</select>
+
+
+	<!-- 修改用户id -->
+	<update id="updateCallRecordUser">
+		UPDATE sale_clue_call_record
+		SET create_user_id = #{userId}
+			ORDER BY
+		create_time DESC
+		LIMIT 1
+	</update>
+
+
+
+</mapper> 

+ 1 - 1
ruixuan-salesLeads/src/main/resources/mapper/salesLeads/SaleClueInfoMapper.xml

@@ -229,7 +229,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
 
 
 
-	<!-- 卖家id 查询销售记录信息  -->
+	<!-- 卖家id 查询销售信息  -->
 	<select id="selectSaleClueInfoBySellerId" resultType="com.ruixuan.salesLeads.pojo.vo.SaleRecordVo">
 	<select id="selectSaleClueInfoBySellerId" resultType="com.ruixuan.salesLeads.pojo.vo.SaleRecordVo">
 		SELECT
 		SELECT
 		s.id,
 		s.id,