1.账号权限补充

2.角色相关接口
This commit is contained in:
张松 2025-02-10 14:45:38 +08:00
parent babfa6a8ca
commit 1255780aa1
11 changed files with 97 additions and 19 deletions

View File

@ -4,6 +4,9 @@ import com.czg.service.account.dto.SysLoginDTO;
import com.czg.resp.CzgResult; import com.czg.resp.CzgResult;
import com.czg.sa.StpKit; import com.czg.sa.StpKit;
import com.czg.service.account.service.AuthorizationService; import com.czg.service.account.service.AuthorizationService;
import com.czg.service.account.service.PermissionService;
import com.czg.service.account.vo.LoginVO;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -16,11 +19,11 @@ import java.util.Map;
@RestController @RestController
@RequestMapping("auth") @RequestMapping("auth")
public class AuthorizationController { public class AuthorizationController {
private final AuthorizationService authorizationService; @Resource
private AuthorizationService authorizationService;
@Resource
private PermissionService permissionService;
public AuthorizationController(AuthorizationService authorizationService) {
this.authorizationService = authorizationService;
}
/** /**
* 验证码获取 * 验证码获取
@ -37,10 +40,15 @@ public class AuthorizationController {
* @return token信息 * @return token信息
*/ */
@PostMapping("login") @PostMapping("login")
public CzgResult<?> login(@Validated @RequestBody SysLoginDTO loginDTO) { public CzgResult<LoginVO> login(@Validated @RequestBody SysLoginDTO loginDTO) {
return CzgResult.success(authorizationService.login(loginDTO)); return CzgResult.success(authorizationService.login(loginDTO));
} }
@GetMapping("/permission")
public CzgResult<?> getPermission() {
return CzgResult.success();
}
@GetMapping("test") @GetMapping("test")
public CzgResult<?> login() { public CzgResult<?> login() {
StpKit.ADMIN.login(1); StpKit.ADMIN.login(1);

View File

@ -2,6 +2,12 @@ package com.czg.controller;
import com.czg.annotation.SaAdminCheckPermission; import com.czg.annotation.SaAdminCheckPermission;
import com.czg.resp.CzgResult; import com.czg.resp.CzgResult;
import com.czg.service.account.dto.PageDTO;
import com.czg.service.account.entity.SysRole;
import com.czg.service.account.service.SysRoleService;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -14,8 +20,17 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/role") @RequestMapping("/role")
public class RoleController { public class RoleController {
@Resource
private SysRoleService roleService;
@SaAdminCheckPermission(value = "role.list")
@GetMapping("/list")
public CzgResult<Page<SysRole>> getList(PageDTO pageDTO) {
return CzgResult.success(roleService.getList(pageDTO));
}
@SaAdminCheckPermission(value = "role.add") @SaAdminCheckPermission(value = "role.add")
public CzgResult add() { public CzgResult add(PageDTO pageDTO) {
return null; return null;
} }
} }

View File

@ -1,21 +1,18 @@
package com.czg.sa; package com.czg.sa;
import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpLogic;
import cn.hutool.core.collection.CollectionUtil; import lombok.Getter;
import cn.hutool.core.util.ArrayUtil; import lombok.Setter;
import com.alibaba.fastjson2.JSONObject;
import jakarta.annotation.Resource;
import org.springframework.data.redis.core.StringRedisTemplate;
import java.util.List; import java.util.List;
/** /**
* @author Administrator * @author Administrator
*/ */
@Getter
public class MyStpLogic extends StpLogic { public class MyStpLogic extends StpLogic {
@Resource @Setter
private StringRedisTemplate redisTemplate; private boolean isAdmin;
/** /**
* 初始化 StpLogic, 并指定账号类型 * 初始化 StpLogic, 并指定账号类型
* *

View File

@ -0,0 +1,4 @@
package com.czg.service.account.dto;
public record PageDTO(Integer page, Integer size) {
}

View File

@ -2,6 +2,7 @@ package com.czg.service.account.service;
import com.czg.service.account.dto.SysLoginDTO; import com.czg.service.account.dto.SysLoginDTO;
import com.czg.service.account.vo.LoginVO;
/** /**
* @author Administrator * @author Administrator
@ -9,5 +10,5 @@ import com.czg.service.account.dto.SysLoginDTO;
public interface AuthorizationService { public interface AuthorizationService {
Object getCaptcha(); Object getCaptcha();
Object login(SysLoginDTO loginDTO); LoginVO login(SysLoginDTO loginDTO);
} }

View File

@ -0,0 +1,7 @@
package com.czg.service.account.service;
/**
* @author Administrator
*/
public interface PermissionService {
}

View File

@ -1,5 +1,7 @@
package com.czg.service.account.service; package com.czg.service.account.service;
import com.czg.service.account.dto.PageDTO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService; import com.mybatisflex.core.service.IService;
import com.czg.service.account.entity.SysRole; import com.czg.service.account.entity.SysRole;
@ -14,4 +16,6 @@ import java.util.List;
public interface SysRoleService extends IService<SysRole> { public interface SysRoleService extends IService<SysRole> {
List<SysRole> getByUserId(Long id); List<SysRole> getByUserId(Long id);
Page<SysRole> getList(PageDTO pageDTO);
} }

View File

@ -12,6 +12,7 @@ import com.czg.sa.StpKit;
import com.czg.service.account.entity.*; import com.czg.service.account.entity.*;
import com.czg.service.account.mapper.SysMenuMapper; import com.czg.service.account.mapper.SysMenuMapper;
import com.czg.service.account.service.*; import com.czg.service.account.service.*;
import com.czg.service.account.vo.LoginVO;
import com.mybatisflex.core.query.QueryChain; import com.mybatisflex.core.query.QueryChain;
import com.wf.captcha.SpecCaptcha; import com.wf.captcha.SpecCaptcha;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -61,7 +62,7 @@ public class AuthorizationServiceImpl implements AuthorizationService {
} }
@Override @Override
public Object login(SysLoginDTO loginDTO) { public LoginVO login(SysLoginDTO loginDTO) {
// Object code = redisService.get(RedisCst.LOGIN_CODE + loginDTO.uuid()); // Object code = redisService.get(RedisCst.LOGIN_CODE + loginDTO.uuid());
// if (!"666666".equals(loginDTO.code()) && code == null || !code.equals(loginDTO.code())) { // if (!"666666".equals(loginDTO.code()) && code == null || !code.equals(loginDTO.code())) {
// throw new RuntimeException("验证码错误"); // throw new RuntimeException("验证码错误");
@ -103,6 +104,7 @@ public class AuthorizationServiceImpl implements AuthorizationService {
} }
StpKit.ADMIN.login(user.getId()); StpKit.ADMIN.login(user.getId());
StpKit.ADMIN.setAdmin(user.getIsAdmin());
// 查询角色 // 查询角色
List<SysRole> roleList = sysRoleService.getByUserId(user.getId()); List<SysRole> roleList = sysRoleService.getByUserId(user.getId());
List<String> roleNames = roleList.stream().map(SysRole::getName).collect(Collectors.toList()); List<String> roleNames = roleList.stream().map(SysRole::getName).collect(Collectors.toList());
@ -110,8 +112,6 @@ public class AuthorizationServiceImpl implements AuthorizationService {
// 权限赋予 // 权限赋予
List<String> promissionList = sysMenuMapper.selectByUserId(user.getId(), null).stream().map(SysMenu::getPermission).filter(StrUtil::isNotBlank).collect(Collectors.toList()); List<String> promissionList = sysMenuMapper.selectByUserId(user.getId(), null).stream().map(SysMenu::getPermission).filter(StrUtil::isNotBlank).collect(Collectors.toList());
StpKit.ADMIN.addPermissionList(promissionList); StpKit.ADMIN.addPermissionList(promissionList);
return Map.of("tokenInfo", StpKit.ADMIN.getTokenInfo(), return new LoginVO(StpKit.ADMIN.getTokenInfo(), promissionList, loginDTO.loginType(), shopInfo);
"loginType", loginDTO.loginType(),
"shopInfo", shopInfo);
} }
} }

View File

@ -0,0 +1,11 @@
package com.czg.service.account.service.impl;
import com.czg.service.account.service.PermissionService;
import org.springframework.stereotype.Service;
/**
* @author zs
*/
@Service
public class PermissionServiceImpl implements PermissionService {
}

View File

@ -1,5 +1,9 @@
package com.czg.service.account.service.impl; package com.czg.service.account.service.impl;
import com.czg.sa.StpKit;
import com.czg.service.account.dto.PageDTO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryChain;
import com.mybatisflex.spring.service.impl.ServiceImpl; import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.service.account.entity.SysRole; import com.czg.service.account.entity.SysRole;
import com.czg.service.account.mapper.SysRoleMapper; import com.czg.service.account.mapper.SysRoleMapper;
@ -21,4 +25,13 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
public List<SysRole> getByUserId(Long id) { public List<SysRole> getByUserId(Long id) {
return mapper.selectByUserId(id); return mapper.selectByUserId(id);
} }
@Override
public Page<SysRole> getList(PageDTO pageDTO) {
QueryChain<SysRole> queryChain = queryChain();
if (!StpKit.ADMIN.isAdmin()) {
queryChain.eq(SysRole::getCreateUserId, StpKit.ADMIN.getLoginIdAsLong());
}
return queryChain.page(new Page<>(pageDTO.page(), pageDTO.size()));
}
} }

View File

@ -0,0 +1,18 @@
package com.czg.service.account.vo;
import cn.dev33.satoken.stp.SaTokenInfo;
import com.czg.service.account.entity.TbShopInfo;
import java.util.List;
public record LoginVO(
// token信息
SaTokenInfo tokenInfo,
// 接口权限集合
List<String> promissionList,
// 登录类型
Integer loginType,
// 店铺信息
TbShopInfo shopInfo
) {
}