ソースを参照

商户、基础资料、商品属性

changhaoning 1 年間 前
コミット
4c766394ac

+ 24 - 4
src/main/java/com/dk/mdm/controller/mst/CompanyController.java

@@ -7,12 +7,11 @@ import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
 import com.dk.mdm.model.query.mst.CompanyQuery;
 import com.dk.mdm.model.response.mst.CompanyResponse;
+import com.dk.mdm.model.vo.mst.CompanyVO;
+import com.dk.mdm.model.vo.mst.UserVO;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.mst.CompanyService;
 
@@ -51,4 +50,25 @@ public class CompanyController{
         return companyService.insertCompany(company);
     }
 
+    /**
+     * @desc   : 通过ID查询
+     * @author : 常皓宁
+     * @date   : 2024/4/30 10:19
+     */
+    @PostMapping(value = "/{id}")
+    public ResponseResultVO<?> selectById(@PathVariable Integer id) {
+        return companyService.selectById(id);
+    }
+
+    /**
+     * @desc   : 编辑
+     * @author : 常皓宁
+     * @date   : 2024/5/6 14:22
+     */
+    @ApiOperation( value = "编辑", notes = "编辑" )
+    @PostMapping({"update"})
+    public ResponseResultVO<?> update(@RequestBody CompanyVO companyVO) {
+        return companyService.update(companyVO);
+    }
+
 }

+ 91 - 0
src/main/java/com/dk/mdm/controller/mst/GoodsCategoryController.java

@@ -0,0 +1,91 @@
+package com.dk.mdm.controller.mst;
+
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.model.pojo.mst.GoodsCategory;
+import com.dk.common.service.BaseService;
+import com.dk.mdm.model.query.mst.GoodsCategoryQuery;
+import com.dk.mdm.model.response.mst.GoodsCategoryResponse;
+import com.dk.mdm.model.vo.mst.GoodsCategoryVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import io.swagger.annotations.Api;
+import com.dk.mdm.service.mst.GoodsCategoryService;
+
+@Api(tags = "商品种类API接口")
+@RestController
+@RequestMapping("/mst/goodsCategory")
+public class GoodsCategoryController{
+
+    public BaseService<GoodsCategory> getService() {
+        return goodsCategoryService;
+    }
+
+    @Autowired
+    private GoodsCategoryService goodsCategoryService;
+
+
+    /**
+     * @desc : 条件查询
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    @ApiOperation(value = "分页、关联、条件查询", notes = "分页、关联、条件查询")
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<GoodsCategoryResponse>> selectByCond(@RequestBody GoodsCategoryQuery goodsCategoryQuery) {
+        return goodsCategoryService.selectByCond(goodsCategoryQuery);
+    }
+
+
+    /**
+     * @desc : 新建
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @ApiOperation(value = "新建", notes = "新建")
+    @PostMapping({"insert"})
+    public ResponseResultVO<?> insert(@RequestBody GoodsCategoryVO goodsCategoryVO) {
+        return goodsCategoryService.insert(goodsCategoryVO);
+    }
+
+
+
+
+    /**
+     * @desc : 编辑
+     * @author : 于继渤
+     * @date : 2023/1/5 9:39
+     */
+    @ApiOperation( value = "编辑", notes = "编辑" )
+    @PostMapping({"update"})
+    public ResponseResultVO<?> update(@RequestBody GoodsCategoryVO goodsCategoryVO) {
+        return goodsCategoryService.update(goodsCategoryVO);
+    }
+
+
+    /**
+     * @desc : 停用
+     * @author : 于继渤
+     * @date :  2023/1/4 9:39
+     */
+    @PostMapping("disable/{id}")
+    public ResponseResultVO<Boolean> disable(@PathVariable String id) {
+        //批量停用
+        goodsCategoryService.disableBachByParentId(id);
+        return this.getService().disable(id);
+    }
+
+    /**
+     * @desc : 启用
+     * @author : 于继渤
+     * @date :  2023/1/4 9:39
+     */
+    @PostMapping("enable/{id}")
+    public ResponseResultVO<Boolean> enable(@PathVariable String id) {
+        //批量启用
+        goodsCategoryService.enableBachByParentId(id);
+        return this.getService().enable(id);
+    }
+
+}

+ 24 - 0
src/main/java/com/dk/mdm/infrastructure/convert/mst/CompanyConvert.java

@@ -0,0 +1,24 @@
+package com.dk.mdm.infrastructure.convert.mst;
+
+import com.dk.mdm.model.pojo.mst.Activity;
+import com.dk.mdm.model.pojo.mst.Company;
+import com.dk.mdm.model.vo.mst.ActivityVO;
+import com.dk.mdm.model.vo.mst.CompanyVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : company转换类
+ * @author : 常皓宁
+ * @date   : 2024/5/6 14:24
+ */
+@Mapper(componentModel = "spring")
+public interface CompanyConvert {
+
+    /**
+     * @desc   : 转换vo为pojo
+     * @author : 常皓宁
+     * @date   : 2024/4/15 15:07
+     */
+    Company convertToPo(CompanyVO companyVO);
+
+}

+ 10 - 0
src/main/java/com/dk/mdm/infrastructure/convert/mst/GoodsCategoryConvert.java

@@ -0,0 +1,10 @@
+package com.dk.mdm.infrastructure.convert.mst;
+
+import com.dk.mdm.model.pojo.mst.GoodsCategory;
+import com.dk.mdm.model.vo.mst.GoodsCategoryVO;
+import org.mapstruct.Mapper;
+
+@Mapper(componentModel = "spring")
+public interface GoodsCategoryConvert {
+    GoodsCategory convertToPo(GoodsCategoryVO goodsCategoryVO);
+}

