소스 검색

菜单设计修改

small 2 년 전
부모
커밋
b1369e903e
30개의 변경된 파일510개의 추가작업 그리고 72개의 파일을 삭제
  1. 1 0
      sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java
  2. 3 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java
  3. 36 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/MenuTypeEnum.java
  4. 2 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  5. 24 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java
  6. 1 1
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java
  7. 0 64
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/SysUser.java
  8. 29 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/SysDictResDto.java
  9. 2 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/ExceptionController.java
  10. 1 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsDeptController.java
  11. 1 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java
  12. 28 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsMenuController.java
  13. 1 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsRoleController.java
  14. 1 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java
  15. 1 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/SysAreaController.java
  16. 25 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/SysDictController.java
  17. 9 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/SysDictDao.java
  18. 10 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/SysDictTypeDao.java
  19. 51 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java
  20. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindMenuTreePojo.java
  21. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/FindMenuTreeReqVo.java
  22. 32 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/MoveMenuReqVo.java
  23. 31 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/QueryChildMenuReqVo.java
  24. 35 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/QueryDictTypePageReqVo.java
  25. 48 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/QueryChildMenuResVo.java
  26. 77 4
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java
  27. 27 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/SysDictService.java
  28. 3 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuDao.xml
  29. 5 0
      sckw-modules/sckw-system/src/main/resources/mapper/SysDictDao.xml
  30. 16 0
      sckw-modules/sckw-system/src/main/resources/mapper/SysDictTypeDao.xml

