feat: 一些调整

This commit is contained in:
曹鹏飞 2025-02-12 13:02:48 +08:00
parent 95dcd856e3
commit 0fe44a2fbe
13 changed files with 105 additions and 66 deletions

View File

@ -151,7 +151,6 @@ public class AppUserController extends ControllerBase {
/** /**
* 搜索代理商子账号列表(根据公司名称或主账号) * 搜索代理商子账号列表(根据公司名称或主账号)
*
* @param request 请求参数 * @param request 请求参数
*/ */
@PostMapping("searchSimpleUsers") @PostMapping("searchSimpleUsers")

View File

@ -28,7 +28,7 @@ public class ControllerTest {
@Test @Test
public void test2() { public void test2() {
// List<AdminApi> apis = new ArrayList<>(); // List<AdminApi> apis = new ArrayList<>();
String pre = ""; String pre = "/admin";
// 获取所有的请求映射 // 获取所有的请求映射
Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingHandlerMapping.getHandlerMethods(); Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingHandlerMapping.getHandlerMethods();
for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : handlerMethods.entrySet()) { for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : handlerMethods.entrySet()) {

View File

@ -49,7 +49,7 @@ public class AppController extends ControllerBase {
.setExtra("from", "app") .setExtra("from", "app")
.setExtra("name", user.getName()) .setExtra("name", user.getName())
.setExtra("email", user.getEmail()) .setExtra("email", user.getEmail())
.setExtra("companys", StrUtil.split(user.getCompanyId(), ",").stream().map(Integer::valueOf).collect(Collectors.toList())) .setExtra("companyIds", StrUtil.split(user.getCompanyId(), ",").stream().map(Integer::valueOf).collect(Collectors.toList()))
.setExtra("isPrimary", user.getIsPrimary())); .setExtra("isPrimary", user.getIsPrimary()));
user.setLastLoginTime(LocalDateTime.now()); user.setLastLoginTime(LocalDateTime.now());
appUserService.updateById(user); appUserService.updateById(user);

View File

@ -16,8 +16,8 @@ public class SearchAppUserForAdminRequest extends PageRequest {
//公司名称 //公司名称
private String companyName; private String companyName;
// 是否启 // 状态0待激活1-启用2
private Boolean enable; private Integer userState;
//状态0审核中1使用中2已过期 //状态0审核中1使用中2已过期
private Integer state; private Integer state;

View File

@ -12,7 +12,7 @@ public class UserSearchRequest extends PageRequest{
private String key; private String key;
//是否启用 //是否启用
private Boolean enabled; private Integer state;
//公司id //公司id
@JsonIgnore @JsonIgnore

View File

@ -1,7 +1,6 @@
package com.nflg.mobilebroken.common.pojo.vo; package com.nflg.mobilebroken.common.pojo.vo;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -37,7 +36,6 @@ public class DeviceInfoVO {
private Integer warrantyMonth; private Integer warrantyMonth;
//机型部件 //机型部件
@JsonIgnore
private String component; private String component;
//设备部件列表 //设备部件列表

View File

@ -1,7 +1,6 @@
package com.nflg.mobilebroken.common.util; package com.nflg.mobilebroken.common.util;
import cn.dev33.satoken.stp.SaTokenInfo; import com.nflg.mobilebroken.common.constant.STATE;
import cn.hutool.core.collection.ListUtil;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -12,32 +11,49 @@ public class AdminUserUtil {
private static final Map<Integer, List<String>> PERMISSION_MAP = new ConcurrentHashMap<>(); private static final Map<Integer, List<String>> PERMISSION_MAP = new ConcurrentHashMap<>();
public static Integer getUserId(){ public static Integer getUserId(){
SaTokenInfo tokenValue = SaTokenAdminUtil.getTokenInfo(); // SaTokenInfo tokenValue = SaTokenAdminUtil.getTokenInfo();
if (SaTokenAdminUtil.isLogin()) { // if (SaTokenAdminUtil.isLogin()) {
// return SaTokenAdminUtil.getLoginIdAsInt();
// }
// return 1;
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return SaTokenAdminUtil.getLoginIdAsInt(); return SaTokenAdminUtil.getLoginIdAsInt();
} }
return 1;
}
public static String getUserName() { public static String getUserName() {
if (SaTokenAdminUtil.isLogin()) { // if (SaTokenAdminUtil.isLogin()) {
// return (String) SaTokenAdminUtil.getExtra("name");
// }
// return "admin";
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return (String) SaTokenAdminUtil.getExtra("name"); return (String) SaTokenAdminUtil.getExtra("name");
} }
return "admin";
}
public static List<String> getRoles() { public static List<String> getRoles() {
if (SaTokenAdminUtil.isLogin()) { // if (SaTokenAdminUtil.isLogin()) {
// return (List<String>) SaTokenAdminUtil.getExtra("roles");
// }
// return ListUtil.of("管理员");
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return (List<String>) SaTokenAdminUtil.getExtra("roles"); return (List<String>) SaTokenAdminUtil.getExtra("roles");
} }
return ListUtil.of("管理员");
}
public static String getUserNo(){ public static String getUserNo(){
if (SaTokenAdminUtil.isLogin()) { // if (SaTokenAdminUtil.isLogin()) {
// return (String) SaTokenAdminUtil.getExtra("code");
// }
// return "admin";
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return (String) SaTokenAdminUtil.getExtra("code"); return (String) SaTokenAdminUtil.getExtra("code");
} }
return "admin";
public static String getEmail() {
// if (SaTokenAdminUtil.isLogin()) {
// return (String) SaTokenAdminUtil.getExtra("email");
// }
// return "aa@gmail.com";
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return (String) SaTokenAdminUtil.getExtra("email");
} }
public static List<String> getPermissions() { public static List<String> getPermissions() {
@ -51,11 +67,4 @@ public class AdminUserUtil {
public static void clearPermissions() { public static void clearPermissions() {
PERMISSION_MAP.remove(getUserId()); PERMISSION_MAP.remove(getUserId());
} }
public static String getEmail() {
if (SaTokenAdminUtil.isLogin()) {
return (String) SaTokenAdminUtil.getExtra("email");
}
return "aa@gmail.com";
}
} }

View File

@ -1,6 +1,6 @@
package com.nflg.mobilebroken.common.util; package com.nflg.mobilebroken.common.util;
import cn.hutool.core.collection.ListUtil; import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.pojo.dto.UserDTO; import com.nflg.mobilebroken.common.pojo.dto.UserDTO;
import java.util.List; import java.util.List;
@ -8,32 +8,40 @@ import java.util.List;
public class AppUserUtil { public class AppUserUtil {
public static Integer getUserId() { public static Integer getUserId() {
if (SaTokenAppUtil.isLogin()) { // if (SaTokenAppUtil.isLogin()) {
// return SaTokenAppUtil.getLoginIdAsInt();
// }
// return 1;
VUtils.trueThrow(!SaTokenAppUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return SaTokenAppUtil.getLoginIdAsInt(); return SaTokenAppUtil.getLoginIdAsInt();
} }
return 1;
}
public static String getUserName() { public static String getUserName() {
if (SaTokenAppUtil.isLogin()) { // if (SaTokenAppUtil.isLogin()) {
// return (String) SaTokenAppUtil.getExtra("name");
// }
// return "admin";
VUtils.trueThrow(!SaTokenAppUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return (String) SaTokenAppUtil.getExtra("name"); return (String) SaTokenAppUtil.getExtra("name");
} }
return "admin";
}
public static String getEmail() { public static String getEmail() {
if (SaTokenAppUtil.isLogin()) { // if (SaTokenAppUtil.isLogin()) {
// return (String) SaTokenAppUtil.getExtra("email");
// }
// return "aa@gmail.com";
VUtils.trueThrow(!SaTokenAppUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return (String) SaTokenAppUtil.getExtra("email"); return (String) SaTokenAppUtil.getExtra("email");
} }
return "aa@gmail.com";
}
public static List<Integer> getCompanyIds() { public static List<Integer> getCompanyIds() {
if (SaTokenAppUtil.isLogin()) { // if (SaTokenAppUtil.isLogin()) {
// return (List<Integer>) SaTokenAppUtil.getExtra("companyIds");
// }
// return ListUtil.of(1);
VUtils.trueThrow(!SaTokenAppUtil.isLogin()).throwMessage(STATE.LoginError, "请重新登录");
return (List<Integer>) SaTokenAppUtil.getExtra("companyIds"); return (List<Integer>) SaTokenAppUtil.getExtra("companyIds");
} }
return ListUtil.of(1);
}
public static UserDTO getUser() { public static UserDTO getUser() {
UserDTO user = new UserDTO(); UserDTO user = new UserDTO();

View File

@ -33,8 +33,8 @@ public class StpInterfaceImpl implements StpInterface {
if (CollectionUtil.isEmpty(urls)) { if (CollectionUtil.isEmpty(urls)) {
List<String> roleCodes = (List<String>) SaTokenAdminUtil.getExtra("roles"); List<String> roleCodes = (List<String>) SaTokenAdminUtil.getExtra("roles");
urls = adminRoleService.getUrlsByRoleCodes(roleCodes); urls = adminRoleService.getUrlsByRoleCodes(roleCodes);
AdminUserUtil.setPermissions(urls);
urls.addAll(adminApiService.getPublics()); urls.addAll(adminApiService.getPublics());
AdminUserUtil.setPermissions(urls);
} }
return urls; return urls;
} }

View File

@ -3,9 +3,9 @@ package com.nflg.mobilebroken.gateway.config;
import cn.dev33.satoken.reactor.context.SaReactorSyncHolder; import cn.dev33.satoken.reactor.context.SaReactorSyncHolder;
import cn.dev33.satoken.reactor.filter.SaReactorFilter; import cn.dev33.satoken.reactor.filter.SaReactorFilter;
import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.util.SaTokenAdminUtil;
import com.nflg.mobilebroken.common.util.SaTokenAppUtil; import com.nflg.mobilebroken.common.util.SaTokenAppUtil;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -21,19 +21,18 @@ public class SaTokenConfigure {
public SaReactorFilter getSaReactorFilter() { public SaReactorFilter getSaReactorFilter() {
return new SaReactorFilter() return new SaReactorFilter()
// 拦截地址 // 拦截地址
.addInclude("/**") /* 拦截用户端 */ .addInclude("/**") /* 拦截所有 */
// 开放地址 // 开放地址
//.addExclude("/favicon.ico") .addExclude("/auth/**") /* 排除授权接口 */
// 鉴权方法每次访问进入 // 鉴权方法每次访问进入
.setAuth(obj -> { .setAuth(obj -> {
// 登录校验 -- 拦截所有路由并排除/user/doLogin 用于开放登录
SaRouter.match("/app/**", r -> SaTokenAppUtil.checkLogin()); SaRouter.match("/app/**", r -> SaTokenAppUtil.checkLogin());
SaRouter.match("/admin/**", r -> { SaRouter.match("/admin/**", r -> {
VUtils.trueThrow(!StpUtil.isLogin()).throwMessage(STATE.LoginError,"请登录"); VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError, STATE.LoginError.getType());
ServerWebExchange exchange = SaReactorSyncHolder.getContext(); ServerWebExchange exchange = SaReactorSyncHolder.getContext();
String requestUrl = exchange.getRequest().getPath().value(); String requestUrl = exchange.getRequest().getPath().value();
log.debug("当前访问地址:"+requestUrl); log.debug("当前访问地址:"+requestUrl);
VUtils.trueThrow(SaTokenAppUtil.hasPermission(requestUrl)).throwMessage(STATE.PermissionDenied,"无权限访问"); VUtils.trueThrow(SaTokenAdminUtil.hasPermission(requestUrl)).throwMessage(STATE.PermissionDenied, "无权限访问");
}); });
}) })
// 异常处理方法每次setAuth函数出现异常时进入 // 异常处理方法每次setAuth函数出现异常时进入

View File

@ -208,6 +208,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
public PageData<AppUserForAdminVO> searchAppUserForAdmin(SearchAppUserForAdminRequest request) { public PageData<AppUserForAdminVO> searchAppUserForAdmin(SearchAppUserForAdminRequest request) {
IPage<AppUser> page = lambdaQuery() IPage<AppUser> page = lambdaQuery()
.eq(AppUser::getIsPrimary, true) .eq(AppUser::getIsPrimary, true)
.eq(Objects.nonNull(request.getUserState()), AppUser::getState, request.getUserState())
.like(StrUtil.isNotBlank(request.getLoginName()), AppUser::getLoginName, request.getLoginName()) .like(StrUtil.isNotBlank(request.getLoginName()), AppUser::getLoginName, request.getLoginName())
.like(StrUtil.isNotBlank(request.getName()), AppUser::getName, request.getName()) .like(StrUtil.isNotBlank(request.getName()), AppUser::getName, request.getName())
.page(new Page<>(request.getPage(), request.getPageSize())); .page(new Page<>(request.getPage(), request.getPageSize()));

View File

@ -3,7 +3,7 @@
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AppUserMapper"> <mapper namespace="com.nflg.mobilebroken.repository.mapper.AppUserMapper">
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.AppUserVO"> <select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.AppUserVO">
SELECT u.id,c.agency_company_name AS 'companyName',u.`name`,u.email,u.avatar,a.`name` AS 'areaName',u.`enable`,uc.`name` AS 'createBy',u.create_time AS 'createTime',uu.`name` AS 'updateBy',u.update_time AS 'updateTime',u.last_login_time AS 'lastLoginTime',u.expire_time AS 'expireTime',u.is_primary AS 'isPrimary',IF(u.expire_time>now(),1,2) AS 'state' SELECT u.id,c.agency_company_name AS 'companyName',u.`name`,u.email,u.avatar,a.`name` AS 'areaName',u.`state` AS 'userState',uc.`name` AS 'createBy',u.create_time AS 'createTime',uu.`name` AS 'updateBy',u.update_time AS 'updateTime',u.last_login_time AS 'lastLoginTime',u.expire_time AS 'expireTime',u.is_primary AS 'isPrimary',IF(u.expire_time>now(),1,2) AS 'state'
FROM app_user u FROM app_user u
INNER JOIN t_base_customer c ON u.company_id=c.id INNER JOIN t_base_customer c ON u.company_id=c.id
INNER JOIN app_area a ON u.area_id=a.id INNER JOIN app_area a ON u.area_id=a.id
@ -14,8 +14,8 @@
#{companyId} #{companyId}
</foreach> </foreach>
<where> <where>
<if test="request.enabled != null"> <if test="request.state != null">
AND u.enabled = #{request.enabled} AND u.state = #{request.state}
</if> </if>
<if test="request.key != null and request.key != ''"> <if test="request.key != null and request.key != ''">
AND AND
@ -27,7 +27,7 @@
</if> </if>
</where> </where>
UNION UNION
SELECT u.id,c.agency_company_name AS 'companyName',u.user_name AS 'name',u.user_email AS 'email',u.user_avatar AS 'avatar',a.`name` AS 'areaName',false AS `enable`,uc.`name` AS 'createBy',u.create_time AS 'createTime',null AS 'updateBy',null AS 'updateTime',null AS 'lastLoginTime',null AS 'expireTime',false AS 'isPrimary',0 AS 'state' SELECT u.id,c.agency_company_name AS 'companyName',u.user_name AS 'name',u.user_email AS 'email',u.user_avatar AS 'avatar',a.`name` AS 'areaName',0 AS 'userState',uc.`name` AS 'createBy',u.create_time AS 'createTime',null AS 'updateBy',null AS 'updateTime',null AS 'lastLoginTime',null AS 'expireTime',false AS 'isPrimary',0 AS 'state'
FROM app_user_applyfor u FROM app_user_applyfor u
INNER JOIN t_base_customer c ON u.company_id=c.id INNER JOIN t_base_customer c ON u.company_id=c.id
INNER JOIN app_area a ON u.area_id=a.id INNER JOIN app_area a ON u.area_id=a.id
@ -48,7 +48,7 @@
</select> </select>
<select id="searchByCompany" parameterType="com.nflg.mobilebroken.common.pojo.request.UserSearchRequest" resultType="com.nflg.mobilebroken.common.pojo.vo.AppUserVO"> <select id="searchByCompany" parameterType="com.nflg.mobilebroken.common.pojo.request.UserSearchRequest" resultType="com.nflg.mobilebroken.common.pojo.vo.AppUserVO">
SELECT u.id,u.phone,u.state AS 'userState',u.title_id AS 'titleId',u.area_id AS 'areaId',u.company_id AS 'companyId',p.position_name AS 'title',u.expire_time AS 'expireTime',c.agency_company_name AS 'companyName',u.login_name AS 'loginName',u.`name`,u.email,u.avatar,a.`name` AS 'areaName',u.`enable`,uc.`name` AS 'createBy',u.create_time AS 'createTime',uu.`name` AS 'updateBy',u.update_time AS 'updateTime',u.last_login_time AS 'lastLoginTime',u.expire_time AS 'expireTime',u.is_primary AS 'isPrimary',IF(u.expire_time>now(),1,2) AS 'state' SELECT u.id,u.phone,u.state AS 'userState',u.title_id AS 'titleId',u.area_id AS 'areaId',u.company_id AS 'companyId',p.position_name AS 'title',u.expire_time AS 'expireTime',c.agency_company_name AS 'companyName',u.login_name AS 'loginName',u.`name`,u.email,u.avatar,a.`name` AS 'areaName',uc.`name` AS 'createBy',u.create_time AS 'createTime',uu.`name` AS 'updateBy',u.update_time AS 'updateTime',u.last_login_time AS 'lastLoginTime',u.expire_time AS 'expireTime',u.is_primary AS 'isPrimary',IF(u.expire_time>now(),1,2) AS 'state'
FROM app_user u FROM app_user u
INNER JOIN t_base_customer c ON u.company_id=c.id INNER JOIN t_base_customer c ON u.company_id=c.id
INNER JOIN app_area a ON u.area_id=a.id INNER JOIN app_area a ON u.area_id=a.id
@ -57,8 +57,8 @@
LEFT JOIN t_base_position p ON u.title_id=p.id LEFT JOIN t_base_position p ON u.title_id=p.id
WHERE u.is_primary=false AND u.company_id=#{companyId} WHERE u.is_primary=false AND u.company_id=#{companyId}
<where> <where>
<if test="enabled != null"> <if test="state != null">
AND u.enabled = #{enabled} AND u.state = #{state}
</if> </if>
<if test="key != null and key != ''"> <if test="key != null and key != ''">
AND AND
@ -70,7 +70,7 @@
</if> </if>
</where> </where>
UNION UNION
SELECT u.id,u.user_phone AS 'phone',0 AS 'userState',u.title_id AS 'titleId',u.area_id AS 'areaId',u.company_id AS 'companyId',p.position_name AS 'title',null AS 'expireTime',c.agency_company_name AS 'companyName',u.user_email AS 'loginName',u.user_name AS 'name',u.user_email AS 'email',u.user_avatar AS 'avatar',a.`name` AS 'areaName',false AS `enable`,uc.`name` AS 'createBy',u.create_time AS 'createTime',null AS 'updateBy',null AS 'updateTime',null AS 'lastLoginTime',null AS 'expireTime',false AS 'isPrimary',0 AS 'state' SELECT u.id,u.user_phone AS 'phone',0 AS 'userState',u.title_id AS 'titleId',u.area_id AS 'areaId',u.company_id AS 'companyId',p.position_name AS 'title',null AS 'expireTime',c.agency_company_name AS 'companyName',u.user_email AS 'loginName',u.user_name AS 'name',u.user_email AS 'email',u.user_avatar AS 'avatar',a.`name` AS 'areaName',uc.`name` AS 'createBy',u.create_time AS 'createTime',null AS 'updateBy',null AS 'updateTime',null AS 'lastLoginTime',null AS 'expireTime',false AS 'isPrimary',0 AS 'state'
FROM app_user_applyfor u FROM app_user_applyfor u
INNER JOIN t_base_customer c ON u.company_id=c.id INNER JOIN t_base_customer c ON u.company_id=c.id
INNER JOIN app_area a ON u.area_id=a.id INNER JOIN app_area a ON u.area_id=a.id

View File

@ -0,0 +1,25 @@
package com.nflg.mobilebroken.starter.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 允许所有路径
.allowedOrigins("*") // 允许所有来源
.allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的HTTP方法
.allowedHeaders("*") // 允许所有请求头
.allowCredentials(true) // 允许携带凭证如cookies
.maxAge(3600); // 预检请求的缓存时间
}
};
}
}