+ 26 - 23
src/main/java/com/dk/mdm/mapper/mst/CompanyMapper.xml

@@ -175,74 +175,77 @@
 
     <sql id="Condition_list">
         <where>
+            <if test="cpId != null and cpId != ''">
+                AND tac.cp_id = #{cpId}
+            </if>
             <if test="cpCode != null and cpCode != ''">
-                AND cp_code = #{cpCode}
+                AND tac.cp_code = #{cpCode}
             </if>
             <if test="cpName != null and cpName != ''">
-                AND cp_name = #{cpName}
+                AND tac.cp_name = #{cpName}
             </if>
             <if test="svcCode != null and svcCode != ''">
-                AND svc_code = #{svcCode}
+                AND tac.svc_code = #{svcCode}
             </if>
             <if test="openingDate != null">
-                AND opening_date = #{openingDate}
+                AND tac.opening_date = #{openingDate}
             </if>
             <if test="gradeCode != null and gradeCode != ''">
-                AND grade_code = #{gradeCode}
+                AND tac.grade_code = #{gradeCode}
             </if>
             <if test="endDate != null">
-                AND end_date = #{endDate}
+                AND tac.end_date = #{endDate}
             </if>
             <if test="maxStaffNum != null">
-                AND max_staff_num = #{maxStaffNum}
+                AND tac.max_staff_num = #{maxStaffNum}
             </if>
             <if test="curStaffNum != null">
-                AND cur_staff_num = #{curStaffNum}
+                AND tac.cur_staff_num = #{curStaffNum}
             </if>
             <if test="flgValid != null">
-                AND flg_valid = #{flgValid}
+                AND tac.flg_valid = #{flgValid}
             </if>
             <if test="remarks != null and remarks != ''">
-                AND remarks = #{remarks}
+                AND tac.remarks = #{remarks}
             </if>
             <if test="opCreateTime != null">
-                AND op_create_time = #{opCreateTime}
+                AND tac.op_create_time = #{opCreateTime}
             </if>
             <if test="opCreateUserId != null and opCreateUserId != ''">
-                AND op_create_user_id = #{opCreateUserId}
+                AND tac.op_create_user_id = #{opCreateUserId}
             </if>
             <if test="opUpdateTime != null">
-                AND op_update_time = #{opUpdateTime}
+                AND tac.op_update_time = #{opUpdateTime}
             </if>
             <if test="opUpdateUserId != null and opUpdateUserId != ''">
-                AND op_update_user_id = #{opUpdateUserId}
+                AND tac.op_update_user_id = #{opUpdateUserId}
             </if>
             <if test="opAppCode != null and opAppCode != ''">
-                AND op_app_code = #{opAppCode}
+                AND tac.op_app_code = #{opAppCode}
             </if>
             <if test="opTimestamp != null">
-                AND op_timestamp = #{opTimestamp}
+                AND tac.op_timestamp = #{opTimestamp}
             </if>
             <if test="opDbUser != null and opDbUser != ''">
-                AND op_db_user = #{opDbUser}
+                AND tac.op_db_user = #{opDbUser}
             </if>
             <if test="owner != null and owner != ''">
-                AND owner = #{owner}
+                AND tac.owner = #{owner}
             </if>
             <if test="cpManager != null and cpManager != ''">
-                AND cp_manager = #{cpManager}
+                AND tac.cp_manager = #{cpManager}
             </if>
             <if test="cpPhone != null and cpPhone != ''">
-                AND cp_phone = #{cpPhone}
+                AND tac.cp_phone = #{cpPhone}
             </if>
             <if test="cpSize != null and cpSize != ''">
-                AND cp_size = #{cpSize}
+                AND tac.cp_size = #{cpSize}
             </if>
             <if test="shopSize != null and shopSize != ''">
-                AND shop_size = #{shopSize}
+                AND tac.shop_size = #{shopSize}
             </if>
             <if test="feedback != null and feedback != ''">
-                AND feedback = #{feedback}
+                AND tac.feedback = #{feedback}
             </if>
         </where>
     </sql>

+ 53 - 0
src/main/java/com/dk/mdm/mapper/mst/GoodsCategoryMapper.java

@@ -0,0 +1,53 @@
+package com.dk.mdm.mapper.mst;
+
+import com.dk.mdm.model.pojo.mst.GoodsCategory;
+import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.mst.GoodsCategoryQuery;
+import com.dk.mdm.model.response.mst.GoodsCategoryResponse;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+*  商品种类 Mapper
+*/
+@Repository
+public interface GoodsCategoryMapper extends BaseMapper<GoodsCategory>{
+    /**
+     * @desc : 根据条件进行查询
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    List<GoodsCategoryResponse> selectByCond(GoodsCategoryQuery goodsCategoryQuery);
+
+    /**
+     * @desc : 根据条件进行查询(数量)
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    Long countByCond(GoodsCategoryQuery goodsCategoryQuery);
+
+
+    /**
+     * @desc : 调用函数生成层级
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    Boolean resetLevelGoodsCategory(GoodsCategoryQuery goodsCategoryQuery);
+
+    /**
+     * @desc : 批量启用 根据父级id
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    Integer enableBachByParentId(String id);
+
+    /**
+     * @desc : 批量停用 根据父级id
+     * @author : 于继渤
+     * @date : 2024/2/26 10:36
+     */
+    Integer disableBachByParentId(String id);
+
+}
+

