话术管理模块开发
parent
76fc0f2cb7
commit
6e9a23d930
@ -0,0 +1,70 @@
|
||||
package com.flossom.common.core.mapper;
|
||||
|
||||
import com.flossom.common.core.domain.entity.WxScriptTag;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 话术模板与标签关联Mapper接口
|
||||
*
|
||||
* @author flossom
|
||||
* @date 2023-12-18
|
||||
*/
|
||||
public interface WxScriptTagMapper
|
||||
{
|
||||
/**
|
||||
* 查询话术模板与标签关联
|
||||
*
|
||||
* @param id 话术模板与标签关联主键
|
||||
* @return 话术模板与标签关联
|
||||
*/
|
||||
public WxScriptTag selectWxScriptTagById(Long id);
|
||||
|
||||
/**
|
||||
* 查询话术模板与标签关联列表
|
||||
*
|
||||
* @param wxScriptTag 话术模板与标签关联
|
||||
* @return 话术模板与标签关联集合
|
||||
*/
|
||||
public List<WxScriptTag> selectWxScriptTagList(WxScriptTag wxScriptTag);
|
||||
|
||||
/**
|
||||
* 新增话术模板与标签关联
|
||||
*
|
||||
* @param wxScriptTag 话术模板与标签关联
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertWxScriptTag(WxScriptTag wxScriptTag);
|
||||
|
||||
/**
|
||||
* 修改话术模板与标签关联
|
||||
*
|
||||
* @param wxScriptTag 话术模板与标签关联
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateWxScriptTag(WxScriptTag wxScriptTag);
|
||||
|
||||
/**
|
||||
* 删除话术模板与标签关联
|
||||
*
|
||||
* @param id 话术模板与标签关联主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWxScriptTagById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除话术模板与标签关联
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWxScriptTagByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 根据话术ID删除关联数据
|
||||
*
|
||||
* @param scriptId 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWxScriptByScriptId(Long scriptId);
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
package com.flossom.common.core.mapper;
|
||||
|
||||
import com.flossom.common.core.domain.entity.WxScriptTemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 话术模板Mapper接口
|
||||
*
|
||||
* @author flossom
|
||||
* @date 2023-12-18
|
||||
*/
|
||||
public interface WxScriptTemplateMapper
|
||||
{
|
||||
/**
|
||||
* 查询话术模板
|
||||
*
|
||||
* @param id 话术模板主键
|
||||
* @return 话术模板
|
||||
*/
|
||||
public WxScriptTemplate selectWxScriptTemplateById(Long id);
|
||||
|
||||
/**
|
||||
* 是否存在子节点
|
||||
*
|
||||
* @param id 标签ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int hasChildByScriptId(Long id);
|
||||
|
||||
|
||||
/**
|
||||
* 查询话术模板列表
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 话术模板集合
|
||||
*/
|
||||
public List<WxScriptTemplate> selectWxScriptTemplateList(WxScriptTemplate wxScriptTemplate);
|
||||
|
||||
/**
|
||||
* 新增话术模板
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertWxScriptTemplate(WxScriptTemplate wxScriptTemplate);
|
||||
|
||||
/**
|
||||
* 修改话术模板
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateWxScriptTemplate(WxScriptTemplate wxScriptTemplate);
|
||||
|
||||
/**
|
||||
* 删除话术模板
|
||||
*
|
||||
* @param id 话术模板主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWxScriptTemplateById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除话术模板
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWxScriptTemplateByIds(Long[] ids);
|
||||
}
|
||||
@ -0,0 +1,90 @@
|
||||
<?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.flossom.common.core.mapper.WxScriptTagMapper">
|
||||
|
||||
<resultMap type="WxScriptTag" id="WxScriptTagResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="scriptId" column="script_id" />
|
||||
<result property="tagId" column="tag_id" />
|
||||
<result property="status" column="status" />
|
||||
<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>
|
||||
|
||||
<sql id="selectWxScriptTagVo">
|
||||
select id, script_id, tag_id, status, create_by, create_time, update_by, update_time, remark from wx_script_tag
|
||||
</sql>
|
||||
|
||||
<select id="selectWxScriptTagList" parameterType="WxScriptTag" resultMap="WxScriptTagResult">
|
||||
<include refid="selectWxScriptTagVo"/>
|
||||
<where>
|
||||
<if test="scriptId != null "> and script_id = #{scriptId}</if>
|
||||
<if test="tagId != null "> and tag_id = #{tagId}</if>
|
||||
<if test="status != null "> and status = #{status}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectWxScriptTagById" parameterType="Long" resultMap="WxScriptTagResult">
|
||||
<include refid="selectWxScriptTagVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertWxScriptTag" parameterType="WxScriptTag" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into wx_script_tag
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="scriptId != null">script_id,</if>
|
||||
<if test="tagId != null">tag_id,</if>
|
||||
<if test="status != null">status,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="scriptId != null">#{scriptId},</if>
|
||||
<if test="tagId != null">#{tagId},</if>
|
||||
<if test="status != null">#{status},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateWxScriptTag" parameterType="WxScriptTag">
|
||||
update wx_script_tag
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="scriptId != null">script_id = #{scriptId},</if>
|
||||
<if test="tagId != null">tag_id = #{tagId},</if>
|
||||
<if test="status != null">status = #{status},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteWxScriptByScriptId" parameterType="Long">
|
||||
delete from wx_script_tag where script_id = #{scriptId}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteWxScriptTagById" parameterType="Long">
|
||||
delete from wx_script_tag where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteWxScriptTagByIds" parameterType="String">
|
||||
delete from wx_script_tag where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
||||
@ -0,0 +1,155 @@
|
||||
<?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.flossom.common.core.mapper.WxScriptTemplateMapper">
|
||||
|
||||
<resultMap type="WxScriptTemplate" id="WxScriptTemplateResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="tagNames" column="tag_names" />
|
||||
<result property="tagIds" column="tag_ids" />
|
||||
<result property="scriptName" column="script_name" />
|
||||
<result property="titile" column="titile" />
|
||||
<result property="content" column="content" />
|
||||
<result property="level" column="level" />
|
||||
<result property="tagType" column="tag_type" />
|
||||
<result property="type" column="type" />
|
||||
<result property="link" column="link" />
|
||||
<result property="linkParams" column="link_params" />
|
||||
<result property="redirectAppid" column="redirect_appid" />
|
||||
<result property="redirectUrl" column="redirect_url" />
|
||||
<result property="videoNo" column="video_no" />
|
||||
<result property="feedId" column="feed_id" />
|
||||
<result property="parentId" column="parent_id" />
|
||||
<result property="status" column="status" />
|
||||
<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>
|
||||
|
||||
<sql id="selectWxScriptTemplateVo">
|
||||
select id,tag_ids,tag_names,script_name, titile, content, level, tag_type, type, link, link_params, redirect_appid, redirect_url, video_no, feed_id, parent_id, status, create_by, create_time, update_by, update_time, remark from wx_script_template
|
||||
</sql>
|
||||
|
||||
<select id="selectWxScriptTemplateList" parameterType="WxScriptTemplate" resultMap="WxScriptTemplateResult">
|
||||
<include refid="selectWxScriptTemplateVo"/>
|
||||
<where>
|
||||
<if test="scriptName != null and scriptName != ''"> and script_name = #{scriptName}</if>
|
||||
<if test="titile != null and titile != ''"> and titile = #{titile}</if>
|
||||
<if test="content != null and content != ''"> and content = #{content}</if>
|
||||
<if test="level != null "> and level = #{level}</if>
|
||||
<if test="tagType != null "> and tag_type = #{tagType}</if>
|
||||
<if test="type != null "> and type = #{type}</if>
|
||||
<if test="link != null and link != ''"> and link = #{link}</if>
|
||||
<if test="linkParams != null and linkParams != ''"> and link_params = #{linkParams}</if>
|
||||
<if test="redirectAppid != null and redirectAppid != ''"> and redirect_appid = #{redirectAppid}</if>
|
||||
<if test="redirectUrl != null and redirectUrl != ''"> and redirect_url = #{redirectUrl}</if>
|
||||
<if test="videoNo != null "> and video_no = #{videoNo}</if>
|
||||
<if test="feedId != null "> and feed_id = #{feedId}</if>
|
||||
<if test="parentId != null "> and parent_id = #{parentId}</if>
|
||||
<if test="status != null "> and status = #{status}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectWxScriptTemplateById" parameterType="Long" resultMap="WxScriptTemplateResult">
|
||||
<include refid="selectWxScriptTemplateVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="hasChildByScriptId" parameterType="Long" resultType="int">
|
||||
select count(1) from wx_script_template
|
||||
where parent_id = #{id} limit 1
|
||||
</select>
|
||||
|
||||
<insert id="insertWxScriptTemplate" parameterType="WxScriptTemplate" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into wx_script_template
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="tagNames != null">tag_names,</if>
|
||||
<if test="tagIds != null">tag_ids,</if>
|
||||
<if test="scriptName != null">script_name,</if>
|
||||
<if test="titile != null">titile,</if>
|
||||
<if test="content != null">content,</if>
|
||||
<if test="level != null">level,</if>
|
||||
<if test="tagType != null">tag_type,</if>
|
||||
<if test="type != null">type,</if>
|
||||
<if test="link != null">link,</if>
|
||||
<if test="linkParams != null">link_params,</if>
|
||||
<if test="redirectAppid != null">redirect_appid,</if>
|
||||
<if test="redirectUrl != null">redirect_url,</if>
|
||||
<if test="videoNo != null">video_no,</if>
|
||||
<if test="feedId != null">feed_id,</if>
|
||||
<if test="parentId != null">parent_id,</if>
|
||||
<if test="status != null">status,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="tagNames != null">#{tagNames},</if>
|
||||
<if test="tagIds != null">#{tagIds},</if>
|
||||
<if test="scriptName != null">#{scriptName},</if>
|
||||
<if test="titile != null">#{titile},</if>
|
||||
<if test="content != null">#{content},</if>
|
||||
<if test="level != null">#{level},</if>
|
||||
<if test="tagType != null">#{tagType},</if>
|
||||
<if test="type != null">#{type},</if>
|
||||
<if test="link != null">#{link},</if>
|
||||
<if test="linkParams != null">#{linkParams},</if>
|
||||
<if test="redirectAppid != null">#{redirectAppid},</if>
|
||||
<if test="redirectUrl != null">#{redirectUrl},</if>
|
||||
<if test="videoNo != null">#{videoNo},</if>
|
||||
<if test="feedId != null">#{feedId},</if>
|
||||
<if test="parentId != null">#{parentId},</if>
|
||||
<if test="status != null">#{status},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateWxScriptTemplate" parameterType="WxScriptTemplate">
|
||||
update wx_script_template
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="tagNames != null">tag_names = #{tagNames},</if>
|
||||
<if test="tagIds != null">tag_ids = #{tagIds},</if>
|
||||
<if test="scriptName != null">script_name = #{scriptName},</if>
|
||||
<if test="titile != null">titile = #{titile},</if>
|
||||
<if test="content != null">content = #{content},</if>
|
||||
<if test="level != null">level = #{level},</if>
|
||||
<if test="tagType != null">tag_type = #{tagType},</if>
|
||||
<if test="type != null">type = #{type},</if>
|
||||
<if test="link != null">link = #{link},</if>
|
||||
<if test="linkParams != null">link_params = #{linkParams},</if>
|
||||
<if test="redirectAppid != null">redirect_appid = #{redirectAppid},</if>
|
||||
<if test="redirectUrl != null">redirect_url = #{redirectUrl},</if>
|
||||
<if test="videoNo != null">video_no = #{videoNo},</if>
|
||||
<if test="feedId != null">feed_id = #{feedId},</if>
|
||||
<if test="parentId != null">parent_id = #{parentId},</if>
|
||||
<if test="status != null">status = #{status},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteWxScriptTemplateById" parameterType="Long">
|
||||
delete from wx_script_template where id = #{id}
|
||||
</delete>
|
||||
|
||||
|
||||
<delete id="deleteWxScriptTemplateByIds" parameterType="String">
|
||||
delete from wx_script_template where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
||||
@ -0,0 +1,125 @@
|
||||
package com.flossom.system.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.flossom.common.core.domain.entity.SysTag;
|
||||
import com.flossom.common.core.domain.entity.WxScriptTemplate;
|
||||
import com.flossom.common.core.utils.StringUtils;
|
||||
import com.flossom.common.core.utils.poi.ExcelUtil;
|
||||
import com.flossom.common.core.web.controller.BaseController;
|
||||
import com.flossom.common.core.web.domain.AjaxResult;
|
||||
import com.flossom.common.core.web.page.TableDataInfo;
|
||||
import com.flossom.common.log.annotation.Log;
|
||||
import com.flossom.common.log.enums.BusinessType;
|
||||
import com.flossom.common.security.annotation.RequiresPermissions;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.flossom.system.service.IWxScriptTemplateService;
|
||||
|
||||
/**
|
||||
* 话术模板Controller
|
||||
*
|
||||
* @author flossom
|
||||
* @date 2023-12-18
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/scriptTemplate")
|
||||
public class WxScriptTemplateController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IWxScriptTemplateService wxScriptTemplateService;
|
||||
|
||||
/**
|
||||
* 查询话术模板列表
|
||||
*/
|
||||
@RequiresPermissions("system:scriptTemplate:list")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(WxScriptTemplate wxScriptTemplate)
|
||||
{
|
||||
List<WxScriptTemplate> list = wxScriptTemplateService.selectWxScriptTemplateList(wxScriptTemplate);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出话术模板列表
|
||||
*/
|
||||
@RequiresPermissions("system:scriptTemplate:export")
|
||||
@Log(title = "话术模板", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, WxScriptTemplate wxScriptTemplate)
|
||||
{
|
||||
List<WxScriptTemplate> list = wxScriptTemplateService.selectWxScriptTemplateList(wxScriptTemplate);
|
||||
ExcelUtil<WxScriptTemplate> util = new ExcelUtil<WxScriptTemplate>(WxScriptTemplate.class);
|
||||
util.exportExcel(response, list, "话术模板数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取话术模板详细信息
|
||||
*/
|
||||
@RequiresPermissions("system:scriptTemplate:query")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return success(wxScriptTemplateService.selectWxScriptTemplateById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增话术模板
|
||||
*/
|
||||
@RequiresPermissions("system:scriptTemplate:add")
|
||||
@Log(title = "话术模板", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody WxScriptTemplate wxScriptTemplate)
|
||||
{
|
||||
return toAjax(wxScriptTemplateService.insertWxScriptTemplate(wxScriptTemplate));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改话术模板
|
||||
*/
|
||||
@RequiresPermissions("system:scriptTemplate:edit")
|
||||
@Log(title = "话术模板", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody WxScriptTemplate wxScriptTemplate)
|
||||
{
|
||||
System.out.println("标签数组==》"+wxScriptTemplate.getTagIds().toString());
|
||||
return toAjax(wxScriptTemplateService.updateWxScriptTemplate(wxScriptTemplate));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除话术模板
|
||||
*/
|
||||
@RequiresPermissions("system:scriptTemplate:remove")
|
||||
@Log(title = "话术模板", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public AjaxResult remove(@PathVariable Long id)
|
||||
{
|
||||
if (wxScriptTemplateService.hasChildByScriptId(id))
|
||||
{
|
||||
return warn("存在下级标签,不允许删除");
|
||||
}
|
||||
return toAjax(wxScriptTemplateService.deleteWxScriptTemplateById(id));
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 查询标签列表(排除节点)
|
||||
// */
|
||||
// @RequiresPermissions("system:scriptTemplate:list")
|
||||
// @GetMapping("/list/exclude/{id}")
|
||||
// public AjaxResult excludeChild(@PathVariable(value = "id", required = false) Long id)
|
||||
// {
|
||||
// List<WxScriptTemplate> tags = wxScriptTemplateService.selectWxScriptTemplateList(new WxScriptTemplate());
|
||||
// tags.removeIf(d -> d.getId().intValue() == id || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), id + ""));
|
||||
// return success(tags);
|
||||
// }
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package com.flossom.system.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.flossom.common.core.domain.entity.WxScriptTemplate;
|
||||
|
||||
/**
|
||||
* 话术模板Service接口
|
||||
*
|
||||
* @author flossom
|
||||
* @date 2023-12-18
|
||||
*/
|
||||
public interface IWxScriptTemplateService
|
||||
{
|
||||
/**
|
||||
* 查询话术模板
|
||||
*
|
||||
* @param id 话术模板主键
|
||||
* @return 话术模板
|
||||
*/
|
||||
public WxScriptTemplate selectWxScriptTemplateById(Long id);
|
||||
|
||||
/**
|
||||
* 查询话术模板列表
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 话术模板集合
|
||||
*/
|
||||
public List<WxScriptTemplate> selectWxScriptTemplateList(WxScriptTemplate wxScriptTemplate);
|
||||
|
||||
/**
|
||||
* 新增话术模板
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertWxScriptTemplate(WxScriptTemplate wxScriptTemplate);
|
||||
|
||||
/**
|
||||
* 修改话术模板
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateWxScriptTemplate(WxScriptTemplate wxScriptTemplate);
|
||||
|
||||
/**
|
||||
* 批量删除话术模板
|
||||
*
|
||||
* @param ids 需要删除的话术模板主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWxScriptTemplateByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除话术模板信息
|
||||
*
|
||||
* @param id 话术模板主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWxScriptTemplateById(Long id);
|
||||
|
||||
/**
|
||||
* 是否存在标签子节点
|
||||
*
|
||||
* @param id 标签ID
|
||||
* @return 结果
|
||||
*/
|
||||
public boolean hasChildByScriptId(Long id);
|
||||
}
|
||||
@ -0,0 +1,185 @@
|
||||
package com.flossom.system.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.flossom.common.core.domain.entity.SysTag;
|
||||
import com.flossom.common.core.domain.entity.WxScriptTag;
|
||||
import com.flossom.common.core.domain.entity.WxScriptTemplate;
|
||||
import com.flossom.common.core.mapper.SysTagMapper;
|
||||
import com.flossom.common.core.mapper.WxScriptTagMapper;
|
||||
import com.flossom.common.core.mapper.WxScriptTemplateMapper;
|
||||
import com.flossom.common.core.utils.DateUtils;
|
||||
import com.flossom.common.core.utils.StringUtils;
|
||||
import com.flossom.common.security.utils.SecurityUtils;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.flossom.system.service.IWxScriptTemplateService;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
/**
|
||||
* 话术模板Service业务层处理
|
||||
*
|
||||
* @author flossom
|
||||
* @date 2023-12-18
|
||||
*/
|
||||
@Service
|
||||
public class WxScriptTemplateServiceImpl implements IWxScriptTemplateService
|
||||
{
|
||||
@Autowired
|
||||
private WxScriptTemplateMapper wxScriptTemplateMapper;
|
||||
@Autowired
|
||||
private WxScriptTagMapper wxScriptTagMapper;
|
||||
@Autowired
|
||||
private SysTagMapper sysTagMapper;
|
||||
/**
|
||||
* 查询话术模板
|
||||
*
|
||||
* @param id 话术模板主键
|
||||
* @return 话术模板
|
||||
*/
|
||||
@Override
|
||||
public WxScriptTemplate selectWxScriptTemplateById(Long id)
|
||||
{
|
||||
return wxScriptTemplateMapper.selectWxScriptTemplateById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询话术模板列表
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 话术模板
|
||||
*/
|
||||
@Override
|
||||
public List<WxScriptTemplate> selectWxScriptTemplateList(WxScriptTemplate wxScriptTemplate)
|
||||
{
|
||||
return wxScriptTemplateMapper.selectWxScriptTemplateList(wxScriptTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增话术模板
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertWxScriptTemplate(WxScriptTemplate wxScriptTemplate)
|
||||
{
|
||||
wxScriptTemplate.setCreateTime(DateUtils.getNowDate());
|
||||
wxScriptTemplate.setCreateBy(SecurityUtils.getLoginUser().getUsername());
|
||||
List<SysTag> sysTags = Lists.newArrayList();
|
||||
// 处理标签在字段的展示
|
||||
List<Long> tagIds = wxScriptTemplate.getTagIdArray();
|
||||
if(!CollectionUtils.isEmpty(tagIds)) {
|
||||
for (long tagId:tagIds) {
|
||||
SysTag sysTag = sysTagMapper.selectDeptById(tagId);
|
||||
if (Objects.nonNull(sysTag)) {
|
||||
sysTags.add(sysTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(sysTags)) {
|
||||
String tagNames = sysTags.stream().map(SysTag::getTagName).collect(Collectors.joining(","));
|
||||
wxScriptTemplate.setTagNames(tagNames);
|
||||
List<Long> resultList = sysTags.stream().map(SysTag::getId).collect(Collectors.toList());
|
||||
String ids = StringUtils.join(resultList, ",");
|
||||
wxScriptTemplate.setTagIds(ids);
|
||||
}
|
||||
|
||||
int i = wxScriptTemplateMapper.insertWxScriptTemplate(wxScriptTemplate);
|
||||
|
||||
for(SysTag tag : sysTags) {
|
||||
// 增加关联关系
|
||||
WxScriptTag scriptTag = new WxScriptTag();
|
||||
scriptTag.setScriptId(wxScriptTemplate.getId());
|
||||
scriptTag.setTagId(tag.getId());
|
||||
scriptTag.setStatus(0l);
|
||||
scriptTag.setCreateBy(SecurityUtils.getLoginUser().getUsername());
|
||||
scriptTag.setCreateTime(DateUtils.getNowDate());
|
||||
wxScriptTagMapper.insertWxScriptTag(scriptTag);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改话术模板
|
||||
*
|
||||
* @param wxScriptTemplate 话术模板
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateWxScriptTemplate(WxScriptTemplate wxScriptTemplate)
|
||||
{
|
||||
wxScriptTemplate.setUpdateTime(DateUtils.getNowDate());
|
||||
wxScriptTemplate.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
|
||||
wxScriptTemplate.setTagIds("");
|
||||
wxScriptTemplate.setTagNames("");
|
||||
List<SysTag> sysTags = Lists.newArrayList();
|
||||
// 处理标签在字段的展示
|
||||
List<Long> tagIds = wxScriptTemplate.getTagIdArray();
|
||||
if(!CollectionUtils.isEmpty(tagIds)) {
|
||||
for (long tagId:tagIds) {
|
||||
SysTag sysTag = sysTagMapper.selectDeptById(tagId);
|
||||
if (Objects.nonNull(sysTag)) {
|
||||
sysTags.add(sysTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(sysTags)) {
|
||||
String tagNames = sysTags.stream().map(SysTag::getTagName).collect(Collectors.joining(","));
|
||||
wxScriptTemplate.setTagNames(tagNames);
|
||||
List<Long> resultList = sysTags.stream().map(SysTag::getId).collect(Collectors.toList());
|
||||
String ids = StringUtils.join(resultList, ",");
|
||||
wxScriptTemplate.setTagIds(ids);
|
||||
}
|
||||
|
||||
// 先删除原本的关系
|
||||
wxScriptTagMapper.deleteWxScriptByScriptId(wxScriptTemplate.getId());
|
||||
|
||||
for(SysTag tag : sysTags) {
|
||||
// 增加关联关系
|
||||
WxScriptTag scriptTag = new WxScriptTag();
|
||||
scriptTag.setScriptId(wxScriptTemplate.getId());
|
||||
scriptTag.setTagId(tag.getId());
|
||||
scriptTag.setStatus(0l);
|
||||
scriptTag.setCreateBy(SecurityUtils.getLoginUser().getUsername());
|
||||
scriptTag.setCreateTime(DateUtils.getNowDate());
|
||||
wxScriptTagMapper.insertWxScriptTag(scriptTag);
|
||||
}
|
||||
return wxScriptTemplateMapper.updateWxScriptTemplate(wxScriptTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除话术模板
|
||||
*
|
||||
* @param ids 需要删除的话术模板主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteWxScriptTemplateByIds(Long[] ids)
|
||||
{
|
||||
return wxScriptTemplateMapper.deleteWxScriptTemplateByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除话术模板信息
|
||||
*
|
||||
* @param id 话术模板主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteWxScriptTemplateById(Long id)
|
||||
{
|
||||
// 先删除原本的关系
|
||||
int i = wxScriptTagMapper.deleteWxScriptByScriptId(id);
|
||||
return wxScriptTemplateMapper.deleteWxScriptTemplateById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasChildByScriptId(Long id) {
|
||||
int result = wxScriptTemplateMapper.hasChildByScriptId(id);
|
||||
return result > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询话术模板列表
|
||||
export function listTemplate(query) {
|
||||
return request({
|
||||
url: '/system/scriptTemplate/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询话术模板详细
|
||||
export function getTemplate(id) {
|
||||
return request({
|
||||
url: '/system/scriptTemplate/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增话术模板
|
||||
export function addTemplate(data) {
|
||||
return request({
|
||||
url: '/system/scriptTemplate',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改话术模板
|
||||
export function updateTemplate(data) {
|
||||
return request({
|
||||
url: '/system/scriptTemplate',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除话术模板
|
||||
export function delTemplate(id) {
|
||||
return request({
|
||||
url: '/system/scriptTemplate/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
Loading…
Reference in New Issue