吴树波 vor 2 Tagen
Ursprung
Commit
1364624342

+ 67 - 0
fs-admin/src/main/java/com/fs/crm/controller/CrmCustomerPropertyController.java

@@ -0,0 +1,67 @@
+package com.fs.crm.controller;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.crm.domain.CrmCustomerProperty;
+import com.fs.crm.service.ICrmCustomerPropertyService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/crm/customerProperty")
+public class CrmCustomerPropertyController extends BaseController {
+
+    @Autowired
+    private ICrmCustomerPropertyService crmCustomerPropertyService;
+
+    @PreAuthorize("@ss.hasPermi('crm:customerProperty:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(CrmCustomerProperty crmCustomerProperty) {
+        startPage();
+        List<CrmCustomerProperty> list = crmCustomerPropertyService.selectCrmCustomerPropertyList(crmCustomerProperty);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerProperty:export')")
+    @Log(title = "客户属性标签", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(CrmCustomerProperty crmCustomerProperty) {
+        List<CrmCustomerProperty> list = crmCustomerPropertyService.selectCrmCustomerPropertyList(crmCustomerProperty);
+        ExcelUtil<CrmCustomerProperty> util = new ExcelUtil<CrmCustomerProperty>(CrmCustomerProperty.class);
+        return util.exportExcel(list, "客户属性标签数据");
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerProperty:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(crmCustomerPropertyService.selectCrmCustomerPropertyById(id));
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerProperty:add')")
+    @Log(title = "客户属性标签", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CrmCustomerProperty crmCustomerProperty) {
+        return toAjax(crmCustomerPropertyService.insertCrmCustomerProperty(crmCustomerProperty));
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerProperty:edit')")
+    @Log(title = "客户属性标签", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CrmCustomerProperty crmCustomerProperty) {
+        return toAjax(crmCustomerPropertyService.updateCrmCustomerProperty(crmCustomerProperty));
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerProperty:remove')")
+    @Log(title = "客户属性标签", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(crmCustomerPropertyService.deleteCrmCustomerPropertyByIds(ids));
+    }
+}

+ 67 - 0
fs-admin/src/main/java/com/fs/crm/controller/CrmCustomerPropertyTemplateController.java

@@ -0,0 +1,67 @@
+package com.fs.crm.controller;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.crm.domain.CrmCustomerPropertyTemplate;
+import com.fs.crm.service.ICrmCustomerPropertyTemplateService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/crm/customerPropertyTemplate")
+public class CrmCustomerPropertyTemplateController extends BaseController {
+
+    @Autowired
+    private ICrmCustomerPropertyTemplateService crmCustomerPropertyTemplateService;
+
+    @PreAuthorize("@ss.hasPermi('crm:customerPropertyTemplate:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        startPage();
+        List<CrmCustomerPropertyTemplate> list = crmCustomerPropertyTemplateService.selectCrmCustomerPropertyTemplateList(crmCustomerPropertyTemplate);
+        return getDataTable(list);
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerPropertyTemplate:export')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        List<CrmCustomerPropertyTemplate> list = crmCustomerPropertyTemplateService.selectCrmCustomerPropertyTemplateList(crmCustomerPropertyTemplate);
+        ExcelUtil<CrmCustomerPropertyTemplate> util = new ExcelUtil<CrmCustomerPropertyTemplate>(CrmCustomerPropertyTemplate.class);
+        return util.exportExcel(list, "客户属性标签模板数据");
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerPropertyTemplate:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(crmCustomerPropertyTemplateService.selectCrmCustomerPropertyTemplateById(id));
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerPropertyTemplate:add')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        return toAjax(crmCustomerPropertyTemplateService.insertCrmCustomerPropertyTemplate(crmCustomerPropertyTemplate));
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerPropertyTemplate:edit')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        return toAjax(crmCustomerPropertyTemplateService.updateCrmCustomerPropertyTemplate(crmCustomerPropertyTemplate));
+    }
+
+    @PreAuthorize("@ss.hasPermi('crm:customerPropertyTemplate:remove')")
+    @Log(title = "客户属性标签模板", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(crmCustomerPropertyTemplateService.deleteCrmCustomerPropertyTemplateByIds(ids));
+    }
+}

+ 32 - 0
fs-service/src/main/java/com/fs/crm/domain/CrmCustomerProperty.java

@@ -0,0 +1,32 @@
+package com.fs.crm.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntityTow;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CrmCustomerProperty extends BaseEntityTow {
+
+    @Excel(name = "客户ID")
+    private Long customerId;
+
+    @Excel(name = "字段ID")
+    private Long propertyId;
+
+    @Excel(name = "字段名称")
+    private String propertyName;
+
+    @Excel(name = "字段内容")
+    private String propertyValue;
+
+    @Excel(name = "字段类型")
+    private String propertyValueType;
+
+    @Excel(name = "行业类型")
+    private String tradeType;
+
+    @Excel(name = "内容解析")
+    private String aiAnalysis;
+}

+ 25 - 0
fs-service/src/main/java/com/fs/crm/domain/CrmCustomerPropertyTemplate.java

@@ -0,0 +1,25 @@
+package com.fs.crm.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntityTow;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CrmCustomerPropertyTemplate extends BaseEntityTow {
+
+    @Excel(name = "属性名称")
+    private String name;
+
+    @Excel(name = "属性类型")
+    private String valueType;
+
+    @Excel(name = "AI属性提取提示")
+    private String aiHint;
+
+    @Excel(name = "行业类型")
+    private String tradeType;
+}

+ 21 - 0
fs-service/src/main/java/com/fs/crm/mapper/CrmCustomerPropertyMapper.java

@@ -0,0 +1,21 @@
+package com.fs.crm.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.crm.domain.CrmCustomerProperty;
+
+import java.util.List;
+
+public interface CrmCustomerPropertyMapper extends BaseMapper<CrmCustomerProperty> {
+
+    CrmCustomerProperty selectCrmCustomerPropertyById(Long id);
+
+    List<CrmCustomerProperty> selectCrmCustomerPropertyList(CrmCustomerProperty crmCustomerProperty);
+
+    int insertCrmCustomerProperty(CrmCustomerProperty crmCustomerProperty);
+
+    int updateCrmCustomerProperty(CrmCustomerProperty crmCustomerProperty);
+
+    int deleteCrmCustomerPropertyById(Long id);
+
+    int deleteCrmCustomerPropertyByIds(Long[] ids);
+}

+ 22 - 0
fs-service/src/main/java/com/fs/crm/mapper/CrmCustomerPropertyTemplateMapper.java

@@ -0,0 +1,22 @@
+package com.fs.crm.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.crm.domain.CrmCustomerPropertyTemplate;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface CrmCustomerPropertyTemplateMapper extends BaseMapper<CrmCustomerPropertyTemplate> {
+
+    CrmCustomerPropertyTemplate selectCrmCustomerPropertyTemplateById(Long id);
+
+    List<CrmCustomerPropertyTemplate> selectCrmCustomerPropertyTemplateList(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate);
+
+    int insertCrmCustomerPropertyTemplate(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate);
+
+    int updateCrmCustomerPropertyTemplate(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate);
+
+    int deleteCrmCustomerPropertyTemplateById(Long id);
+
+    int deleteCrmCustomerPropertyTemplateByIds(Long[] ids);
+}

+ 21 - 0
fs-service/src/main/java/com/fs/crm/service/ICrmCustomerPropertyService.java

@@ -0,0 +1,21 @@
+package com.fs.crm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.crm.domain.CrmCustomerProperty;
+
+import java.util.List;
+
+public interface ICrmCustomerPropertyService extends IService<CrmCustomerProperty> {
+
+    CrmCustomerProperty selectCrmCustomerPropertyById(Long id);
+
+    List<CrmCustomerProperty> selectCrmCustomerPropertyList(CrmCustomerProperty crmCustomerProperty);
+
+    int insertCrmCustomerProperty(CrmCustomerProperty crmCustomerProperty);
+
+    int updateCrmCustomerProperty(CrmCustomerProperty crmCustomerProperty);
+
+    int deleteCrmCustomerPropertyByIds(Long[] ids);
+
+    int deleteCrmCustomerPropertyById(Long id);
+}

+ 21 - 0
fs-service/src/main/java/com/fs/crm/service/ICrmCustomerPropertyTemplateService.java

@@ -0,0 +1,21 @@
+package com.fs.crm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.crm.domain.CrmCustomerPropertyTemplate;
+
+import java.util.List;
+
+public interface ICrmCustomerPropertyTemplateService extends IService<CrmCustomerPropertyTemplate> {
+
+    CrmCustomerPropertyTemplate selectCrmCustomerPropertyTemplateById(Long id);
+
+    List<CrmCustomerPropertyTemplate> selectCrmCustomerPropertyTemplateList(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate);
+
+    int insertCrmCustomerPropertyTemplate(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate);
+
+    int updateCrmCustomerPropertyTemplate(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate);
+
+    int deleteCrmCustomerPropertyTemplateByIds(Long[] ids);
+
+    int deleteCrmCustomerPropertyTemplateById(Long id);
+}

+ 46 - 0
fs-service/src/main/java/com/fs/crm/service/impl/CrmCustomerPropertyServiceImpl.java

@@ -0,0 +1,46 @@
+package com.fs.crm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.utils.DateUtils;
+import com.fs.crm.domain.CrmCustomerProperty;
+import com.fs.crm.mapper.CrmCustomerPropertyMapper;
+import com.fs.crm.service.ICrmCustomerPropertyService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CrmCustomerPropertyServiceImpl extends ServiceImpl<CrmCustomerPropertyMapper, CrmCustomerProperty> implements ICrmCustomerPropertyService {
+
+    @Override
+    public CrmCustomerProperty selectCrmCustomerPropertyById(Long id) {
+        return baseMapper.selectCrmCustomerPropertyById(id);
+    }
+
+    @Override
+    public List<CrmCustomerProperty> selectCrmCustomerPropertyList(CrmCustomerProperty crmCustomerProperty) {
+        return baseMapper.selectCrmCustomerPropertyList(crmCustomerProperty);
+    }
+
+    @Override
+    public int insertCrmCustomerProperty(CrmCustomerProperty crmCustomerProperty) {
+        crmCustomerProperty.setCreateTime(DateUtils.getNowDate());
+        return baseMapper.insertCrmCustomerProperty(crmCustomerProperty);
+    }
+
+    @Override
+    public int updateCrmCustomerProperty(CrmCustomerProperty crmCustomerProperty) {
+        crmCustomerProperty.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateCrmCustomerProperty(crmCustomerProperty);
+    }
+
+    @Override
+    public int deleteCrmCustomerPropertyByIds(Long[] ids) {
+        return baseMapper.deleteCrmCustomerPropertyByIds(ids);
+    }
+
+    @Override
+    public int deleteCrmCustomerPropertyById(Long id) {
+        return baseMapper.deleteCrmCustomerPropertyById(id);
+    }
+}

+ 46 - 0
fs-service/src/main/java/com/fs/crm/service/impl/CrmCustomerPropertyTemplateServiceImpl.java

@@ -0,0 +1,46 @@
+package com.fs.crm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.utils.DateUtils;
+import com.fs.crm.domain.CrmCustomerPropertyTemplate;
+import com.fs.crm.mapper.CrmCustomerPropertyTemplateMapper;
+import com.fs.crm.service.ICrmCustomerPropertyTemplateService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CrmCustomerPropertyTemplateServiceImpl extends ServiceImpl<CrmCustomerPropertyTemplateMapper, CrmCustomerPropertyTemplate> implements ICrmCustomerPropertyTemplateService {
+
+    @Override
+    public CrmCustomerPropertyTemplate selectCrmCustomerPropertyTemplateById(Long id) {
+        return baseMapper.selectCrmCustomerPropertyTemplateById(id);
+    }
+
+    @Override
+    public List<CrmCustomerPropertyTemplate> selectCrmCustomerPropertyTemplateList(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        return baseMapper.selectCrmCustomerPropertyTemplateList(crmCustomerPropertyTemplate);
+    }
+
+    @Override
+    public int insertCrmCustomerPropertyTemplate(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        crmCustomerPropertyTemplate.setCreateTime(DateUtils.getNowDate());
+        return baseMapper.insertCrmCustomerPropertyTemplate(crmCustomerPropertyTemplate);
+    }
+
+    @Override
+    public int updateCrmCustomerPropertyTemplate(CrmCustomerPropertyTemplate crmCustomerPropertyTemplate) {
+        crmCustomerPropertyTemplate.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateCrmCustomerPropertyTemplate(crmCustomerPropertyTemplate);
+    }
+
+    @Override
+    public int deleteCrmCustomerPropertyTemplateByIds(Long[] ids) {
+        return baseMapper.deleteCrmCustomerPropertyTemplateByIds(ids);
+    }
+
+    @Override
+    public int deleteCrmCustomerPropertyTemplateById(Long id) {
+        return baseMapper.deleteCrmCustomerPropertyTemplateById(id);
+    }
+}

+ 106 - 0
fs-service/src/main/resources/mapper/crm/CrmCustomerPropertyMapper.xml

@@ -0,0 +1,106 @@
+<?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.crm.mapper.CrmCustomerPropertyMapper">
+
+    <resultMap type="CrmCustomerProperty" id="CrmCustomerPropertyResult">
+        <result property="id"    column="id"    />
+        <result property="customerId"    column="customer_id"    />
+        <result property="propertyId"    column="property_id"    />
+        <result property="propertyName"    column="property_name"    />
+        <result property="propertyValue"    column="property_value"    />
+        <result property="propertyValueType"    column="property_value_type"    />
+        <result property="tradeType"    column="trade_type"    />
+        <result property="aiAnalysis"    column="ai_analysis"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectCrmCustomerPropertyVo">
+        select id, customer_id, property_id, property_name, property_value, property_value_type, trade_type, ai_analysis, create_time, create_by, update_time, update_by, remark from crm_customer_property
+    </sql>
+
+    <select id="selectCrmCustomerPropertyList" parameterType="CrmCustomerProperty" resultMap="CrmCustomerPropertyResult">
+        <include refid="selectCrmCustomerPropertyVo"/>
+        <where>
+            <if test="customerId != null"> and customer_id = #{customerId}</if>
+            <if test="propertyId != null"> and property_id = #{propertyId}</if>
+            <if test="propertyName != null and propertyName != ''"> and property_name like concat('%', #{propertyName}, '%')</if>
+            <if test="propertyValue != null and propertyValue != ''"> and property_value like concat('%', #{propertyValue}, '%')</if>
+            <if test="propertyValueType != null and propertyValueType != ''"> and property_value_type = #{propertyValueType}</if>
+            <if test="tradeType != null and tradeType != ''"> and trade_type = #{tradeType}</if>
+        </where>
+        order by id desc
+    </select>
+
+    <select id="selectCrmCustomerPropertyById" parameterType="Long" resultMap="CrmCustomerPropertyResult">
+        <include refid="selectCrmCustomerPropertyVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertCrmCustomerProperty" parameterType="CrmCustomerProperty" useGeneratedKeys="true" keyProperty="id">
+        insert into crm_customer_property
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="customerId != null">customer_id,</if>
+            <if test="propertyId != null">property_id,</if>
+            <if test="propertyName != null">property_name,</if>
+            <if test="propertyValue != null">property_value,</if>
+            <if test="propertyValueType != null">property_value_type,</if>
+            <if test="tradeType != null">trade_type,</if>
+            <if test="aiAnalysis != null">ai_analysis,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="remark != null">remark,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="customerId != null">#{customerId},</if>
+            <if test="propertyId != null">#{propertyId},</if>
+            <if test="propertyName != null">#{propertyName},</if>
+            <if test="propertyValue != null">#{propertyValue},</if>
+            <if test="propertyValueType != null">#{propertyValueType},</if>
+            <if test="tradeType != null">#{tradeType},</if>
+            <if test="aiAnalysis != null">#{aiAnalysis},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="remark != null">#{remark},</if>
+        </trim>
+    </insert>
+
+    <update id="updateCrmCustomerProperty" parameterType="CrmCustomerProperty">
+        update crm_customer_property
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="customerId != null">customer_id = #{customerId},</if>
+            <if test="propertyId != null">property_id = #{propertyId},</if>
+            <if test="propertyName != null">property_name = #{propertyName},</if>
+            <if test="propertyValue != null">property_value = #{propertyValue},</if>
+            <if test="propertyValueType != null">property_value_type = #{propertyValueType},</if>
+            <if test="tradeType != null">trade_type = #{tradeType},</if>
+            <if test="aiAnalysis != null">ai_analysis = #{aiAnalysis},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCrmCustomerPropertyById" parameterType="Long">
+        delete from crm_customer_property where id = #{id}
+    </delete>
+
+    <delete id="deleteCrmCustomerPropertyByIds" parameterType="String">
+        delete from crm_customer_property where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 91 - 0
fs-service/src/main/resources/mapper/crm/CrmCustomerPropertyTemplateMapper.xml

@@ -0,0 +1,91 @@
+<?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.crm.mapper.CrmCustomerPropertyTemplateMapper">
+
+    <resultMap type="CrmCustomerPropertyTemplate" id="CrmCustomerPropertyTemplateResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="valueType"    column="value_type"    />
+        <result property="aiHint"    column="ai_hint"    />
+        <result property="tradeType"    column="trade_type"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectCrmCustomerPropertyTemplateVo">
+        select id, name, value_type, ai_hint, trade_type, create_time, create_by, update_time, update_by, remark from crm_customer_property_template
+    </sql>
+
+    <select id="selectCrmCustomerPropertyTemplateList" parameterType="CrmCustomerPropertyTemplate" resultMap="CrmCustomerPropertyTemplateResult">
+        <include refid="selectCrmCustomerPropertyTemplateVo"/>
+        <where>
+            <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="valueType != null and valueType != ''"> and value_type = #{valueType}</if>
+            <if test="tradeType != null and tradeType != ''"> and trade_type = #{tradeType}</if>
+        </where>
+        order by id desc
+    </select>
+
+    <select id="selectCrmCustomerPropertyTemplateById" parameterType="Long" resultMap="CrmCustomerPropertyTemplateResult">
+        <include refid="selectCrmCustomerPropertyTemplateVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertCrmCustomerPropertyTemplate" parameterType="CrmCustomerPropertyTemplate" useGeneratedKeys="true" keyProperty="id">
+        insert into crm_customer_property_template
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">name,</if>
+            <if test="valueType != null">value_type,</if>
+            <if test="aiHint != null">ai_hint,</if>
+            <if test="tradeType != null">trade_type,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="remark != null">remark,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="name != null">#{name},</if>
+            <if test="valueType != null">#{valueType},</if>
+            <if test="aiHint != null">#{aiHint},</if>
+            <if test="tradeType != null">#{tradeType},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="remark != null">#{remark},</if>
+        </trim>
+    </insert>
+
+    <update id="updateCrmCustomerPropertyTemplate" parameterType="CrmCustomerPropertyTemplate">
+        update crm_customer_property_template
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="valueType != null">value_type = #{valueType},</if>
+            <if test="aiHint != null">ai_hint = #{aiHint},</if>
+            <if test="tradeType != null">trade_type = #{tradeType},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCrmCustomerPropertyTemplateById" parameterType="Long">
+        delete from crm_customer_property_template where id = #{id}
+    </delete>
+
+    <delete id="deleteCrmCustomerPropertyTemplateByIds" parameterType="String">
+        delete from crm_customer_property_template where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>