Browse Source

职位功能, 修改分页参数变量名称

Gaokun Wang 1 month ago
parent
commit
e423da1030

+ 17 - 18
eco-common/com-core/src/main/java/org/eco/vip/orm/pojo/OrderDomain.java

@@ -16,53 +16,52 @@ import org.eco.vip.orm.utils.StrUtils;
  * @author GaoKunW
  * @date 2025/7/1 21:44
  */
+@Getter
 public class OrderDomain {
 
     /**
      * 排序列
      */
-    public static final String ORDER_BY_COLUMN = "orderByColumn";
+    public static final String ORDER_BY_COLUMN = "orderName";
 
     /**
      * 排序的方向 "desc" 或者 "asc".
      */
-    public static final String IS_ASC = "isAsc";
+    public static final String ORDER_BY = "orderBy";
     /**
      * 排序列
      */
     @Setter
-    @Getter
-    private String orderByColumn;
+    private String orderName;
 
     /**
      * 排序的方向desc或者asc
      */
-    @Getter
-    private String isAsc = "asc";
+    private String orderBy = "asc";
 
-    public void setIsAsc(String isAsc) {
-        if (StrUtils.isNotEmpty(isAsc)) {
+    public void setOrderBy(String orderBy) {
+        if (StrUtils.isNotEmpty(orderBy)) {
             // 兼容前端排序类型
-            if ("ascending".equals(isAsc)) {
-                isAsc = "asc";
-            } else if ("descending".equals(isAsc)) {
-                isAsc = "desc";
+            if ("ascending".equals(orderBy)) {
+                orderBy = "asc";
+            } else if ("descending".equals(orderBy)) {
+                orderBy = "desc";
             }
-            this.isAsc = isAsc;
+            this.orderBy = orderBy;
         }
     }
 
-    public String getOrderBy() {
-        if (StrUtils.isEmpty(orderByColumn)) {
+    public String getOrderBySql() {
+        if (StrUtils.isEmpty(orderName)) {
             return "";
         }
-        return StrUtils.toUnderlineCase(orderByColumn) + " " + isAsc;
+        return StrUtils.toUnderlineCase(orderName) + " " + orderBy;
     }
 
     public static OrderDomain buildOrderRequest() {
         OrderDomain orderDomain = new OrderDomain();
-        orderDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
-        orderDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
+        orderDomain.setOrderName(ServletUtils.getParameter(ORDER_BY_COLUMN));
+        orderDomain.setOrderBy(ServletUtils.getParameter(ORDER_BY));
         return orderDomain;
     }
 }

+ 2 - 2
eco-common/com-orm/src/main/java/org/eco/vip/orm/service/BaseService.java

@@ -28,8 +28,8 @@ public class BaseService<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> i
     protected QueryWrapper buildBaseQueryWrapper() {
         QueryWrapper queryWrapper = query();
         OrderDomain orderDomain = OrderDomain.buildOrderRequest();
-        if (StrUtils.isNotEmpty(orderDomain.getOrderBy())) {
-            String orderBy = SqlUtils.escapeOrderBySql(orderDomain.getOrderBy());
+        if (StrUtils.isNotEmpty(orderDomain.getOrderBySql())) {
+            String orderBy = SqlUtils.escapeOrderBySql(orderDomain.getOrderBySql());
             queryWrapper.orderBy(orderBy);
         }
         return queryWrapper;

+ 82 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/controller/position/PositionController.java

@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ *
+ */
+
+package org.eco.vip.auth.controller.position;
+
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import org.eco.vip.auth.domain.position.pojo.PositionBO;
+import org.eco.vip.auth.domain.position.pojo.PositionVO;
+import org.eco.vip.auth.service.position.IPositionService;
+import org.eco.vip.orm.pojo.CommonResult;
+import org.eco.vip.orm.pojo.PageResult;
+import org.eco.vip.security.annotation.PermissionsResource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+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.RestController;
+
+import java.util.List;
+
+import static org.eco.vip.orm.pojo.CommonResult.fail;
+import static org.eco.vip.orm.pojo.CommonResult.success;
+
+/**
+ * @description PositionController
+ *
+ * @author GaoKunW
+ * @date 2025/7/4 16:03
+ */
+@RestController
+@RequestMapping("/system/position")
+@Validated
+@PermissionsResource("position")
+public class PositionController {
+
+    @Resource
+    private IPositionService positionService;
+
+    @GetMapping("/page")
+    public CommonResult<PageResult<PositionVO>> page(PositionBO positionBO) {
+        return success(positionService.selectPage(positionBO));
+    }
+
+    @GetMapping("/list")
+    public CommonResult<List<PositionVO>> list(PositionBO positionBO) {
+        return success(positionService.selectList(positionBO));
+    }
+
+    @PostMapping("/add")
+    @SaCheckPermission("system:position:add")
+    public CommonResult<String> add(@RequestBody @Valid PositionBO positionBO) {
+        boolean result = positionService.insert(positionBO);
+        if (!result) {
+            return fail("新增职位失败!");
+        }
+        return success();
+    }
+
+    @DeleteMapping("/edit")
+    public CommonResult<String> edit(@RequestBody @Valid PositionBO positionBO) {
+        return success();
+    }
+
+    @PostMapping("/delete")
+    @SaCheckPermission("system:position:delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") List<String> ids) {
+        boolean result = positionService.delete(ids);
+        if (!result) {
+            return fail("删除职位失败!");
+        }
+
+        return success();
+    }
+}

+ 56 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/position/Position.java

@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ *
+ */
+
+package org.eco.vip.auth.domain.position;
+
+
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.vip.orm.domain.BaseEntity;
+
+/**
+ * @description Position
+ *
+ * @author GaoKunW
+ * @date 2025/7/4 15:51
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table("system_position_t")
+public class Position extends BaseEntity {
+
+    /**
+     * 唯一标识
+     */
+    @Id
+    private String positionId;
+
+    /**
+     * 组织id
+     */
+    private String orgId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 分类
+     */
+    private String category;
+
+    /**
+     * 显示顺序
+     */
+    private Integer orderNum;
+}

+ 52 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/position/pojo/PositionBO.java

@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ *
+ */
+
+package org.eco.vip.auth.domain.position.pojo;
+
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.vip.auth.domain.position.Position;
+import org.eco.vip.orm.domain.BaseBO;
+
+/**
+ * @description PositionBO
+ *
+ * @author GaoKunW
+ * @date 2025/7/4 15:54
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Position.class, reverseConvertGenerate = false)
+public class PositionBO extends BaseBO {
+
+    /**
+     * 组织id
+     */
+    @NotBlank(message = "orgId不能为空")
+    private String orgId;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message = "name不能为空")
+    private String name;
+
+    /**
+     * 分类
+     */
+    @NotBlank(message = "category不能为空")
+    private String category;
+
+    /**
+     * 显示顺序
+     */
+    @NotNull(message = "orderNum不能为空")
+    private Integer orderNum;
+
+}

+ 57 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/position/pojo/PositionVO.java

@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ *
+ */
+
+package org.eco.vip.auth.domain.position.pojo;
+
+
+import com.mybatisflex.annotation.Id;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.vip.auth.domain.position.Position;
+import org.eco.vip.orm.domain.BaseBO;
+
+/**
+ * @description PositionVO
+ *
+ * @author GaoKunW
+ * @date 2025/7/4 15:54
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Position.class, reverseConvertGenerate = false)
+public class PositionVO extends BaseBO {
+
+    /**
+     * 唯一标识
+     */
+    @Id
+    private String positionId;
+
+    /**
+     * 组织id
+     */
+    private String orgId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 分类
+     */
+    private String category;
+
+    /**
+     * 显示顺序
+     */
+    private Integer orderNum;
+}

+ 21 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/mapper/PositionMapper.java

@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ *
+ */
+
+package org.eco.vip.auth.mapper;
+
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.vip.auth.domain.position.Position;
+
+/**
+ * @description PositionMapper
+ *
+ * @author GaoKunW
+ * @date 2025/7/4 15:57
+ */
+@Mapper
+public interface PositionMapper extends BaseMapper<Position> {
+}

+ 69 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/service/position/IPositionService.java

@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ *
+ */
+
+package org.eco.vip.auth.service.position;
+
+
+import org.eco.vip.auth.domain.position.Position;
+import org.eco.vip.auth.domain.position.pojo.PositionBO;
+import org.eco.vip.auth.domain.position.pojo.PositionVO;
+import org.eco.vip.orm.pojo.PageResult;
+import org.eco.vip.orm.service.IBaseService;
+
+import java.util.List;
+
+/**
+ * @description IPositionService
+ *
+ * @author GaoKunW
+ * @date 2025/7/4 15:58
+ */
+public interface IPositionService extends IBaseService<Position> {
+
+
+    /**
+     * @description: 分页查询
+     * @param positionBO 参数
+     * @return PageResult<OrgVO>
+     **/
+    PageResult<PositionVO> selectPage(PositionBO positionBO);
+
+    /**
+     * @description: 查询
+     * @param positionBO 参数
+     * @return List<OrgVO>
+     **/
+    List<PositionVO> selectList(PositionBO positionBO);
+
+    /**
+     * @description: 新增
+     * @param positionBO 参数
+     * @return boolean 是否成功
+     **/
+    boolean insert(PositionBO positionBO);
+
+    /**
+     * @description: 更新
+     * @param positionBO 参数
+     * @return boolean 是否成功
+     **/
+    boolean update(PositionBO positionBO);
+
+    /**
+     * @description: 删除
+     * @param ids ids
+     * @return boolean 是否成功
+     **/
+    boolean delete(List<String> ids);
+
+    /**
+     * 根据ID查询信息
+     *
+     * @param id ID
+     * @return 组织信息
+     */
+    PositionVO selectById(String id);
+
+}

+ 79 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/service/position/PositionService.java

@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ *
+ */
+
+package org.eco.vip.auth.service.position;
+
+
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import org.eco.vip.auth.domain.position.Position;
+import org.eco.vip.auth.domain.position.pojo.PositionBO;
+import org.eco.vip.auth.domain.position.pojo.PositionVO;
+import org.eco.vip.auth.mapper.PositionMapper;
+import org.eco.vip.orm.domain.PageQuery;
+import org.eco.vip.orm.pojo.PageResult;
+import org.eco.vip.orm.service.BaseService;
+import org.eco.vip.orm.utils.MapstructUtils;
+import org.eco.vip.orm.utils.ObjUtils;
+import org.eco.vip.orm.utils.RandomUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+import static org.eco.vip.auth.domain.position.table.PositionTableDef.POSITION;
+
+/**
+ * @description PositionService
+ *
+ * @author GaoKunW
+ * @date 2025/7/4 15:58
+ */
+@Service
+public class PositionService extends BaseService<PositionMapper, Position> implements IPositionService {
+
+    private QueryWrapper buildQueryWrapper(PositionBO positionBO) {
+        return super.buildBaseQueryWrapper()
+                .and(POSITION.CATEGORY.eq(positionBO.getCategory()))
+                .and(POSITION.NAME.eq(positionBO.getName()))
+                .and(POSITION.STATUS.eq(positionBO.getStatus()));
+    }
+
+    @Override
+    public PageResult<PositionVO> selectPage(PositionBO positionBO) {
+        QueryWrapper queryWrapper = buildQueryWrapper(positionBO);
+        Page<PositionVO> page = this.pageAs(PageQuery.build(), queryWrapper, PositionVO.class);
+        return PageResult.build(page);
+    }
+
+    @Override
+    public List<PositionVO> selectList(PositionBO positionBO) {
+        QueryWrapper queryWrapper = buildQueryWrapper(positionBO);
+        return this.listAs(queryWrapper, PositionVO.class);
+    }
+
+    @Override
+    public boolean insert(PositionBO positionBO) {
+        Position position = MapstructUtils.convert(positionBO, Position.class);
+        if (ObjUtils.isNotNull(position)) {
+            position.setCode(RandomUtils.randomString(10));
+        }
+        return this.save(position);
+    }
+
+    @Override
+    public boolean update(PositionBO positionBO) {
+        return false;
+    }
+
+    @Override
+    public boolean delete(List<String> ids) {
+        return false;
+    }
+
+    @Override
+    public PositionVO selectById(String id) {
+        return null;
+    }
+}

+ 23 - 0
eco-start/src/main/resources/db/mysql/V1_0_0_1__sys-init-ddl.sql

@@ -200,6 +200,29 @@ CREATE TABLE `system_menu_t`
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单' ROW_FORMAT = DYNAMIC;
 
 
+-- ----------------------------
+-- Table structure for system_position_t
+-- ----------------------------
+DROP TABLE IF EXISTS `system_position_t`;
+CREATE TABLE `system_position_t`
+(
+    `position_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+    `org_id`      varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织id',
+    `name`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+    `code`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码',
+    `category`    varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分类',
+    `order_num`   int NULL DEFAULT NULL COMMENT '显示顺序',
+    `tenant_id`   varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户编号',
+    `status`      varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态(1正常 0停用)',
+    `version`     int NULL DEFAULT NULL COMMENT '乐观锁',
+    `del_flag`    varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志(1代表已删除 0代表存在)',
+    `create_by`   varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
+    `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `update_by`   varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者',
+    `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+    `remark`      varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+    PRIMARY KEY (`position_id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '职位' ROW_FORMAT = DYNAMIC;
 
 SET
 FOREIGN_KEY_CHECKS = 1;