Quellcode durchsuchen

我的企微客户添加聊天记录

xgb vor 2 Tagen
Ursprung
Commit
52eabc705c

+ 1 - 1
fs-company/src/main/java/com/fs/company/controller/course/FsCourseWatchLogController.java

@@ -330,7 +330,7 @@ public class FsCourseWatchLogController extends BaseController
     /**
      * 修改短链课程看课记录
      */
-    @PreAuthorize("@ss.hasPermi('course:courseWatchLog:edit')")
+//    @PreAuthorize("@ss.hasPermi('course:courseWatchLog:edit')")
     @Log(title = "短链课程看课记录", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody FsCourseWatchLog fsCourseWatchLog)

+ 75 - 0
fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactCommunicationController.java

@@ -0,0 +1,75 @@
+package com.fs.company.controller.qw;
+
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.enums.BusinessType;
+import com.fs.qw.domain.QwExternalContactCommunication;
+import com.fs.qw.service.IQwExternalContactCommunicationService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@RestController
+@RequestMapping("/qw/communication")
+public class QwExternalContactCommunicationController extends BaseController {
+
+    @Autowired
+    private IQwExternalContactCommunicationService communicationService;
+
+    /**
+     * 查询沟通内容列表
+     */
+    @ApiOperation("查询沟通内容列表")
+//    @PreAuthorize("@ss.hasPermi('qw:communication:list')")
+    @GetMapping("/list/{externalContactId}")
+    public AjaxResult list(@PathVariable String externalContactId) {
+        List<QwExternalContactCommunication> list = communicationService.getListByExternalContactId(externalContactId);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 新增沟通内容
+     */
+    @ApiOperation("新增沟通内容")
+//    @PreAuthorize("@ss.hasPermi('qw:communication:add')")
+    @Log(title = "沟通内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody QwExternalContactCommunication communication) {
+        // 设置聊天时间为当前时间(如果前端没有传)
+        if (communication.getChatTime() == null) {
+            communication.setChatTime(new Date());
+        }
+        return toAjax(communicationService.saveCommunication(communication));
+    }
+
+    /**
+     * 修改沟通内容
+     */
+    @ApiOperation("修改沟通内容")
+//    @PreAuthorize("@ss.hasPermi('qw:communication:edit')")
+    @Log(title = "沟通内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody QwExternalContactCommunication communication) {
+        return toAjax(communicationService.updateById(communication));
+    }
+
+    /**
+     * 删除沟通内容
+     */
+    @ApiOperation("删除沟通内容")
+//    @PreAuthorize("@ss.hasPermi('qw:communication:remove')")
+    @Log(title = "沟通内容", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult deleteCommunication(@PathVariable Long[] ids) {
+        // Java 8 兼容写法
+        return toAjax(communicationService.deleteCommunicationByIds(ids));
+    }
+}
+

+ 69 - 0
fs-service/src/main/java/com/fs/qw/domain/QwExternalContactCommunication.java

@@ -0,0 +1,69 @@
+package com.fs.qw.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 企微客户沟通内容记录对象 qw_external_contact_communication
+ */
+@Data
+@TableName("qw_external_contact_communication")
+public class QwExternalContactCommunication implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /** 企微客户ID */
+    @TableField("external_contact_id")
+    private String externalContactId;
+
+    /** 企微员工ID */
+    @TableField("qw_user_id")
+    private String qwUserId;
+
+    /** 销售ID */
+    @TableField("company_user_id")
+    private Long companyUserId;
+
+    /** 看课记录ID */
+    @TableField("course_watch_log_id")
+    private Long courseWatchLogId;
+
+    /** 内容类型:1-手动添加,2-看课记录同步 */
+    @TableField("content_type")
+    private Integer contentType;
+
+    /** 沟通内容 */
+    @TableField("communication_content")
+    private String communicationContent;
+
+    /** 聊天时间 */
+    @TableField("chat_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date chatTime;
+
+    /** 创建者 */
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 更新者 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /** 备注 */
+    @TableField("remark")
+    private String remark;
+}

+ 27 - 0
fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactCommunicationMapper.java

@@ -0,0 +1,27 @@
+package com.fs.qw.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.qw.domain.QwExternalContactCommunication;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+@Mapper
+public interface QwExternalContactCommunicationMapper extends BaseMapper<QwExternalContactCommunication> {
+
+    /**
+     * 根据客户ID查询沟通内容列表(按聊天时间倒序)
+     *
+     * @param externalContactId 企微客户ID
+     * @return 沟通内容列表
+     */
+    List<QwExternalContactCommunication> selectListByExternalContactId(@Param("externalContactId") String externalContactId);
+
+    /**
+     * 根据看课记录ID查询沟通内容
+     *
+     * @param courseWatchLogId 看课记录ID
+     * @return 沟通内容对象
+     */
+    QwExternalContactCommunication selectByWatchLogId(@Param("courseWatchLogId") Long courseWatchLogId);
+}

+ 43 - 0
fs-service/src/main/java/com/fs/qw/service/IQwExternalContactCommunicationService.java

@@ -0,0 +1,43 @@
+package com.fs.qw.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.qw.domain.QwExternalContactCommunication;
+
+import java.util.List;
+
+public interface IQwExternalContactCommunicationService extends IService<QwExternalContactCommunication> {
+
+    /**
+     * 保存沟通内容(每次都新增)
+     *
+     * @param communication 沟通内容对象
+     * @return 结果
+     */
+    boolean saveCommunication(QwExternalContactCommunication communication);
+
+    /**
+     * 根据客户ID查询沟通内容列表(按聊天时间倒序)
+     *
+     * @param externalContactId 企微客户ID
+     * @return 沟通内容列表
+     */
+    List<QwExternalContactCommunication> getListByExternalContactId(String externalContactId);
+
+    /**
+     * 根据看课记录ID查询沟通内容
+     *
+     * @param courseWatchLogId 看课记录ID
+     * @return 沟通内容对象
+     */
+    QwExternalContactCommunication getByWatchLogId(Long courseWatchLogId);
+
+
+    /**
+     * 批量删除沟通内容
+     *
+     * @param ids 需要删除的ID数组
+     * @return 结果
+     */
+    boolean deleteCommunicationByIds(Long[] ids);
+}
+

+ 77 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactCommunicationServiceImpl.java

@@ -0,0 +1,77 @@
+package com.fs.qw.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.qw.domain.QwExternalContactCommunication;
+import com.fs.qw.mapper.QwExternalContactCommunicationMapper;
+import com.fs.qw.service.IQwExternalContactCommunicationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 企微客户沟通内容记录Service业务层处理
+ */
+@Service
+public class QwExternalContactCommunicationServiceImpl
+        extends ServiceImpl<QwExternalContactCommunicationMapper, QwExternalContactCommunication>
+        implements IQwExternalContactCommunicationService {
+
+    @Autowired
+    private QwExternalContactCommunicationMapper communicationMapper;
+
+    /**
+     * 保存沟通内容(每次都新增)
+     *
+     * @param communication 沟通内容对象
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveCommunication(QwExternalContactCommunication communication) {
+        // 如果没有设置聊天时间,默认使用当前时间
+        if (communication.getChatTime() == null) {
+            communication.setChatTime(new Date());
+        }
+        // 每次都新增记录
+        return communicationMapper.insert(communication) > 0;
+    }
+
+    /**
+     * 根据客户ID查询沟通内容列表(按聊天时间倒序)
+     *
+     * @param externalContactId 企微客户ID
+     * @return 沟通内容列表
+     */
+    @Override
+    public List<QwExternalContactCommunication> getListByExternalContactId(String externalContactId) {
+        return communicationMapper.selectListByExternalContactId(externalContactId);
+    }
+
+    /**
+     * 根据看课记录ID查询沟通内容
+     *
+     * @param courseWatchLogId 看课记录ID
+     * @return 沟通内容对象
+     */
+    @Override
+    public QwExternalContactCommunication getByWatchLogId(Long courseWatchLogId) {
+        return communicationMapper.selectByWatchLogId(courseWatchLogId);
+    }
+
+    /**
+     * 批量删除沟通内容
+     *
+     * @param ids 需要删除的ID数组
+     * @return 结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteCommunicationByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+}

+ 37 - 0
fs-service/src/main/resources/mapper/qw/QwExternalContactCommunicationMapper.xml

@@ -0,0 +1,37 @@
+<?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.fs.qw.mapper.QwExternalContactCommunicationMapper">
+
+    <resultMap type="com.fs.qw.domain.QwExternalContactCommunication" id="QwExternalContactCommunicationResult">
+        <id     property="id"                    column="id"                      />
+        <result property="externalContactId"     column="external_contact_id"     />
+        <result property="qwUserId"              column="qw_user_id"              />
+        <result property="companyUserId"         column="company_user_id"         />
+        <result property="courseWatchLogId"      column="course_watch_log_id"     />
+        <result property="contentType"           column="content_type"            />
+        <result property="communicationContent"  column="communication_content"   />
+        <result property="chatTime"              column="chat_time"               />
+        <result property="createBy"              column="create_by"               />
+        <result property="createTime"            column="create_time"             />
+        <result property="updateBy"              column="update_by"               />
+        <result property="updateTime"            column="update_time"             />
+        <result property="remark"                column="remark"                  />
+    </resultMap>
+
+    <!-- 根据客户ID查询沟通内容列表(按聊天时间倒序) -->
+    <select id="selectListByExternalContactId" resultMap="QwExternalContactCommunicationResult">
+        SELECT * FROM qw_external_contact_communication
+        WHERE external_contact_id = #{externalContactId}
+        ORDER BY chat_time DESC, create_time DESC
+    </select>
+
+    <!-- 根据看课记录ID查询沟通内容 -->
+    <select id="selectByWatchLogId" resultMap="QwExternalContactCommunicationResult">
+        SELECT * FROM qw_external_contact_communication
+        WHERE course_watch_log_id = #{courseWatchLogId}
+            LIMIT 1
+    </select>
+
+</mapper>