diff --git a/src/main/java/com/ycwl/basic/controller/pc/PermissionController.java b/src/main/java/com/ycwl/basic/controller/pc/PermissionController.java new file mode 100644 index 0000000..c353762 --- /dev/null +++ b/src/main/java/com/ycwl/basic/controller/pc/PermissionController.java @@ -0,0 +1,56 @@ +package com.ycwl.basic.controller.pc; + +import com.ycwl.basic.constant.BaseContextHandler; +import com.ycwl.basic.model.pc.permission.entity.PermissionEntity; +import com.ycwl.basic.model.pc.permission.req.PermissionSaveReq; +import com.ycwl.basic.model.pc.permission.resp.PermissionResp; +import com.ycwl.basic.service.pc.PermissionService; +import com.ycwl.basic.utils.ApiResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.ArrayList; +import java.util.Arrays; + +@RestController +@RequestMapping("/api/permission/v1") +@Api(tags = "权限管理接口") +public class PermissionController { + @Autowired + private PermissionService permissionService; + + @GetMapping("/get/") + public ApiResponse getPermissionByUser() { + String userId = BaseContextHandler.getUserId(); + PermissionEntity permission = permissionService.getPermissionByUserId(Long.parseLong(userId)); + if (permission == null || StringUtils.isEmpty(permission.getPermString())) { + return ApiResponse.success(new PermissionResp(new ArrayList<>())); + } + return ApiResponse.success(new PermissionResp(Arrays.asList(StringUtils.split(permission.getPermString(), ",")))); + } + + @ApiOperation("根据用户ID查询权限信息") + @GetMapping("/get/{userId}") + public ApiResponse getPermissionByUser(@PathVariable Long userId) { + PermissionEntity permission = permissionService.getPermissionByUserId(userId); + if (permission == null || StringUtils.isEmpty(permission.getPermString())) { + return ApiResponse.success(new PermissionResp(new ArrayList<>())); + } + return ApiResponse.success(new PermissionResp(Arrays.asList(StringUtils.split(permission.getPermString(), ",")))); + } + + @ApiOperation("保存或更新权限信息") + @PostMapping("/save/{userId}") + public ApiResponse saveOrUpdate(@PathVariable Long userId, @RequestBody PermissionSaveReq req) { + permissionService.saveOrUpdate(userId, StringUtils.join(req.getPermissions(), ",")); + return ApiResponse.success(true); + } +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/mapper/PermissionMapper.java b/src/main/java/com/ycwl/basic/mapper/PermissionMapper.java new file mode 100644 index 0000000..d2f60f1 --- /dev/null +++ b/src/main/java/com/ycwl/basic/mapper/PermissionMapper.java @@ -0,0 +1,15 @@ +package com.ycwl.basic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycwl.basic.model.pc.permission.entity.PermissionEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface PermissionMapper extends BaseMapper { + // 新增用户ID查询方法 + PermissionEntity selectByUserId(@Param("userId") Long userId); + + void insertPermission(PermissionEntity entity); + void updatePermission(PermissionEntity entity); +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/permission/entity/PermissionEntity.java b/src/main/java/com/ycwl/basic/model/pc/permission/entity/PermissionEntity.java new file mode 100644 index 0000000..a0c2202 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/permission/entity/PermissionEntity.java @@ -0,0 +1,31 @@ +package com.ycwl.basic.model.pc.permission.entity; + +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 lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("permission") +public class PermissionEntity implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @TableField("user_id") + private Long userId; // 确保字段映射 + + @TableField("perm_str") + private String permString; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/permission/req/PermissionSaveReq.java b/src/main/java/com/ycwl/basic/model/pc/permission/req/PermissionSaveReq.java new file mode 100644 index 0000000..f8cbe77 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/permission/req/PermissionSaveReq.java @@ -0,0 +1,10 @@ +package com.ycwl.basic.model.pc.permission.req; + +import lombok.Data; + +import java.util.List; + +@Data +public class PermissionSaveReq { + private List permissions; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/permission/resp/PermissionResp.java b/src/main/java/com/ycwl/basic/model/pc/permission/resp/PermissionResp.java new file mode 100644 index 0000000..cde7837 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/permission/resp/PermissionResp.java @@ -0,0 +1,12 @@ +package com.ycwl.basic.model.pc.permission.resp; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.List; + +@Data +@AllArgsConstructor +public class PermissionResp { + private List permissions; +} diff --git a/src/main/java/com/ycwl/basic/service/pc/PermissionService.java b/src/main/java/com/ycwl/basic/service/pc/PermissionService.java new file mode 100644 index 0000000..b539031 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/pc/PermissionService.java @@ -0,0 +1,10 @@ +package com.ycwl.basic.service.pc; + +import com.ycwl.basic.model.pc.permission.entity.PermissionEntity; + +public interface PermissionService { + // 新增权限查询接口 + PermissionEntity getPermissionByUserId(Long userId); + + boolean saveOrUpdate(Long userId, String permStr); +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/PermissionServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/PermissionServiceImpl.java new file mode 100644 index 0000000..045ede1 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/pc/impl/PermissionServiceImpl.java @@ -0,0 +1,31 @@ +package com.ycwl.basic.service.pc.impl; + +import com.ycwl.basic.mapper.PermissionMapper; +import com.ycwl.basic.model.pc.permission.entity.PermissionEntity; +import com.ycwl.basic.service.pc.PermissionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class PermissionServiceImpl implements PermissionService { + @Autowired + private PermissionMapper permissionMapper; + + @Override + public PermissionEntity getPermissionByUserId(Long userId) { + return permissionMapper.selectByUserId(userId); + } + + @Override + public boolean saveOrUpdate(Long userId, String permStr) { + PermissionEntity entity = new PermissionEntity(); + entity.setUserId(userId); + entity.setPermString(permStr); + if (permissionMapper.selectByUserId(userId) == null) { + permissionMapper.insertPermission(entity); + } else { + permissionMapper.updatePermission(entity); + } + return true; + } +} \ No newline at end of file diff --git a/src/main/resources/mapper/PermissionMapper.xml b/src/main/resources/mapper/PermissionMapper.xml new file mode 100644 index 0000000..22f9431 --- /dev/null +++ b/src/main/resources/mapper/PermissionMapper.xml @@ -0,0 +1,22 @@ + + + + + + INSERT INTO permission (user_id, perm_str, create_time, update_time) + VALUES (#{userId}, #{permString}, NOW(), NOW()) + + + + + UPDATE permission + SET perm_str = #{permString}, update_time = NOW() + WHERE user_id = #{userId} + + + \ No newline at end of file