فهرست منبع

新增一些接口支撑系统对接

peicj 1 هفته پیش
والد
کامیت
468e2f1e13

+ 103 - 5
ruoyi-admin/src/main/java/com/ruoyi/aicall/controller/ApiController.java

@@ -28,8 +28,6 @@ import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.uuid.UuidGenerator;
 import com.ruoyi.framework.shiro.service.SysPasswordService;
 import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomUtils;
@@ -41,6 +39,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Controller
 @Slf4j
@@ -75,6 +74,14 @@ public class ApiController extends BaseController {
     private ISysUserService userService;
     @Autowired
     private SysPasswordService passwordService;
+    @Autowired
+    private ICcCustCallRecordService ccCustCallRecordService;
+    @Autowired
+    private ICcCustInfoService ccCustInfoService;
+    @Autowired
+    private ISysDivisionDataService sysDivisionDataService;
+    @Autowired
+    private ICcOutboundCdrService ccOutboundCdrService;
 
     /**
      * 获取外呼网关列表接口
@@ -1075,6 +1082,13 @@ public class ApiController extends BaseController {
         callConfig.put("loginToken", loginToken);
         callConfig.put("encryptPsw", encryptStr);
         callConfig.put("gatewayList", gatewayList);
+        //登录账号
+        callConfig.put("opNum", opnum);
+        //登录用户名称
+        SysUser sysUser = userService.selectUserByLoginName(opnum);
+        if(sysUser != null){
+            callConfig.put("userName", sysUser.getUserName());
+        }
 
         return AjaxResult.success(callConfig);
 
@@ -1166,13 +1180,97 @@ public class ApiController extends BaseController {
             CcExtNum extNum = new CcExtNum();
             extNum.setExtNum(user.getExtNum());
             extNum.setUserCode(user.getLoginName());
-            int num = ccExtNumService.updateCcExtNumByUserCode(extNum);
-            if(num>0){
-                return AjaxResult.success(user);
+            //先清除原分机绑定
+            int cleanNum = ccExtNumService.cleanCcExtNumByUserCode(user.getLoginName());
+            if(cleanNum>0){
+                int updateNum = ccExtNumService.updateCcExtNumByUserCode(extNum);
+                if(updateNum>0){
+                    return AjaxResult.success(user);
+                }
             }
         }
         throw new RuntimeException("修改用户失败");
     }
 
 
+    /**
+     * 获取手动外呼客户沟通信息
+     * @param phoneNum 手机号
+     * @param callType 类型  1呼入 2外呼
+     * @param uuid  通话uuid
+     */
+    @GetMapping("/getCustCommunicationInfo")
+    @ResponseBody
+    public AjaxResult getCustCommunicationInfo(@RequestParam("phoneNum") String phoneNum, @RequestParam("callType") Integer callType, @RequestParam("uuid") String uuid)
+    {
+        Map<String,Object> mmap = new HashMap<>();
+        CcCustInfo ccCustInfo = ccCustInfoService.selectCcCustInfoByPhoneNum(phoneNum);
+        if (null == ccCustInfo) {
+            ccCustInfo = new CcCustInfo();
+            ccCustInfo.setCallRecordList(new ArrayList<>());
+        } else {
+            ccCustInfo.setCallRecordList(ccCustCallRecordService.selectCcCustCallRecordList(new CcCustCallRecord().setCustId(ccCustInfo.getId())));
+        }
+        ccCustInfo.setPhoneNum(phoneNum);
+        mmap.put("ccCustInfo", ccCustInfo);
+        mmap.put("callType", callType);
+        mmap.put("uuid", uuid);
+        // 省下拉框
+        List<SysDivisionData> sysDivisionData = sysDivisionDataService.selectSysDivisionDataList(null);
+        List<SysDivisionData> provinces = sysDivisionData.stream()
+                .filter(d -> d.getDeep() == 0)
+                .collect(Collectors.toList());
+        mmap.put("provinces", provinces);
+        // 市下拉框
+        List<SysDivisionData> citys = sysDivisionData.stream()
+                .filter(d -> d.getDeep() == 1)
+                .collect(Collectors.toList());
+        mmap.put("citys", citys);
+        // 区县下拉框
+        List<SysDivisionData> countys = sysDivisionData.stream()
+                .filter(d -> d.getDeep() == 2)
+                .collect(Collectors.toList());
+        mmap.put("countys", countys);
+        return AjaxResult.success(mmap);
+    }
+
+    /**
+     * 新增保存手动外呼沟通记录
+     */
+    @PostMapping("/add/custcallrecord")
+    @ResponseBody
+    public AjaxResult addAustcallrecord(@RequestBody CcCustInfo ccCustInfo)
+    {
+        ccCustInfoService.updateCcCustInfo(ccCustInfo);
+        CcCustInfo custInfoBak = ccCustInfoService.selectCcCustInfoByPhoneNum(ccCustInfo.getPhoneNum());
+        CcCustCallRecord callRecord = JSONObject.parseObject(ccCustInfo.getCallRecord(), CcCustCallRecord.class);
+        callRecord.setCustId(custInfoBak.getId());
+        //这里改成查询
+
+        callRecord.setUserId(ccCustInfo.getOpNum());
+        callRecord.setUserRealName(ccCustInfo.getUserName());
+        callRecord.setCreateTime(new Date());
+        CcCustCallRecord hisCallRecord = ccCustCallRecordService.selectCcCustCallRecordByUuid(callRecord.getUuid());
+        if (null == hisCallRecord) {
+            return toAjax(ccCustCallRecordService.insertCcCustCallRecord(callRecord));
+        } else {
+            callRecord.setId(hisCallRecord.getId());
+            return toAjax(ccCustCallRecordService.updateCcCustCallRecord(callRecord));
+        }
+    }
+
+    /**
+     * 查询手动外呼记录列表
+     */
+    @PostMapping("/outboundcdrList")
+    @ResponseBody
+    public TableDataInfo outboundcdrList(@RequestBody CcOutboundCdr ccOutboundCdr)
+    {
+        startPage();
+        List<CcOutboundCdr> list = ccOutboundCdrService.selectCcOutboundCdrList(ccOutboundCdr);
+        for (CcOutboundCdr data: list) {
+            data.setWavFileUrl("/recordings/files?filename=" + data.getRecordFilename());
+        }
+        return getDataTable(list);
+    }
 }

