2 Commits

Author SHA1 Message Date
chy
f9d4b08495 Merge remote-tracking branch 'origin/master' 2026-03-11 00:01:49 +08:00
chy
32627270d1 添加单点登录接口和退出接口 2026-03-11 00:01:32 +08:00
6 changed files with 42 additions and 13 deletions

View File

@@ -2,8 +2,8 @@ spring:
application: application:
name: lideeyunji-server name: lideeyunji-server
profiles: profiles:
active: local # 读取配置 # active: local # 读取配置
# active: prod # 读取配置 active: prod # 读取配置
main: main:
allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。 allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。

View File

@@ -76,9 +76,9 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2), '%') \n"); executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAQTY) - sum(tbl_lgbsa.LASTSAQTY)) / sum(tbl_lgbsa.LASTSAQTY) * 100 END), 2), '%') \n");
executePluginSql.append(" ELSE '0.00%' \n"); executePluginSql.append(" ELSE '0.00%' \n");
executePluginSql.append(" END AS saqty_yoy, \n"); executePluginSql.append(" END AS saqty_yoy, \n");
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.MONTHSAMONEY) / 10000, 2), '万') as MONTHSAMONEY, \n"); //本月销售金额(元) executePluginSql.append(" SUM(tbl_lgbsa.MONTHSAMONEY) as MONTHSAMONEY, \n"); //本月销售金额(元)
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.THISSAMONEY) / 10000, 2), '万') as THISSAMONEY, \n"); //本年销售金额(元) executePluginSql.append(" SUM(tbl_lgbsa.THISSAMONEY) as THISSAMONEY, \n"); //本年销售金额(元)
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.LASTSAMONEY) / 10000, 2), '万') as LASTSAMONEY, \n"); //上年销售金额(元) executePluginSql.append(" SUM(tbl_lgbsa.LASTSAMONEY) as LASTSAMONEY, \n"); //上年销售金额(元)
executePluginSql.append(" -- 销售金额同比(原有新增) \n"); executePluginSql.append(" -- 销售金额同比(原有新增) \n");
executePluginSql.append(" CASE \n"); executePluginSql.append(" CASE \n");
executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \n"); executePluginSql.append(" WHEN (CASE WHEN sum(tbl_lgbsa.LASTSAMONEY) = 0 THEN IF(sum(tbl_lgbsa.THISSAMONEY) > 0, 100, 0) \n");
@@ -91,9 +91,9 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2), '%') \n"); executePluginSql.append(" ELSE (sum(tbl_lgbsa.THISSAMONEY) - sum(tbl_lgbsa.LASTSAMONEY)) / sum(tbl_lgbsa.LASTSAMONEY) * 100 END), 2), '%') \n");
executePluginSql.append(" ELSE '0.00%' \n"); executePluginSql.append(" ELSE '0.00%' \n");
executePluginSql.append(" END AS samoney_yoy, \n"); //销售收入同比 executePluginSql.append(" END AS samoney_yoy, \n"); //销售收入同比
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.MONTHPROFIT) / 10000, 2), '万') as MONTHPROFIT, \n"); //本月毛利额(元) executePluginSql.append(" SUM(tbl_lgbsa.MONTHPROFIT) as MONTHPROFIT, \n"); //本月毛利额(元)
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.THISPROFIT) / 10000, 2), '万') as THISPROFIT, \n"); //本年毛利额(元) executePluginSql.append(" SUM(tbl_lgbsa.THISPROFIT) as THISPROFIT, \n"); //本年毛利额(元)
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.LASTPROFIT) / 10000, 2), '万') as LASTPROFIT, \n"); //上年毛利额(元) executePluginSql.append(" SUM(tbl_lgbsa.LASTPROFIT) as LASTPROFIT, \n"); //上年毛利额(元)
executePluginSql.append(" -- 新增:毛利同比 \n"); executePluginSql.append(" -- 新增:毛利同比 \n");
executePluginSql.append(" CASE \n"); executePluginSql.append(" CASE \n");
executePluginSql.append(" -- 正数红色圆点emoji + 数值 + % \n"); executePluginSql.append(" -- 正数红色圆点emoji + 数值 + % \n");
@@ -109,7 +109,7 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin {
executePluginSql.append(" -- 0值直接显示 \n"); executePluginSql.append(" -- 0值直接显示 \n");
executePluginSql.append(" ELSE '0.00%' \n"); executePluginSql.append(" ELSE '0.00%' \n");
executePluginSql.append(" END AS profit_yoy, \n"); //毛利同比 executePluginSql.append(" END AS profit_yoy, \n"); //毛利同比
executePluginSql.append(" CONCAT(ROUND(SUM(tbl_lgbsa.MONTHCOST) / 10000, 2), '万') as MONTHCOST, \n"); //本月销售成本(元) executePluginSql.append(" SUM(tbl_lgbsa.MONTHCOST) as MONTHCOST, \n"); //本月销售成本(元)
executePluginSql.append(" ROUND(avg(tbl_lgbsa.PROFITCHANGE), 2) as PROFITCHANGE, \n"); //毛利变动(元) executePluginSql.append(" ROUND(avg(tbl_lgbsa.PROFITCHANGE), 2) as PROFITCHANGE, \n"); //毛利变动(元)
executePluginSql.append(" ROUND(avg(tbl_lgbsa.PROFITGROWTH), 2) as PROFITGROWTH, \n"); //毛利额增长率 executePluginSql.append(" ROUND(avg(tbl_lgbsa.PROFITGROWTH), 2) as PROFITGROWTH, \n"); //毛利额增长率
executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISPROFITRATE), 2) as THISPROFITRATE, \n"); //本年毛利率 executePluginSql.append(" ROUND(avg(tbl_lgbsa.THISPROFITRATE), 2) as THISPROFITRATE, \n"); //本年毛利率