+ 1 - 0
sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
  * @author: czh
  * @date: 2023/6/19
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/auth")
 public class AuthController {

+ 3 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java

@@ -91,6 +91,9 @@ public class Global {
     /**redis用户菜单信息前缀*/
     public static final String REDIS_SYS_MENU_PREFIX = "sysMenu:";
 
+    /**redis字典信息前缀*/
+    public static final String REDIS_SYS_DICT_PREFIX = "dictInfo:";
+
     /**redis用户车辆gps信息*/
     public static final String REDIS_CACHE_GPS_CAR_PREFIX = "cacheGpsCar:";
 

+ 36 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/MenuTypeEnum.java

@@ -0,0 +1,36 @@
+package com.sckw.core.model.enums;
+
+import lombok.Getter;
+
+/**
+ * @author czh
+ * @desc 菜单类型
+ * @date 2023/6/15
+ */
+@Getter
+public enum MenuTypeEnum {
+
+    //菜单
+    DIRECTORY(1, "菜单"),
+    //通过
+    BUTTON(2, "按钮");
+
+    private final int code;
+
+    private final String name;
+
+    MenuTypeEnum(int code, String name){
+        this.code = code;
+        this.name = name;
+    }
+
+    public static MenuTypeEnum getName(int code){
+        for (MenuTypeEnum menuTypeEnum : values()) {
+            if (menuTypeEnum.getCode() == code) {
+                return menuTypeEnum;
+            }
+        }
+        return null;
+    }
+
+}

+ 2 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -119,7 +119,8 @@ public class HttpStatus {
     public static final String ENTCERTIFICATES_INVAILD = "企业资质已失效";
     public static final String ROLE_NOT_EXISTS = "未查询到关联的角色";
     public static final String USER_DEPT_NOT_EXISTS = "未查询到用户-机构关联信息";
-    public static final String MENU_NOT_EXISTS = "未查询菜单信息";
+    public static final String MENU_NOT_EXISTS = "未查询到菜单信息";
+    public static final String PARENT_MENU_NOT_EXISTS = "未查询到父菜单信息";
 
     /**自定义提示消息*/
     public static final String PASSWD_ERROR = "密码不正确";

+ 24 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java

@@ -0,0 +1,24 @@
+package com.sckw.system.api;
+
+
+import com.sckw.system.api.model.dto.res.SysDictResDto;
+
+import java.util.List;
+
+/**
+ * @desc: 基础信息远程接口
+ * @author: czh
+ * @date: 2023/6/19
+ */
+public interface RemoteSystemService {
+
+    /**
+     * @param typeId 类型id
+     * @return SysDictResDto
+     * @desc: 根据类型id查字典,先查redis,没查到查数据库,查出来了存redis
+     * @author: czh
+     * @date: 2023/7/5
+     */
+    List<SysDictResDto> queryDictByTypeId(Long typeId);
+
+}

+ 1 - 1
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java

@@ -6,7 +6,7 @@ import com.sckw.system.api.model.dto.res.*;
 import java.util.List;
 
 /**
- * @desc: 远程接口
+ * @desc: 用户远程接口
  * @author: czh
  * @date: 2023/6/19
  */

+ 0 - 64
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/SysUser.java

@@ -1,64 +0,0 @@
-package com.sckw.system.api.model;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 用户信息
- * @author zk
- * @date Nov 24, 2018
- */
-@Data
-public class SysUser implements Serializable {
-
-	/**
-	 * 机构类型(1系统管理机构、2平台企业机构)
-	 */
-	private Integer systemType;
-
-	/**
-	 * 账号
-	 */
-	private String account;
-
-	/**
-	 * 密码
-	 */
-	private String password;
-
-	/**
-	 * 用户名
-	 */
-	private String name;
-
-	/**
-	 * 手机号
-	 */
-	private String phone;
-
-	/**
-	 * 头像
-	 */
-	private String photo;
-
-	/**
-	 * 邮箱
-	 */
-	private String email;
-
-	/**
-	 * 是否是企业管理(0 后台系统超级管理员 1普通用户 2 企业管理员)
-	 */
-	private Integer isMain;
-
-	/**
-	 * 设备id,用于推送消息
-	 */
-	private String clientId;
-
-	public static boolean isAdmin(int isMain){
-		return isMain == 0 || isMain == 2;
-	}
-
-}

+ 29 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/SysDictResDto.java

@@ -0,0 +1,29 @@
+package com.sckw.system.api.model.dto.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 字典
+ * @date 2023/7/5
+ */
+@Data
+public class SysDictResDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -2995208083876944113L;
+
+    /**
+     * 选项值
+     */
+    private String value;
+
+    /**
+     * 选项
+     */
+    private String label;
+
+}

+ 2 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/ExceptionController.java

@@ -2,6 +2,7 @@ package com.sckw.system.controller;
 
 import com.sckw.core.web.response.HttpResult;
 import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @desc TODO
  * @date 2023/6/14
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/error")
 public class ExceptionController {

+ 1 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsDeptController.java

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*;
  * @author zk
  * @date 2023-05-31
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/kwsDept")
 public class KwsDeptController {

+ 1 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java

@@ -16,6 +16,7 @@ import java.util.Map;
  * @author zk
  * @date 2023-05-31
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/kwsEnt")
 public class KwsEnterpriseController {

+ 28 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsMenuController.java

@@ -5,6 +5,8 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.model.KwsMenu;
 import com.sckw.system.model.vo.req.FindMenuTreeReqVo;
+import com.sckw.system.model.vo.req.MoveMenuReqVo;
+import com.sckw.system.model.vo.req.QueryChildMenuReqVo;
 import com.sckw.system.model.vo.req.RoleBindMenuReqVo;
 import com.sckw.system.service.KwsMenuService;
 import jakarta.validation.Valid;
@@ -16,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
  * @author zk
  * @date 2023-05-31
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/kwsMenu")
 public class KwsMenuController {
@@ -101,4 +104,29 @@ public class KwsMenuController {
         kwsMenuService.roleBindMenu(reqVo);
         return HttpResult.ok(HttpStatus.MSG_010);
     }
+
+    /**
+     * @param  reqVo 入参
+     * @return HttpResult
+     * @desc: 移动菜单
+     * @author: czh
+     * @date: 2023/6/13
+     */
+    @PostMapping("/moveMenu")
+    public HttpResult moveMenu(@Valid @RequestBody MoveMenuReqVo reqVo) {
+        kwsMenuService.moveMenu(reqVo);
+        return HttpResult.ok(HttpStatus.MSG_005);
+    }
+
+    /**
+     * @param  reqVo 入参
+     * @return HttpResult
+     * @desc: 移动菜单
+     * @author: czh
+     * @date: 2023/6/13
+     */
+    @PostMapping("/queryChildMenu")
+    public HttpResult queryChildMenu(@Valid @RequestBody QueryChildMenuReqVo reqVo) {
+        return HttpResult.ok(kwsMenuService.queryChildMenu(reqVo));
+    }
 }

+ 1 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsRoleController.java

@@ -21,6 +21,7 @@ import java.util.List;
  * @author zk
  * @date 2023-05-31
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/kwsRole")
 public class KwsRoleController {

+ 1 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java

@@ -21,6 +21,7 @@ import java.util.List;
  * @author zk
  * @date 2023-05-30
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/kwsUser")
 public class KwsUserController {

+ 1 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/SysAreaController.java

@@ -13,6 +13,7 @@ import java.util.Map;
  * @author zk
  * @date 2023-05-30
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/sysArea")
 public class SysAreaController {

+ 25 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/SysDictController.java

@@ -7,6 +7,7 @@ import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.model.SysDict;
 import com.sckw.system.model.SysDictType;
+import com.sckw.system.model.vo.req.QueryDictTypePageReqVo;
 import com.sckw.system.service.SysDictService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -19,6 +20,7 @@ import java.util.Map;
  * @author zk
  * @date 2023-05-30
  */
+@CrossOrigin
 @RestController
 @RequestMapping("/sysDict")
 public class SysDictController {
@@ -127,4 +129,27 @@ public class SysDictController {
     public HttpResult del(@RequestParam String ids) throws Exception {
         return sysDictService.deleteByKey(ids);
     }
+
+    /**
+     * @param reqVo 入参
+     * @desc: 分页查询字典类型
+     * @author: czh
+     * @date: 2023/7/6
+     */
+    @PostMapping("queryDictTypePage")
+    public HttpResult queryDictTypePage (@RequestBody QueryDictTypePageReqVo reqVo) {
+        return HttpResult.ok(sysDictService.queryDictTypePage(reqVo));
+    }
+
+    /**
+     * @param reqVo 入参
+     * @desc: 分页查询字典类型
+     * @author: czh
+     * @date: 2023/7/6
+     */
+    @PostMapping("queryDictType")
+    public HttpResult queryDictType (@RequestBody QueryDictTypePageReqVo reqVo) {
+        return HttpResult.ok(sysDictService.queryDictType(reqVo));
+    }
+
 }

+ 9 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/SysDictDao.java

@@ -47,4 +47,13 @@ public interface SysDictDao {
      * @return
      */
     List<Map<String, Object>> findList(Map<String, Object> params);
+
+    /**
+     * @param typeId 类型id
+     * @return SysDict
+     * @desc: 根据类型查
+     * @author: czh
+     * @date: 2023/7/6
+     */
+    List<SysDict> queryByType(Long typeId);
 }

+ 10 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/SysDictTypeDao.java

@@ -1,5 +1,6 @@
 package com.sckw.system.dao;
 
+import com.sckw.system.model.SysDict;
 import com.sckw.system.model.SysDictType;
 import org.apache.ibatis.annotations.Mapper;
 import java.util.List;
@@ -33,4 +34,13 @@ public interface SysDictTypeDao {
      * @return
      */
     List<SysDictType> findPage(Map<String, Object> params);
+
+    /**
+     * @param sysDictType 实体类
+     * @return
+     * @desc: TODO
+     * @author: czh
+     * @date: 2023/7/6
+     */
+    List<SysDictType> select(SysDictType sysDictType);
 }

+ 51 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

@@ -0,0 +1,51 @@
+package com.sckw.system.dubbo;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.redis.utils.RedissonUtils;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
+import com.sckw.system.dao.SysDictDao;
+import com.sckw.system.model.SysDict;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author czh
+ * @desc 远程接口
+ * @date 2023/6/12
+ */
+@DubboService(group = "design", version = "2.0.0")
+@Service
+public class RemoteSystemServiceImpl implements RemoteSystemService {
+
+    @Autowired
+    private SysDictDao sysDictDao;
+
+    @Override
+    public List<SysDictResDto> queryDictByTypeId(Long typeId) {
+        String key = Global.REDIS_SYS_DICT_PREFIX + typeId;
+        String dictCache = RedissonUtils.getString(key);
+        //从redis查,查不到从数据库查,并写入redis
+        if (StringUtils.isBlank(dictCache)) {
+            List<SysDict> sysDictList = sysDictDao.queryByType(typeId);
+            if (CollectionUtils.isEmpty(sysDictList)) {
+                return Collections.emptyList();
+            }
+            List<SysDictResDto> sysDictResDtos = BeanUtils.copyToList(sysDictList, SysDictResDto.class);
+            RedissonUtils.putString(key, JSON.toJSONString(sysDictResDtos), Global.COMMON_EXPIRE);
+            return sysDictResDtos;
+        }
+
+        return JSONObject.parseArray(dictCache, SysDictResDto.class);
+    }
+
+}

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindMenuTreePojo.java

@@ -27,6 +27,11 @@ public class FindMenuTreePojo {
      */
     private Long entId;
 
+    /**
+     * 类型
+     */
+    private Integer type;
+
     /**
      * 角色id
      */

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/FindMenuTreeReqVo.java

@@ -31,4 +31,9 @@ public class FindMenuTreeReqVo implements Serializable {
      */
     private Long userId;
 
+    /**
+     * 类型
+     */
+    private Integer type;
+
 }

+ 32 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/MoveMenuReqVo.java

@@ -0,0 +1,32 @@
+package com.sckw.system.model.vo.req;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 移动菜单
+ * @date 2023/7/6
+ */
+@Data
+public class MoveMenuReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4461708839595368993L;
+
+    /**
+     * 菜单id
+     */
+    @NotNull(message = "菜单id不能为空")
+    private Long id;
+
+    /**
+     * 移动类型  -1上移 1下移
+     */
+    @NotNull(message = "移动类型不能为空")
+    private Integer moveType;
+
+}

+ 31 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/QueryChildMenuReqVo.java

@@ -0,0 +1,31 @@
+package com.sckw.system.model.vo.req;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 查下级
+ * @date 2023/7/6
+ */
+@Data
+public class QueryChildMenuReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4452342292770300657L;
+
+    /**
+     * 菜单id
+     */
+    @NotNull(message = "菜单id不能为空")
+    private Long id;
+
+    /**
+     * 要查询的下级菜单类型  1菜单 2目录
+     */
+    private Integer menuType;
+
+}

+ 35 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/QueryDictTypePageReqVo.java

@@ -0,0 +1,35 @@
+package com.sckw.system.model.vo.req;
+
+import com.sckw.core.model.page.PageRequest;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 查字典类型
+ * @date 2023/7/6
+ */
+@Data
+public class QueryDictTypePageReqVo extends PageRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3459808558841183248L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 字典类型名称
+     */
+    private String name;
+
+    /**
+     * 类型
+     */
+    private String type;
+
+}

+ 48 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/QueryChildMenuResVo.java

@@ -0,0 +1,48 @@
+package com.sckw.system.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 查下级菜单返参
+ * @date 2023/7/6
+ */
+@Data
+public class QueryChildMenuResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1345468842626990594L;
+
+    /**
+     * 菜单id
+     */
+    private Long id;
+
+    /**
+     * 菜单名称
+     */
+    private String name;
+
+    /**
+     * 菜单类型  类型:1菜单/2按钮
+     */
+    private Integer type;
+
+    /**
+     * 菜单编码
+     */
+    private String perms;
+
+    /**
+     * 终端类型(1运营端、2企业PC端、3企业APP、4司机端)
+     */
+    private Integer clientType;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+}

+ 77 - 4
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java

@@ -1,5 +1,7 @@
 package com.sckw.system.service;
 
+import java.util.Date;
+
 import java.util.*;
 
 import cn.hutool.core.collection.CollectionUtil;
@@ -7,6 +9,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.nacos.api.naming.pojo.healthcheck.impl.Http;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.MenuTypeEnum;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
@@ -17,8 +20,12 @@ import com.sckw.system.dao.*;
 import com.sckw.system.model.*;
 import com.sckw.system.model.pojo.FindMenuTreePojo;
 import com.sckw.system.model.vo.req.FindMenuTreeReqVo;
+import com.sckw.system.model.vo.req.MoveMenuReqVo;
+import com.sckw.system.model.vo.req.QueryChildMenuReqVo;
 import com.sckw.system.model.vo.req.RoleBindMenuReqVo;
 import com.sckw.system.model.vo.res.KwsMenuResVo;
+import com.sckw.system.model.vo.res.QueryChildMenuResVo;
+import org.jetbrains.annotations.Nullable;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -60,13 +67,28 @@ public class KwsMenuService {
         if (parentId.compareTo(0L) != 0) {
             KwsMenu kwsMenu = kwsMenuDao.selectByKey(parentId);
             if (Objects.isNull(kwsMenu)) {
-                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+                throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.PARENT_MENU_NOT_EXISTS);
             }
         }
 
-        //有重复的序号,则把后面的都加1
-        if (!Objects.isNull(params.getSort())) {
-            moveSort(params);
+        //新增按钮时,有重复的序号,则把后面的都加1
+        if (params.getType() == MenuTypeEnum.BUTTON.getCode()) {
+            if (!Objects.isNull(params.getSort())) {
+                moveSort(params);
+            }
+        }
+
+        //新增菜单时,如果已经有同级菜单,则序号为最大的序号+1
+        if (params.getType() == MenuTypeEnum.DIRECTORY.getCode()) {
+            KwsMenu kwsMenuParam = new KwsMenu();
+            kwsMenuParam.setType(params.getType());
+            kwsMenuParam.setParentId(params.getParentId());
+            List<KwsMenu> select = kwsMenuDao.select(kwsMenuParam);
+            int sort = 1;
+            if (!CollectionUtils.isEmpty(select)) {
+                sort = select.get(select.size()).getSort() + 1;
+            }
+            params.setSort(sort);
         }
 
         if (kwsMenuDao.insert(params) <= 0) {
@@ -303,4 +325,55 @@ public class KwsMenuService {
     public List<KwsMenu> selectAll() {
         return kwsMenuDao.selectAll();
     }
+
+    @Transactional(rollbackFor = {})
+    public void moveMenu(MoveMenuReqVo reqVo) {
+        KwsMenu kwsMenu = kwsMenuDao.selectByKey(reqVo.getId());
+        if (Objects.isNull(kwsMenu)) {
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.MENU_NOT_EXISTS);
+        }
+
+        //查出要被换位置的按钮
+        KwsMenu targetMenu = getTargetMenu(reqVo.getMoveType(), kwsMenu);
+
+        //修改要换位置的按钮
+        kwsMenu.setSort(kwsMenu.getSort() + reqVo.getMoveType());
+        if (kwsMenuDao.update(kwsMenu) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
+
+        if (Objects.isNull(targetMenu)) {
+            return;
+        }
+
+        //更新被换位置的按钮
+        targetMenu.setSort(targetMenu.getSort() - reqVo.getMoveType());
+        if (kwsMenuDao.update(targetMenu) <= 0) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
+    }
+
+
+    private KwsMenu getTargetMenu(Integer moveType, KwsMenu kwsMenu) {
+        KwsMenu kwsMenuParam = new KwsMenu();
+        kwsMenuParam.setType(kwsMenu.getType());
+        kwsMenuParam.setParentId(kwsMenu.getParentId());
+        kwsMenuParam.setSort(kwsMenu.getSort() + moveType);
+        kwsMenuParam.setDelFlag(Global.NO);
+        List<KwsMenu> targetMenuList = kwsMenuDao.select(kwsMenuParam);
+        return CollectionUtils.isEmpty(targetMenuList) ? null : targetMenuList.get(0);
+    }
+
+
+    public List<QueryChildMenuResVo> queryChildMenu(QueryChildMenuReqVo reqVo) {
+        KwsMenu kwsMenuParam = new KwsMenu();
+        kwsMenuParam.setParentId(reqVo.getId());
+        kwsMenuParam.setType(reqVo.getMenuType());
+        List<KwsMenu> select = kwsMenuDao.select(kwsMenuParam);
+        if (CollectionUtils.isEmpty(select)) {
+            return Collections.emptyList();
+        }
+        return BeanUtils.copyToList(select, QueryChildMenuResVo.class);
+    }
+
 }

+ 27 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/SysDictService.java

@@ -1,12 +1,18 @@
 package com.sckw.system.service;
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.page.PageHelperUtil;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.dao.SysDictDao;
 import com.sckw.system.dao.SysDictTypeDao;
 import com.sckw.system.model.SysDict;
 import com.sckw.system.model.SysDictType;
+import com.sckw.system.model.vo.req.QueryDictTypePageReqVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.util.List;
@@ -63,8 +69,8 @@ public class SysDictService {
      * @return
      * @throws Exception
      */
-    public List<SysDictType> findPage(Map<String, Object> params) throws Exception{
-        return sysDictTypeDao.findPage(params);
+    public List<SysDict> findPage(Map<String, Object> params) throws Exception{
+        return sysDictDao.findPage(params);
     }
 
     /**
@@ -142,4 +148,23 @@ public class SysDictService {
     public List<Map<String, Object>> findList(Map<String, Object> params) throws Exception{
         return sysDictDao.findList(params);
     }
+
+    /**
+     * @param reqVo
+     * @return PageResult
+     * @desc: 查字典类型
+     * @author: czh
+     * @date: 2023/7/6
+     */
+    public PageResult queryDictTypePage(QueryDictTypePageReqVo reqVo) {
+        PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
+        List<SysDictType> list = queryDictType(reqVo);
+        return PageHelperUtil.getPageResult(new PageInfo<>(list));
+    }
+
+    public List<SysDictType> queryDictType(QueryDictTypePageReqVo reqVo) {
+        SysDictType sysDictType = new SysDictType();
+        BeanUtils.copyProperties(reqVo, sysDictType);
+        return sysDictTypeDao.select(sysDictType);
+    }
 }

+ 3 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuDao.xml

@@ -285,6 +285,9 @@
         #{item}
       </foreach>
     </if>
+    <if test="type != null">
+      and sm = #{type}
+    </if>
     ORDER BY sm.level, sm.sort
   </select>
 

+ 5 - 0
sckw-modules/sckw-system/src/main/resources/mapper/SysDictDao.xml

@@ -211,4 +211,9 @@
     </if>
     ORDER BY sort
   </select>
+  <select id="queryByType" resultType="com.sckw.system.model.SysDict">
+    select * from sys_dict where del_flag = 0 and dict_id = #{typeId}
+  </select>
+
+
 </mapper>

+ 16 - 0
sckw-modules/sckw-system/src/main/resources/mapper/SysDictTypeDao.xml

@@ -134,4 +134,20 @@
     </if>
     ORDER BY type, create_time desc
   </select>
+
+  <select id="select" resultType="com.sckw.system.model.SysDictType">
+    select * from sys_dict_type
+    where del_flag = 0
+      <if test="id != null">
+        and id = #{id}
+      </if>
+      <if test="type != null and type != ''">
+        and type = #{type, jdbcType=VARCHAR}
+      </if>
+      <if test="name != null and name != ''">
+        and name = #{name, jdbcType=VARCHAR}
+      </if>
+      ORDER BY type, create_time desc
+  </select>
+
 </mapper>