+ 4 - 4
ruoyi-admin/src/main/java/com/ruoyi/cc/domain/CcCustInfo.java

@@ -3,10 +3,7 @@ package com.ruoyi.cc.domain;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.experimental.Accessors;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -80,5 +77,8 @@ public class CcCustInfo implements Serializable {
 
     // 详情带的参数
     private List<CcCustCallRecord> callRecordList;
-
+    //登陆账号
+    private String opNum;
+    //用户名称
+    private String userName;
 }

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/cc/mapper/CcExtNumMapper.java

@@ -71,4 +71,6 @@ public interface CcExtNumMapper
      * @return
      */
     int updateCcExtNumByUserCode(CcExtNum extNum);
+
+    int cleanCcExtNumByUserCode(String loginName);
 }

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/cc/service/ICcExtNumService.java

@@ -96,4 +96,6 @@ public interface ICcExtNumService
      * @return
      */
     int updateCcExtNumByUserCode(CcExtNum extNum);
+
+    int cleanCcExtNumByUserCode(String loginName);
 }

+ 5 - 2
ruoyi-admin/src/main/java/com/ruoyi/cc/service/impl/CcExtNumServiceImpl.java

@@ -10,13 +10,11 @@ import com.auth0.jwt.algorithms.Algorithm;
 import com.ruoyi.cc.service.ICcParamsService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import com.ruoyi.cc.mapper.CcExtNumMapper;
 import com.ruoyi.cc.domain.CcExtNum;
 import com.ruoyi.cc.service.ICcExtNumService;
 import com.ruoyi.common.core.text.Convert;
-import org.springframework.util.CollectionUtils;
 
 /**
  * 【请填写功能名称】Service业务层处理
@@ -167,4 +165,9 @@ public class CcExtNumServiceImpl implements ICcExtNumService
     public int updateCcExtNumByUserCode(CcExtNum extNum) {
         return ccExtNumMapper.updateCcExtNumByUserCode(extNum);
     }
+
+    @Override
+    public int cleanCcExtNumByUserCode(String loginName) {
+        return ccExtNumMapper.cleanCcExtNumByUserCode(loginName);
+    }
 }

+ 4 - 1
ruoyi-admin/src/main/resources/mapper/cc/CcExtNumMapper.xml

@@ -70,6 +70,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <update id="updateCcExtNumByUserCode" parameterType="CcExtNum">
-        update cc_ext_num set ext_num = #{extNum} where user_code = #{userCode}
+        update cc_ext_num set user_code = #{userCode} where ext_num = #{extNum}
+    </update>
+    <update id="cleanCcExtNumByUserCode" parameterType="String">
+        update cc_ext_num set user_code = '' where user_code = #{userCode}
     </update>
 </mapper>

+ 4 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java

@@ -315,6 +315,10 @@ public class ShiroConfig
         //分机操作
         filterChainDefinitionMap.put("/aicall/api/extnum/selectUnBindCcExtNumList", "anon");
         filterChainDefinitionMap.put("/aicall/api/extnum/edit", "anon");
+        //手动外呼
+        filterChainDefinitionMap.put("/aicall/api/getCustCommunicationInfo", "anon");
+        filterChainDefinitionMap.put("/aicall/api/add/custcallrecord", "anon");
+        filterChainDefinitionMap.put("/aicall/api/outboundcdrList", "anon");
 
 
         // 匿名访问不鉴权注解列表