Merge remote-tracking branch 'origin/master'

This commit is contained in:
wangw 2025-02-10 14:55:41 +08:00
commit 90f8472fcb
17 changed files with 99 additions and 90 deletions

View File

@ -4,6 +4,9 @@ import com.czg.service.account.dto.SysLoginDTO;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
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.web.bind.annotation.*;
@ -16,11 +19,11 @@ import java.util.Map;
@RestController
@RequestMapping("auth")
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信息
*/
@PostMapping("login")
public CzgResult<?> login(@Validated @RequestBody SysLoginDTO loginDTO) {
public CzgResult<LoginVO> login(@Validated @RequestBody SysLoginDTO loginDTO) {
return CzgResult.success(authorizationService.login(loginDTO));
}
@GetMapping("/permission")
public CzgResult<?> getPermission() {
return CzgResult.success();
}
@GetMapping("test")
public CzgResult<?> login() {
StpKit.ADMIN.login(1);

View File

@ -2,6 +2,12 @@ package com.czg.controller;
import com.czg.annotation.SaAdminCheckPermission;
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.RestController;
@ -14,8 +20,17 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/role")
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")
public CzgResult add() {
public CzgResult add(PageDTO pageDTO) {
return null;
}
}

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.czg</groupId>
<artifactId>cash-common</artifactId>
<version>1.0.0</version>
</parent>
<name>异常处理模块</name>
<description>异常处理</description>
<artifactId>cash-common-exception</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>

View File

@ -1,33 +0,0 @@
package com.czg.handler;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**
* @author Administrator
*/
@RestControllerAdvice
public class GlobalExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@PostConstruct
public void init() {
log.info("✅ GlobalExceptionHandler 已初始化");
}
@ExceptionHandler(Exception.class)
public Map<String, Object> handleRuntimeException(Exception e) {
log.error("", e);
Map<String, Object> error = new HashMap<>();
error.put("code", 500);
error.put("msg", e.getMessage());
return error;
}
}

View File

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

View File

@ -14,7 +14,6 @@
<modules>
<module>cash-common-tools</module>
<module>cash-common-sa-token</module>
<module>cash-common-exception</module>
</modules>
</project>

View File

@ -40,11 +40,6 @@
<artifactId>cash-common-tools</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.czg</groupId>
<artifactId>cash-common-exception</artifactId>
<version>1.0.0</version>
</dependency>
<!-- Sa-Token 权限认证在线文档https://sa-token.cc -->
<!-- sa-token 的漏洞的依赖处理 -->
<!-- sa-token start -->

View File

@ -28,10 +28,7 @@
<artifactId>cash-common-tools</artifactId>
</dependency>
<dependency>
<groupId>com.czg</groupId>
<artifactId>cash-common-exception</artifactId>
</dependency>
</dependencies>
</project>

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.vo.LoginVO;
/**
* @author Administrator
@ -9,5 +10,5 @@ import com.czg.service.account.dto.SysLoginDTO;
public interface AuthorizationService {
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;
import com.czg.service.account.dto.PageDTO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.czg.service.account.entity.SysRole;
@ -14,4 +16,6 @@ import java.util.List;
public interface SysRoleService extends IService<SysRole> {
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.mapper.SysMenuMapper;
import com.czg.service.account.service.*;
import com.czg.service.account.vo.LoginVO;
import com.mybatisflex.core.query.QueryChain;
import com.wf.captcha.SpecCaptcha;
import jakarta.annotation.Resource;
@ -61,7 +62,7 @@ public class AuthorizationServiceImpl implements AuthorizationService {
}
@Override
public Object login(SysLoginDTO loginDTO) {
public LoginVO login(SysLoginDTO loginDTO) {
// Object code = redisService.get(RedisCst.LOGIN_CODE + loginDTO.uuid());
// if (!"666666".equals(loginDTO.code()) && code == null || !code.equals(loginDTO.code())) {
// throw new RuntimeException("验证码错误");
@ -103,6 +104,7 @@ public class AuthorizationServiceImpl implements AuthorizationService {
}
StpKit.ADMIN.login(user.getId());
StpKit.ADMIN.setAdmin(user.getIsAdmin());
// 查询角色
List<SysRole> roleList = sysRoleService.getByUserId(user.getId());
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());
StpKit.ADMIN.addPermissionList(promissionList);
return Map.of("tokenInfo", StpKit.ADMIN.getTokenInfo(),
"loginType", loginDTO.loginType(),
"shopInfo", shopInfo);
return new LoginVO(StpKit.ADMIN.getTokenInfo(), promissionList, loginDTO.loginType(), 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;
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.czg.service.account.entity.SysRole;
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) {
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
) {
}

View File

@ -69,7 +69,7 @@ public class Main {
//设置表前缀和只生成哪些表setGenerateTable 未配置时生成所有表
globalConfig.getStrategyConfig()
.setTablePrefix("")
.setGenerateTable("tb_shop_user");
.setGenerateTable("sys_users_roles");
//设置生成 entity 并启用 Lombok
globalConfig.enableEntity()