View File

@@ -85,6 +85,15 @@ public class AuthController {
return success(true); return success(true);
} }
@PostMapping("/logout-client")
@PermitAll
@Operation(tags = "授权管理",summary = "登出系统")
@OperateLog(enable = false) // 避免 Post 请求被记录操作日志
public CommonResult<Boolean> logoutClient(@RequestParam("refreshToken") String refreshToken) {
logoutService(refreshToken);
return success(true);
}
@PostMapping("/switch-login") @PostMapping("/switch-login")
@Operation(tags = "授权管理",summary = "切换部门登录") @Operation(tags = "授权管理",summary = "切换部门登录")
@OperateLog(enable = false) // 避免 Post 请求被记录操作日志 @OperateLog(enable = false) // 避免 Post 请求被记录操作日志
@@ -164,7 +173,9 @@ public class AuthController {
@Parameter(name = "refreshToken", description = "根据token获取用户信息", required = true) @Parameter(name = "refreshToken", description = "根据token获取用户信息", required = true)
@OperateLog(enable = false) // 避免 Post 请求被记录操作日志 @OperateLog(enable = false) // 避免 Post 请求被记录操作日志
public CommonResult<AdminUserDO> getUerInfo(@RequestParam("refreshToken") String refreshToken) { public CommonResult<AdminUserDO> getUerInfo(@RequestParam("refreshToken") String refreshToken) {
return success(authService.getTokenTouserInfo(refreshToken));
CommonResult<AdminUserDO> result = CommonResult.success(authService.getTokenTouserInfo(refreshToken));
return result;
} }
@GetMapping("/get-permission-info") @GetMapping("/get-permission-info")
@@ -291,7 +302,23 @@ public class AuthController {
authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType()); authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType());
} }
//清空个人信息 //清空个人信息
String userRedisKey="JEE_LOW_CODE:USER:"+loginUserId+":*"; String userRedisKey="LIDEE_LOW_CODE:USER:"+loginUserId+":*";
Set<String> keys = stringRedisTemplate.keys(userRedisKey);
if(keys!=null && keys.size()>0){
keys.forEach(key->{
stringRedisTemplate.delete(key);
});
}
}
private void logoutService(String token){
AdminUserDO user = authService.getTokenTouserInfo(token);
Long loginUserId = user.getId();
if (StrUtil.isNotBlank(token)) {
authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType());
}
//清空个人信息
String userRedisKey="LIDEE_LOW_CODE:USER:"+loginUserId+":*";
Set<String> keys = stringRedisTemplate.keys(userRedisKey); Set<String> keys = stringRedisTemplate.keys(userRedisKey);
if(keys!=null && keys.size()>0){ if(keys!=null && keys.size()>0){
keys.forEach(key->{ keys.forEach(key->{

View File

@@ -100,7 +100,7 @@ public class LideeYunJiPermissionServiceImpl implements ILideeYunJiPermissionSer
} }
//根据角色id来判断我是否是开发者如果有开发者则说明直接可以访问 //根据角色id来判断我是否是开发者如果有开发者则说明直接可以访问
boolean devUserFlag=false; boolean devUserFlag=false;
String isDevUserRedisKey="JEE_LOW_CODE:USER:"+userId+":DEVUSER"; String isDevUserRedisKey="LIDEE_LOW_CODE:USER:"+userId+":DEVUSER";
if(!stringRedisTemplate.hasKey(isDevUserRedisKey)){//没有数据,则查询获取 TODO 优化 if(!stringRedisTemplate.hasKey(isDevUserRedisKey)){//没有数据,则查询获取 TODO 优化
//所有菜单列表 //所有菜单列表
Set<Long> menuIdList = permissionService.getRoleMenuListByRoleId(roleIds); Set<Long> menuIdList = permissionService.getRoleMenuListByRoleId(roleIds);

View File

@@ -85,6 +85,8 @@ public class OAuth2TokenServiceImpl implements IOAuth2TokenService {
// 获得用户基本信息 // 获得用户基本信息
OAuth2AccessTokenDO accessTokenDO= oauth2AccessTokenMapper.selectByAccessToken(refreshToken); OAuth2AccessTokenDO accessTokenDO= oauth2AccessTokenMapper.selectByAccessToken(refreshToken);
AdminUserDO user = adminUserService.getUser(accessTokenDO.getUserId()); AdminUserDO user = adminUserService.getUser(accessTokenDO.getUserId());
user.setPassword("");
user.setEmail("");
return user; return user;
} }

View File

@@ -9,7 +9,7 @@ package com.lideeyunji.tool.framework.yunji.constant;
public interface lideeRedisConstants { public interface lideeRedisConstants {
//低代码 //低代码
String lideeyunji_PREFIX = "JEE_LOW_CODE:"; String lideeyunji_PREFIX = "LIDEE_LOW_CODE:";
//js增强加锁 //js增强加锁
String ENHANCE_JS_LOCK = "LOCK_JS:%s"; String ENHANCE_JS_LOCK = "LOCK_JS:%s";