This commit is contained in:
Jerry Yan 2025-03-31 18:19:36 +08:00
parent da72e7e0a9
commit fcddc4fc8c
8 changed files with 187 additions and 0 deletions

View File

@ -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<PermissionResp> 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<PermissionResp> 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);
}
}

View File

@ -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<PermissionEntity> {
// 新增用户ID查询方法
PermissionEntity selectByUserId(@Param("userId") Long userId);
void insertPermission(PermissionEntity entity);
void updatePermission(PermissionEntity entity);
}

View File

@ -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;
}

View File

@ -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<String> permissions;
}

View File

@ -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<String> permissions;
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -0,0 +1,22 @@
<?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.ycwl.basic.mapper.PermissionMapper">
<!-- 新增插入语句 -->
<insert id="insertPermission">
INSERT INTO permission (user_id, perm_str, create_time, update_time)
VALUES (#{userId}, #{permString}, NOW(), NOW())
</insert>
<!-- 新增更新语句 -->
<update id="updatePermission">
UPDATE permission
SET perm_str = #{permString}, update_time = NOW()
WHERE user_id = #{userId}
</update>
<select id="selectByUserId" resultType="com.ycwl.basic.model.pc.permission.entity.PermissionEntity">
SELECT id, user_id, perm_str as permString, create_time, update_time
FROM permission
WHERE user_id = #{userId}
limit 1
</select>
</mapper>