+ 243 - 0
src/main/java/com/dk/mdm/mapper/mst/GoodsCategoryMapper.xml

@@ -0,0 +1,243 @@
+<?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.dk.mdm.mapper.mst.GoodsCategoryMapper">
+
+    <!-- 通用设置 -->
+    <!-- 通用查询列 -->
+    <sql id="Base_Column_List">
+        cat_id
+        , cat_code, cat_name, parent_id, display_no, top_id, level_upper, level_lower, level_leaf, level_no, level_code, level_name, remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
+    </sql>
+
+    <sql id="Base_Column_List_Join">
+        tmgc.cat_id
+        , tmgc.cat_code, tmgc.cat_name, tmgc.parent_id, tmgc.display_no, tmgc.top_id, tmgc.level_upper,
+        tmgc.level_lower, tmgc.level_leaf, tmgc.level_no, tmgc.level_code, tmgc.level_name, tmgc.remarks, tmgc.flg_valid, tmgc.cp_id
+    </sql>
+
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mst.GoodsCategory">
+        <id column="cat_id" property="catId"/>
+        <result column="cat_code" property="catCode"/>
+        <result column="cat_name" property="catName"/>
+        <result column="parent_id" property="parentId" typeHandler="UuidTypeHandler"/>
+        <result column="display_no" property="displayNo"/>
+        <result column="top_id" property="topId" typeHandler="UuidTypeHandler"/>
+        <result column="level_upper" property="levelUpper" typeHandler="UuidTypeHandler"/>
+        <result column="level_lower" property="levelLower" typeHandler="UuidTypeHandler"/>
+        <result column="level_leaf" property="levelLeaf"/>
+        <result column="level_no" property="levelNo"/>
+        <result column="level_code" property="levelCode"/>
+        <result column="level_name" property="levelName"/>
+        <result column="remarks" property="remarks"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_app_code" property="opAppCode"/>
+        <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+        <result column="op_db_user" property="opDbUser"/>
+    </resultMap>
+
+
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mst.GoodsCategoryResponse">
+        <id column="cat_id" property="catId"/>
+        <result column="cat_code" property="catCode"/>
+        <result column="cat_name" property="catName"/>
+        <result column="parent_id" property="parentId" typeHandler="UuidTypeHandler"/>
+        <result column="display_no" property="displayNo"/>
+        <result column="top_id" property="topId" typeHandler="UuidTypeHandler"/>
+        <result column="level_upper" property="levelUpper" typeHandler="UuidTypeHandler"/>
+        <result column="level_lower" property="levelLower" typeHandler="UuidTypeHandler"/>
+        <result column="level_leaf" property="levelLeaf"/>
+        <result column="level_no" property="levelNo"/>
+        <result column="level_code" property="levelCode"/>
+        <result column="level_name" property="levelName"/>
+        <result column="remarks" property="remarks"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="parentName" property="parentName"/>
+    </resultMap>
+
+    <!-- 通用条件列 -->
+    <sql id="Condition">
+        <where>
+            <if test="catCode != null and catCode != ''">
+                AND tmgc.cat_code LIKE concat('%',my_ex.likequery(#{catCode}),'%')
+            </if>
+            <if test="catName != null and catName != ''">
+                AND tmgc.cat_name LIKE concat('%',my_ex.likequery(#{catName}),'%')
+            </if>
+            <if test="parentId != null and parentId != ''">
+                AND tmgc.parent_id = #{parentId}
+            </if>
+            <if test="displayNo != null">
+                AND tmgc.display_no = #{displayNo}
+            </if>
+            <if test="topId != null and topId != ''">
+                AND tmgc.top_id = #{topId}
+            </if>
+            <if test="levelUpper != null and levelUpper != ''">
+                AND tmgc.level_upper = #{levelUpper}
+            </if>
+            <if test="levelLower != null and levelLower != ''">
+                AND tmgc.level_lower = #{levelLower}
+            </if>
+            <if test="levelLeaf != null">
+                AND tmgc.level_leaf = #{levelLeaf}
+            </if>
+            <if test="levelNo != null">
+                AND tmgc.level_no = #{levelNo}
+            </if>
+            <if test="levelCode != null and levelCode != ''">
+                AND tmgc.level_code = #{levelCode}
+            </if>
+            <if test="levelName != null and levelName != ''">
+                AND tmgc.level_name = #{levelName}
+            </if>
+            <if test="remarks != null and remarks != ''">
+                AND tmgc.remarks = #{remarks}
+            </if>
+            <if test="flgValid != null">
+                AND tmgc.flg_valid = #{flgValid}
+            </if>
+            <if test="cpId != null">
+                AND tmgc.cp_id = #{cpId}
+            </if>
+
+
+            <if test="flgValidList != null and flgValidList.size()>0">
+                AND tmgc.flg_valid =
+                any(#{flgValidList, typeHandler=BooleanListTypeHandler})
+            </if>
+            <if  test="searchText != null">
+                AND (tmgc.cat_code  like concat('%', my_ex.likequery(#{searchText}) , '%')
+                OR  tmgc.cat_name  like concat('%', my_ex.likequery(#{searchText}) , '%')
+                OR  tmgc.remarks like concat('%', my_ex.likequery(#{searchText}) , '%')
+                )
+            </if>
+        </where>
+    </sql>
+
+    <sql id="idsForeach">
+        <!-- 根据主键catId批量操作 -->
+        WHERE cat_id in
+        <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </sql>
+
+    <!-- 查询表t_mst_goods_category,(条件查询+分页)列表 -->
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
+        SELECT
+        <include refid="Base_Column_List_Join"/>,
+
+        (select cat_name FROM dkic_b.t_mst_goods_category tmstg where tmstg.cat_id = tmgc.parent_id) AS "parentName"
+        FROM dkic_b.t_mst_goods_category tmgc
+
+        <include refid="Condition"/>
+        ORDER BY tmgc.display_no
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+
+    <!-- 查询表t_mst_goods_category,(条件查询)个数 -->
+    <select id="countByCond" resultType="Long">
+        SELECT
+        count(1)
+        FROM dkic_b.t_mst_goods_category tmgc
+        <include refid="Condition"/>
+    </select>
+
+    <!-- 根据主键查询表t_mst_goods_category的一行数据 -->
+    <select id="selectById" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mst_goods_category
+        WHERE cat_id = #{id}::uuid
+    </select>
+
+    <!-- 根据主键锁定表t_mst_goods_category的一行数据 -->
+    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mst_goods_category
+        WHERE cat_id = #{catId} ::uuid
+        for update
+    </select>
+
+    <!-- 根据主键锁定表t_mst_goods_category的多行数据 -->
+    <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mst_goods_category
+        <include refid="idsForeach"/>
+        for update
+    </select>
+
+    <insert id="insertBatch">
+        insert into dkic_b.t_mst_goods_category
+        (
+        <trim suffixOverrides=",">
+            cat_code,
+            cat_name,
+            parent_id,
+            display_no,
+            top_id,
+            level_upper,
+            level_lower,
+            level_leaf,
+            level_no,
+            level_code,
+            level_name,
+            remarks,
+            cp_id,
+            op_app_code,
+        </trim>
+        )
+        values
+        <foreach collection="list" index="index" item="item" separator=",">
+            (
+            <trim suffixOverrides=",">
+                #{item.catCode},
+                #{item.catName},
+                #{item.parentId}::uuid,
+                #{item.displayNo},
+                #{item.topId}::uuid,
+                #{item.levelUpper},
+                #{item.levelLower},
+                #{item.levelLeaf},
+                #{item.levelNo},
+                #{item.levelCode},
+                #{item.levelName},
+                #{item.remarks},
+                #{item.cpId},
+                #{item.opAppCode},
+            </trim>
+            )
+        </foreach>
+    </insert>
+
+
+
+
+
+    <select id="resetLevelGoodsCategory" resultType="java.lang.Boolean">
+        select dkic_b.f_reset_level_goods_category(#{cpId}, #{topId}::uuid)
+    </select>
+
+
+    <!--    批量启用 根据父级id-->
+    <update id="enableBachByParentId">
+        update dkic_b.t_mst_goods_category set  flg_valid = true  where parent_id = #{id}::uuid
+    </update>
+
+    <!--    批量停用 根据父级id-->
+    <update id="disableBachByParentId">
+        update dkic_b.t_mst_goods_category set  flg_valid = false  where parent_id = #{id}::uuid
+    </update>
+</mapper>

+ 1 - 1
src/main/java/com/dk/mdm/mapper/mst/UserMapper.xml

@@ -119,7 +119,7 @@
     </sql>
 
     <!-- 查询表dkic_m.t_dk_user,(条件查询+分页)列表 -->
-    <select id="selectByCond" resultMap="BaseResultMap">
+    <select id="selectByCond" resultMap="BaseResultMap_UserResponse">
         SELECT
         <include refid="Base_Column_List"/>
         FROM dkic_m.t_dk_user

+ 11 - 11
src/main/java/com/dk/mdm/mapper/mst/WxUserMapper.xml

@@ -87,53 +87,53 @@
         </foreach>
     </sql>
 
-    <!-- 查询表t_wx_user,(条件查询+分页)列表 -->
+    <!-- 查询表dkic_a.t_wx_user,(条件查询+分页)列表 -->
     <select id="selectByCond" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_wx_user
+        FROM dkic_a.t_wx_user
         <include refid="Condition"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>
     </select>
 
-    <!-- 查询表t_wx_user,(条件查询)个数 -->
+    <!-- 查询表dkic_a.t_wx_user,(条件查询)个数 -->
     <select id="countByCond" resultType="Long">
         SELECT
         count(1)
-        FROM t_wx_user
+        FROM dkic_a.t_wx_user
         <include refid="Condition"/>
     </select>
 
-    <!-- 根据主键查询表t_wx_user的一行数据 -->
+    <!-- 根据主键查询表dkic_a.t_wx_user的一行数据 -->
     <select id="selectById" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_wx_user
+        FROM dkic_a.t_wx_user
         WHERE user_id = #{userId}::uuid
     </select>
 
-    <!-- 根据主键锁定表t_wx_user的一行数据 -->
+    <!-- 根据主键锁定表dkic_a.t_wx_user的一行数据 -->
     <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_wx_user
+        FROM dkic_a.t_wx_user
         WHERE user_id = #{userId}
         for update
     </select>
 
-    <!-- 根据主键锁定表t_wx_user的多行数据 -->
+    <!-- 根据主键锁定表dkic_a.t_wx_user的多行数据 -->
     <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_wx_user
+        FROM dkic_a.t_wx_user
         <include refid="idsForeach"/>
         for update
     </select>
 
     <insert id="insertBatch">
-        insert into t_wx_user
+        insert into dkic_a.t_wx_user
         (
         <trim suffixOverrides=",">
             user_wxid,

+ 242 - 0
src/main/java/com/dk/mdm/model/pojo/mst/GoodsCategory.java

@@ -0,0 +1,242 @@
+package com.dk.mdm.model.pojo.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import java.io.Serializable;
+
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.*;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+import java.time.LocalDateTime;
+
+/**
+ *  商品种类
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("商品种类")
+@TableName(value = "t_mst_goods_category", autoResultMap = true, schema =  "dkic_b")
+@ApiModel(value="实体类:商品种类", description="表名:t_mst_goods_category")
+public class GoodsCategory extends PageInfo<GoodsCategory> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 种类ID
+     */
+    @ApiModelProperty(value = "种类ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String catId;
+
+
+    /**
+     * 种类编号
+     */
+    @Excel(name = "种类编号")
+    @ApiModelProperty(value = "种类编号")
+    private String catCode;
+
+
+    /**
+     * 种类名称
+     */
+    @Excel(name = "种类名称")
+    @ApiModelProperty(value = "种类名称")
+    private String catName;
+
+
+    /**
+     * 父级ID
+     */
+    @Excel(name = "父级ID")
+    @ApiModelProperty(value = "父级ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String parentId;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 顶层ID
+     */
+    @Excel(name = "顶层ID")
+    @ApiModelProperty(value = "顶层ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String topId;
+
+
+    /**
+     * 上层ID
+     */
+    @Excel(name = "上层ID")
+    @ApiModelProperty(value = "上层ID")
+    @TableField(typeHandler = UuidListTypeHandler.class)
+    private String levelUpper;
+
+
+    /**
+     * 下层ID
+     */
+    @Excel(name = "下层ID")
+    @ApiModelProperty(value = "下层ID")
+    @TableField(typeHandler = UuidListTypeHandler.class)
+    private String levelLower;
+
+
+    /**
+     * 末级标识
+     */
+    @Excel(name = "末级标识")
+    @ApiModelProperty(value = "末级标识")
+    private Boolean levelLeaf;
+
+
+    /**
+     * 层级序号
+     */
+    @Excel(name = "层级序号")
+    @ApiModelProperty(value = "层级序号")
+    private Integer levelNo;
+
+
+    /**
+     * 层级代码
+     */
+    @Excel(name = "层级代码")
+    @ApiModelProperty(value = "层级代码")
+    private String levelCode;
+
+
+    /**
+     * 层级全称 (【 / 】)
+     */
+    @Excel(name = "层级全称 (【 / 】)")
+    @ApiModelProperty(value = "层级全称 (【 / 】)")
+    private String levelName;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 1 - 1
src/main/java/com/dk/mdm/model/pojo/mst/WxUser.java

@@ -30,7 +30,7 @@ import java.time.LocalDateTime;
 @EqualsAndHashCode(callSuper = true)
 @Accessors(chain = true)
 @ExportTitle("微信用户")
-@TableName(value = "t_wx_user", autoResultMap = true)
+@TableName(value = "t_wx_user", autoResultMap = true , schema = "dkic_a")
 @ApiModel(value="实体类:微信用户", description="表名:t_wx_user")
 public class WxUser extends PageInfo<WxUser> implements Serializable {
 

+ 246 - 0
src/main/java/com/dk/mdm/model/query/mst/GoodsCategoryQuery.java

@@ -0,0 +1,246 @@
+package com.dk.mdm.model.query.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidListTypeHandler;
+import com.dk.common.infrastructure.handler.UuidTypeHandler;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ *  商品种类
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("商品种类")
+@TableName(value = "t_mst_goods_category", autoResultMap = true , schema =  "dkic_b")
+@ApiModel(value="实体类:商品种类", description="表名:t_mst_goods_category")
+public class GoodsCategoryQuery extends PageInfo<GoodsCategoryQuery> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 种类ID
+     */
+    @TableId(value = "cat_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "种类ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String catId;
+
+
+    /**
+     * 种类编号
+     */
+    @Excel(name = "种类编号")
+    @ApiModelProperty(value = "种类编号")
+    private String catCode;
+
+
+    /**
+     * 种类名称
+     */
+    @Excel(name = "种类名称")
+    @ApiModelProperty(value = "种类名称")
+    private String catName;
+
+
+    /**
+     * 父级ID
+     */
+    @Excel(name = "父级ID")
+    @ApiModelProperty(value = "父级ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String parentId;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 顶层ID
+     */
+    @Excel(name = "顶层ID")
+    @ApiModelProperty(value = "顶层ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String topId;
+
+
+    /**
+     * 上层ID
+     */
+    @Excel(name = "上层ID")
+    @ApiModelProperty(value = "上层ID")
+    @TableField(typeHandler = UuidListTypeHandler.class)
+    private String levelUpper;
+
+
+    /**
+     * 下层ID
+     */
+    @Excel(name = "下层ID")
+    @ApiModelProperty(value = "下层ID")
+    @TableField(typeHandler = UuidListTypeHandler.class)
+    private String levelLower;
+
+
+    /**
+     * 末级标识
+     */
+    @Excel(name = "末级标识")
+    @ApiModelProperty(value = "末级标识")
+    private Boolean levelLeaf;
+
+
+    /**
+     * 层级序号
+     */
+    @Excel(name = "层级序号")
+    @ApiModelProperty(value = "层级序号")
+    private Integer levelNo;
+
+
+    /**
+     * 层级代码
+     */
+    @Excel(name = "层级代码")
+    @ApiModelProperty(value = "层级代码")
+    private String levelCode;
+
+
+    /**
+     * 层级全称 (【 / 】)
+     */
+    @Excel(name = "层级全称 (【 / 】)")
+    @ApiModelProperty(value = "层级全称 (【 / 】)")
+    private String levelName;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+    private String searchText;
+
+    private List<Boolean> flgValidList;
+    private static final long serialVersionUID = 1L;
+
+}

+ 171 - 0
src/main/java/com/dk/mdm/model/response/mst/GoodsCategoryResponse.java

@@ -0,0 +1,171 @@
+package com.dk.mdm.model.response.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidListTypeHandler;
+import com.dk.common.infrastructure.handler.UuidTypeHandler;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *  商品种类
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = true)
+@ExportTitle("商品种类")
+@TableName(value = "t_mst_goods_category", autoResultMap = true , schema =  "dkic_b")
+@ApiModel(value="实体类:商品种类", description="表名:t_mst_goods_category")
+public class GoodsCategoryResponse implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 种类ID
+     */
+    @TableId(value = "cat_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "种类ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String catId;
+
+
+    /**
+     * 种类编号
+     */
+    @Excel(name = "种类编号")
+    @ApiModelProperty(value = "种类编号")
+    private String catCode;
+
+
+    /**
+     * 种类名称
+     */
+    @Excel(name = "种类名称")
+    @ApiModelProperty(value = "种类名称")
+    private String catName;
+
+
+    /**
+     * 父级ID
+     */
+    @Excel(name = "父级ID")
+    @ApiModelProperty(value = "父级ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String parentId;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 顶层ID
+     */
+    @Excel(name = "顶层ID")
+    @ApiModelProperty(value = "顶层ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String topId;
+
+
+    /**
+     * 上层ID
+     */
+    @Excel(name = "上层ID")
+    @ApiModelProperty(value = "上层ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String levelUpper;
+
+
+    /**
+     * 下层ID
+     */
+    @Excel(name = "下层ID")
+    @ApiModelProperty(value = "下层ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String levelLower;
+
+
+    /**
+     * 末级标识
+     */
+    @Excel(name = "末级标识")
+    @ApiModelProperty(value = "末级标识")
+    private Boolean levelLeaf;
+
+
+    /**
+     * 层级序号
+     */
+    @Excel(name = "层级序号")
+    @ApiModelProperty(value = "层级序号")
+    private Integer levelNo;
+
+
+    /**
+     * 层级代码
+     */
+    @Excel(name = "层级代码")
+    @ApiModelProperty(value = "层级代码")
+    private String levelCode;
+
+
+    /**
+     * 层级全称 (【 / 】)
+     */
+    @Excel(name = "层级全称 (【 / 】)")
+    @ApiModelProperty(value = "层级全称 (【 / 】)")
+    private String levelName;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+    private String parentName;
+
+
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 244 - 0
src/main/java/com/dk/mdm/model/vo/mst/GoodsCategoryVO.java

@@ -0,0 +1,244 @@
+package com.dk.mdm.model.vo.mst;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidListTypeHandler;
+import com.dk.common.infrastructure.handler.UuidTypeHandler;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *  商品种类
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("商品种类")
+@TableName(value = "t_mst_goods_category", autoResultMap = true , schema =  "dkic_b")
+@ApiModel(value="实体类:商品种类", description="表名:t_mst_goods_category")
+public class GoodsCategoryVO extends PageInfo<GoodsCategoryVO> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 种类ID
+     */
+    @TableId(value = "cat_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "种类ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String catId;
+
+
+    /**
+     * 种类编号
+     */
+    @Excel(name = "种类编号")
+    @ApiModelProperty(value = "种类编号")
+    private String catCode;
+
+
+    /**
+     * 种类名称
+     */
+    @Excel(name = "种类名称")
+    @ApiModelProperty(value = "种类名称")
+    private String catName;
+
+
+    /**
+     * 父级ID
+     */
+    @Excel(name = "父级ID")
+    @ApiModelProperty(value = "父级ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String parentId;
+
+
+    /**
+     * 显示顺序 (【1 ~ 46655】)
+     */
+    @Excel(name = "显示顺序 (【1 ~ 46655】)")
+    @ApiModelProperty(value = "显示顺序 (【1 ~ 46655】)")
+    private Integer displayNo;
+
+
+    /**
+     * 顶层ID
+     */
+    @Excel(name = "顶层ID")
+    @ApiModelProperty(value = "顶层ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String topId;
+
+
+//    /**
+//     * 上层ID
+//     */
+//    @Excel(name = "上层ID")
+//    @ApiModelProperty(value = "上层ID")
+//    @TableField(typeHandler = UuidListTypeHandler.class)
+//    private String levelUpper;
+//
+//
+//    /**
+//     * 下层ID
+//     */
+//    @Excel(name = "下层ID")
+//    @ApiModelProperty(value = "下层ID")
+//    @TableField(typeHandler = UuidListTypeHandler.class)
+//    private String levelLower;
+//
+//
+    /**
+     * 末级标识
+     */
+    @Excel(name = "末级标识")
+    @ApiModelProperty(value = "末级标识")
+    private Boolean levelLeaf;
+
+//
+    /**
+     * 层级序号
+     */
+    @Excel(name = "层级序号")
+    @ApiModelProperty(value = "层级序号")
+    private Integer levelNo;
+
+
+    /**
+     * 层级代码
+     */
+    @Excel(name = "层级代码")
+    @ApiModelProperty(value = "层级代码")
+    private String levelCode;
+
+
+    /**
+     * 层级全称 (【 / 】)
+     */
+    @Excel(name = "层级全称 (【 / 】)")
+    @ApiModelProperty(value = "层级全称 (【 / 】)")
+    private String levelName;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 44 - 10
src/main/java/com/dk/mdm/service/mst/CompanyService.java

@@ -16,6 +16,7 @@ import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.common.util.HaipHttpUtils;
+import com.dk.mdm.infrastructure.convert.mst.CompanyConvert;
 import com.dk.mdm.mapper.mst.OrgMapper;
 import com.dk.mdm.mapper.mst.UserMapper;
 import com.dk.mdm.mapper.mst.WxUserMapper;
@@ -27,6 +28,8 @@ import com.dk.mdm.model.pojo.mst.Org;
 import com.dk.mdm.model.pojo.mst.WxUser;
 import com.dk.mdm.model.query.mst.CompanyQuery;
 import com.dk.mdm.model.response.mst.CompanyResponse;
+import com.dk.mdm.model.vo.mst.CompanyVO;
+import com.dk.mdm.model.vo.mst.UserVO;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -64,6 +67,9 @@ public class CompanyService extends BaseService<Company> {
 	@Resource
 	private HaipHttpUtils haipHttpUtils;
 
+	@Autowired
+	private CompanyConvert companyConvert;
+
 
 	/**
 	 * @desc : 重写主键
@@ -87,6 +93,28 @@ public class CompanyService extends BaseService<Company> {
 	}
 
 	/**
+	 * @desc   : 通过ID查询
+	 * @author : 常皓宁
+	 * @date   : 2024/5/6 14:17
+	 */
+	public ResponseResultVO<?> selectById(Integer id) {
+		List<CompanyResponse> companyResponse = companyMapper.selectByCond(new CompanyQuery().setCpId(id));
+		return ResponseResultUtil.success(companyResponse);
+	}
+
+	/**
+	 * @desc   : 编辑
+	 * @date   : 2024/4/29 17:25
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> update(CompanyVO companyVO) {
+		Company company = companyConvert.convertToPo(companyVO);
+		return super.update(company);
+	}
+
+	/**
 	 * @desc   : 新建商户
 	 * @author : 常皓宁
 	 * @date   : 2024/4/30 10:19
@@ -136,14 +164,15 @@ public class CompanyService extends BaseService<Company> {
 	@Transactional(rollbackFor = {Exception.class})
 	public ResponseResultVO<Object> insertDkicOrg(Company company) {
         // 设置请求地址
-        String requestUrl = "http://192.168.1.24:7001/" + Constant.MDM_PREFIX + Constant.SERVER + "-" + company.getSvcCode() + Constant.MST_ORG + "/insert_feign_org";
+		//TODO 后面需要把地址换成云端地址
+        String requestUrlOrg = "http://192.168.1.24:7001/" + Constant.MDM_PREFIX + Constant.SERVER + "-" + company.getSvcCode() + Constant.MST_ORG + "/insert_feign_org";
 
         OrgVO orgVO = new OrgVO();
 		orgVO.setCpId(company.getCpId());
 		orgVO.setOrgName(company.getCpName());
 
 		OrgResponse orgResponse = new OrgResponse();
-		JSONObject OrgJsonObject = haipHttpUtils.doPostRequest(requestUrl, orgVO);
+		JSONObject OrgJsonObject = haipHttpUtils.doPostRequest(requestUrlOrg, orgVO);
 		if (OrgJsonObject.get("code") == null || !ResponseCodeEnum.SUCCESS.getCode().equals(OrgJsonObject.get("code"))) {
 			// 无用户
 			throw new BaseBusinessException(ErrorCodeEnum.COMPANY_REGISTER_ERROR.getCode(),
@@ -157,6 +186,10 @@ public class CompanyService extends BaseService<Company> {
 		//新建微信用户
 		WxUser wxUser = wxuserMapper.getByPhone(company.getCpPhone());
 		WxUser newWxUser = new WxUser();
+
+		// 生成员工
+		StaffVO staffVO = new StaffVO();
+
 		if (wxUser == null) {
 			//注册
 			List<Integer> joinedCps = new ArrayList<>();
@@ -166,6 +199,7 @@ public class CompanyService extends BaseService<Company> {
 			newWxUser.setUserName(company.getCpManager());
 			newWxUser.setUserPhone(company.getCpPhone());
 			wxuserMapper.insert(newWxUser);
+			staffVO.setWxUserId(newWxUser.getUserId());
 		} else {
 			// 更新 户用户的公司id
 			Integer cpId = company.getCpId();
@@ -175,30 +209,30 @@ public class CompanyService extends BaseService<Company> {
 				cpIds.addAll(wxUser.getJoinedCps()) ;
 			}
 			wxuserMapper.updateCpid(wxUser.getUserId(), cpId, cpIds);
+			staffVO.setWxUserId(wxUser.getUserId());
 		}
-		// 生成员工
-		StaffVO staffVO = new StaffVO();
-		//TODO: 获取新建或者更新的ID 得想想怎么弄
-		staffVO.setWxUserId(wxUser.getUserId());
 		staffVO.setCpId(company.getCpId());
 		staffVO.setStaffName(company.getCpManager());
 		staffVO.setStaffPhone(company.getCpPhone());
 		staffVO.setOrgId(orgResponse.getOrgId());
 
+		// 设置请求地址
+		//TODO 后面需要把地址换成云端地址
+		String requestUrlStaff = "http://192.168.1.24:7001/" + Constant.MDM_PREFIX + Constant.SERVER + "-" + company.getSvcCode() + Constant.MST_STAFF + "/insert_feign_staff";
+
 		// 注册商户时候插入员工
 		StaffResponse staffResponse = new StaffResponse();
-		JSONObject staffJsonObject = haipHttpUtils.doPostRequest(requestUrl, staffVO);
+		JSONObject staffJsonObject = haipHttpUtils.doPostRequest(requestUrlStaff, staffVO);
 		// 如果没有成功返回,状态设置为待审
 		if (staffJsonObject.get("code") == null || !ResponseCodeEnum.SUCCESS.getCode().equals(staffJsonObject.get("code"))) {
 			// 无用户
-			throw new BaseBusinessException(ErrorCodeEnum.USER_REGISTER_ERROR.getCode(),
-					ErrorCodeEnum.USER_REGISTER_ERROR.getMessage());
+			throw new BaseBusinessException((Integer)staffJsonObject.get("code"),
+					staffJsonObject.get("message").toString());
 		} else {
 			Object data = staffJsonObject.get("data");
 			staffResponse = JSONObject.parseObject(JSONObject.toJSONString(data),StaffResponse.class);
 		}
 
-
 		// 生成员工权限 角色 仓库 等等。
 
 

+ 135 - 0
src/main/java/com/dk/mdm/service/mst/GoodsCategoryService.java

@@ -0,0 +1,135 @@
+package com.dk.mdm.service.mst;
+
+import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultUtil;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.infrastructure.convert.mst.GoodsCategoryConvert;
+import com.dk.mdm.model.pojo.mst.GoodsCategory;
+import com.dk.mdm.mapper.mst.GoodsCategoryMapper;
+import com.dk.common.service.BaseService;
+import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.mst.GoodsCategoryQuery;
+import com.dk.mdm.model.response.mst.GoodsCategoryResponse;
+import com.dk.mdm.model.vo.mst.GoodsCategoryVO;
+import com.dk.mdm.service.common.CommonService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Map;
+
+@Service
+@Transactional
+public class GoodsCategoryService extends BaseService<GoodsCategory> {
+
+	@Override
+	public BaseMapper<GoodsCategory> getRepository() {
+		return goodsCategoryMapper;
+	}
+
+	@Autowired
+	private GoodsCategoryMapper goodsCategoryMapper;
+
+
+	@Autowired
+	private GoodsCategoryConvert goodsCategoryConvert;
+
+	@Autowired
+	private CommonService commonService;
+
+	/**
+	 * @desc : 重写主键
+	 * @author : 于继渤
+	 * @date : 2024/2/29 20:29
+	 */
+	@Override
+	public String getPrimaryKey() {
+		return "cat_id";
+	}
+
+	/**
+	 * @desc : 查询
+	 * @author : 于继渤
+	 * @date : 2023/1/5 9:39
+	 */
+	@Pagination
+	public ResponseResultVO<PageList<GoodsCategoryResponse>> selectByCond(GoodsCategoryQuery goodsCategoryQuery) {
+		return super.mergeListWithCount(goodsCategoryQuery, goodsCategoryMapper.selectByCond(goodsCategoryQuery),
+				goodsCategoryMapper.countByCond(goodsCategoryQuery));
+	}
+
+
+	/**
+	 * @desc : 新建
+	 * @author : 于继渤
+	 * @date : 2023/1/5 9:39
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> insert(GoodsCategoryVO goodsCategoryVO) {
+		//实体转换
+		GoodsCategory goodsCategory = goodsCategoryConvert.convertToPo(goodsCategoryVO);
+		//设置序号
+		goodsCategory.setDisplayNo(commonService.getMaxDisplayNo(Constant.DisplayNoTable.GOODSSERIES));
+		if (goodsCategory.getParentId() != null) {
+			//插入TOPid
+			goodsCategory.setTopId(goodsCategory.getParentId());
+		}
+
+		//设置编码
+		Map<String, Object> uniqueNoteCode = commonService.getUniqueNoteCode(Constant.docNameConstant.CATEGORY.getName(), true);
+		goodsCategory.setCatId(uniqueNoteCode.get("outId").toString());
+		goodsCategory.setCatCode(uniqueNoteCode.get("outNote").toString());
+		//新建
+		goodsCategoryMapper.insert(goodsCategory);
+		//执行函数
+		goodsCategoryMapper.resetLevelGoodsCategory(new GoodsCategoryQuery().setTopId(goodsCategory.getParentId()).setCpId(goodsCategory.getCpId()));
+		return ResponseResultUtil.success();
+	}
+
+
+	/**
+	 * @desc : 编辑
+	 * @author : 于继渤
+	 * @date : 2023/1/5 9:39
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> update(GoodsCategoryVO goodsCategoryVO) {
+		GoodsCategory goodsCategory = goodsCategoryConvert.convertToPo(goodsCategoryVO);
+		super.updateByUuid(goodsCategory);
+		return ResponseResultUtil.success();
+	}
+
+
+	/**
+	 * @desc : 批量启用 根据父级id
+	 * @author : 于继渤
+	 * @date : 2024/2/26 10:36
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> enableBachByParentId(String id) {
+		return ResponseResultUtil.success(goodsCategoryMapper.enableBachByParentId(id));
+	}
+
+	/**
+	 * @desc : 批量停用 根据父级id
+	 * @author : 于继渤
+	 * @date : 2024/2/26 10:36
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> disableBachByParentId(String id) {
+		return ResponseResultUtil.success(goodsCategoryMapper.disableBachByParentId(id));
+	}
+}