Commit 85014fff by 杨伟程
parents 55ae6b3c b1bbc90d
Showing with 785 additions and 145 deletions
package com.makeit.controller.config;
import com.makeit.config.BizCondition;
import com.makeit.config.swagger.SwaggerModuleConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.Arrays;
/**
* swagger 配置类,访问地址:http://localhost:8080/swagger-ui.html
* Knife4j 访问地址:http://localhost:8080/doc.html
*
* @author yaohy
*/
@Configuration
@Conditional(BizCondition.class)
public class SwaggerFixtureConfig {
@Bean
public SwaggerModuleConfig fixtureModule() {
SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.controller"));
config.setModuleName("saas管理");
return config;
}
@Bean
public Docket fixtureApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("01-saas管理");
ApiSelectorBuilder builder = docket.select();
//api过滤
builder = builder.apis(
RequestHandlerSelectors.basePackage("com.makeit.controller.saas")
);
return builder.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("IOT文档")
.description("服务端接口文档")
.version("1.0.1")
.build();
}
}
//TODO ywc 放到各自的模块里
\ No newline at end of file
......@@ -4,7 +4,7 @@ import com.makeit.common.dto.LoginDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.service.saas.SaasUserService;
import com.makeit.utils.user.UserLoginVO;
import com.makeit.utils.user.SaasUserLoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,7 +23,7 @@ public class SaasLoginController {
@ApiOperation("登录")
@PostMapping("login")
public ApiResponseEntity<UserLoginVO> login(@RequestBody LoginDTO loginDTO) {
public ApiResponseEntity<SaasUserLoginVO> login(@RequestBody LoginDTO loginDTO) {
return ApiResponseUtils.success(saasUserService.login(loginDTO));
}
......
package com.makeit.controller.saas;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.saas.SaasRoleDTOVO;
import com.makeit.module.admin.saas.PlatRoleMenuDTO;
import com.makeit.module.admin.saas.PlatUserRoleDTO;
import com.makeit.service.saas.SaasRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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.List;
/**
* <p>
* saas端角色 前端控制器
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Api(tags = "saas端-角色")
@RestController
@RequestMapping("/saas/role")
public class SaasRoleController {
@Autowired
private SaasRoleService saasRoleService;
@Action(module = "saas端-角色", name = "列表", code = "saas:role:list")
@ApiOperation("列表")
@PostMapping("list")
public ApiResponseEntity<List<SaasRoleDTOVO>> list(@RequestBody SaasRoleDTOVO dto){
return ApiResponseUtils.success(saasRoleService.list(dto));
}
@ApiOperation("列表(AuthIgnore)")
@PostMapping("listAuthIgnore")
public ApiResponseEntity<List<SaasRoleDTOVO>> listAuthIgnore(@RequestBody SaasRoleDTOVO dto){
return ApiResponseUtils.success(saasRoleService.list(dto));
}
@Action(module = "saas端-角色", name = "新增", code = "saas:role:add")
@ApiOperation("新增")
@PostMapping("add")
public ApiResponseEntity<?> add(@Validated @RequestBody SaasRoleDTOVO dto){
saasRoleService.add(dto);
return ApiResponseUtils.success();
}
@Action(module = "saas端-角色", name = "编辑", code = "saas:role:edit")
@ApiOperation("编辑")
@PostMapping("edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SaasRoleDTOVO dto){
saasRoleService.edit(dto);
return ApiResponseUtils.success();
}
@Action(module = "saas端-角色", name = "详情", code = "saas:role:view")
@ApiOperation("详情")
@PostMapping("view")
public ApiResponseEntity<SaasRoleDTOVO> view(@RequestBody BaseIdDTO dto){
return ApiResponseUtils.success(saasRoleService.view(dto.getId()));
}
@Action(module = "saas端-角色", name = "删除", code = "saas:role:del")
@ApiOperation("删除")
@PostMapping("del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO dto){
saasRoleService.del(dto.getId());
return ApiResponseUtils.success();
}
@Action(module = "saas端-角色", name = "改变状态", code = "saas:role:changeStatus")
@ApiOperation("改变状态")
@PostMapping("changeStatus")
public ApiResponseEntity<?> changeStatus(@RequestBody StatusDTO dto){
saasRoleService.changeStatus(dto);
return ApiResponseUtils.success();
}
@Action(module = "saas端-角色", name = "分配用户", code = "saas:role:assignUserList")
@ApiOperation("分配用户")
@PostMapping("assignUserList")
public ApiResponseEntity<?> assignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList){//参数要不要是一个对象里 有一个数组
saasRoleService.assignUserList(userRoleDTOList);
return ApiResponseUtils.success();
}
@Action(module = "saas端-角色", name = "删除分配用户", code = "saas:role:removeAssignUserList")
@ApiOperation("删除分配用户")
@PostMapping("removeAssignUserList")
public ApiResponseEntity<?> removeAssignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList){
saasRoleService.removeAssignUserList(userRoleDTOList);
return ApiResponseUtils.success();
}
@Action(module = "saas端-角色", name = "分配菜单", code = "saas:role:assignMenuList")
@ApiOperation("分配菜单")
@PostMapping("assignMenuList")
public ApiResponseEntity<?> assignMenuList(@RequestBody PlatRoleMenuDTO roleMenuDTO){
saasRoleService.assignMenuList(roleMenuDTO);
return ApiResponseUtils.success();
}
}
package com.makeit.controller.saas;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.saas.SaasUserDTOVO;
import com.makeit.module.admin.saas.PlatUserQueryDTO;
import com.makeit.service.saas.SaasUserService;
import com.makeit.utils.user.SaasUserLoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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.List;
/**
* <p>
* SAAS端用户 前端控制器
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Api(tags = "SAAS端-用户")
@RestController
@RequestMapping("/saas/user")
public class SaasUserController {
@Autowired
private SaasUserService saasUserService;
@Action(module = "SAAS端-用户", name = "分页列表", code = "saas:user:page")
@ApiOperation("分页列表")
@PostMapping("page")
public ApiResponseEntity<PageVO<SaasUserDTOVO>> page(@RequestBody PageReqDTO<PlatUserQueryDTO> page){
return ApiResponseUtils.success(saasUserService.page(page));
}
@ApiOperation("分页列表")
@PostMapping("pageAuthIgnore")
public ApiResponseEntity<PageVO<SaasUserDTOVO>> pageAuthIgnore(@RequestBody PageReqDTO<PlatUserQueryDTO> page){
return ApiResponseUtils.success(saasUserService.page(page));
}
//@Action(module = "SAAS端-用户", name = "分页列表-排除超级管理员", code = "plat:user:pageNotSuperAdmin")
@ApiOperation("分页列表-排除超级管理员")
@PostMapping("pageNotSuperAdmin")
public ApiResponseEntity<PageVO<SaasUserDTOVO>> pageNotSuperAdmin(@RequestBody PageReqDTO<PlatUserQueryDTO> page){
return ApiResponseUtils.success(saasUserService.pageNoSuperAdmin(page));
}
@ApiOperation("分页列表(AuthIgnore)")
@PostMapping("listAuthIgnore")
public ApiResponseEntity<List<SaasUserDTOVO>> listAuthIgnore(@RequestBody PlatUserQueryDTO dto){
return ApiResponseUtils.success(saasUserService.list(dto));
}
@ApiOperation("分页列表-排除超级管理员(AuthIgnore)")
@PostMapping("listNotSuperAdminAuthIgnore")
public ApiResponseEntity<List<SaasUserDTOVO>> listNotSuperAdminAuthIgnore(@RequestBody PlatUserQueryDTO dto){
return ApiResponseUtils.success(saasUserService.listNoSuperAdmin(dto));
}
@Action(module = "SAAS端-用户", name = "新增", code = "saas:user:add")
@ApiOperation("新增")
@PostMapping("add")
public ApiResponseEntity<?> add(@Validated @RequestBody SaasUserDTOVO dto){
saasUserService.add(dto);
return ApiResponseUtils.success();
}
@Action(module = "SAAS端-用户", name = "编辑", code = "saas:user:edit")
@ApiOperation("编辑")
@PostMapping("edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SaasUserDTOVO dto){
saasUserService.edit(dto);
return ApiResponseUtils.success();
}
@Action(module = "SAAS端-用户", name = "改变密码", code = "saas:user:changePassword")
@ApiOperation("改变密码")
@PostMapping("changePassword")
public ApiResponseEntity<?> changePassword(@RequestBody SaasUserDTOVO dto){
saasUserService.changePassword(dto);
return ApiResponseUtils.success();
}
@Action(module = "SAAS端-用户", name = "详情", code = "saas:user:view")
@ApiOperation("详情")
@PostMapping("view")
public ApiResponseEntity<SaasUserDTOVO> view(@RequestBody BaseIdDTO dto){;
return ApiResponseUtils.success(saasUserService.view(dto.getId()));
}
@Action(module = "SAAS端-用户", name = "删除", code = "saas:user:del")
@ApiOperation("删除")
@PostMapping("del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO dto){
saasUserService.del(dto.getId());
return ApiResponseUtils.success();
}
@Action(module = "SAAS端-用户", name = "改变状态", code = "saas:user:changeStatus")
@ApiOperation("改变状态")
@PostMapping("changeStatus")
public ApiResponseEntity<?> changeStatus(@RequestBody StatusDTO dto){
saasUserService.changeStatus(dto);
return ApiResponseUtils.success();
}
@ApiOperation("获取当前登录用户的角色菜单")
@PostMapping("getRoleMenu")
public ApiResponseEntity<SaasUserLoginVO> getRoleAndMenuList(){
return ApiResponseUtils.success(saasUserService.getRoleAndMenuList());
}
@ApiOperation("获取当前登录用户的用户信息")
@PostMapping("getUserVO")
public ApiResponseEntity<SaasUserLoginVO> getUserInfo(){
return ApiResponseUtils.success(saasUserService.getUserVO());
}
}
......@@ -10,16 +10,16 @@ import lombok.experimental.FieldNameConstants;
import java.io.Serializable;
@ApiModel("厂别dto")
@ApiModel("租户dto")
@FieldNameConstants
@Data
@AllArgsConstructor
@NoArgsConstructor
//@Builder
public class BaseTenantIdDTO extends BaseIdDTO implements Serializable {
public class BaseTenantDTO extends BaseIdDTO implements Serializable {
@ExcelIgnore
@ApiModelProperty(value = "厂别id", required = true)
@ApiModelProperty(value = "租户id", required = true)
private String tenantId;
}
......@@ -37,7 +37,7 @@ public class BaseEntity implements Serializable {
@ApiModelProperty(value = "创建时间", required = false)
@TableField(value = "create_date", fill = FieldFill.INSERT, typeHandler = LocalDateTimeTypeHandler.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
private LocalDateTime createDate;
/**
* 更新时间
......@@ -45,7 +45,7 @@ public class BaseEntity implements Serializable {
@ApiModelProperty(value = "更新时间", required = false)
@TableField(value = "update_date", fill = FieldFill.INSERT_UPDATE, typeHandler = LocalDateTimeTypeHandler.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updatedAt;
private LocalDateTime updateDate;
@TableLogic
......
package com.makeit.config;
import com.makeit.global.inteceptor.RequestIdInterceptor;
import com.makeit.global.inteceptor.SysAuthenticationInterceptor;
import com.makeit.global.inteceptor.SysAuthorizationInterceptor;
import com.makeit.global.inteceptor.SaasAuthenticationInterceptor;
import com.makeit.global.inteceptor.SaasAuthorizationInterceptor;
import com.makeit.global.inteceptor.TntAuthenticationInterceptor;
import com.makeit.global.inteceptor.TntAuthorizationInterceptor;
import com.makeit.utils.old.StringUtils;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,16 +25,21 @@ public class WebInterceptorConfig implements WebMvcConfigurer {
private RequestIdInterceptor requestIdInterceptor;
@Autowired
private SysAuthenticationInterceptor sysAuthenticationInterceptor;
private TntAuthenticationInterceptor tntAuthenticationInterceptor;
@Autowired
private TntAuthorizationInterceptor tntAuthorizationInterceptor;
@Autowired
private SysAuthorizationInterceptor sysAuthorizationInterceptor;
private SaasAuthenticationInterceptor saasAuthenticationInterceptor;
@Autowired
private SaasAuthorizationInterceptor saasAuthorizationInterceptor;
private String authenticationPlatPath;
private String authenticationPlatPathIgnore;
private String authorizationPlatPath;
private String authorizationPlatPathIgnore;
private String authenticationSaasPath;
private String authenticationSaasPathIgnore;
private String authorizationSaasPath;
private String authorizationSaasPathIgnore;
private String authenticationTntPath;
......@@ -44,27 +51,29 @@ public class WebInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//请求日志
registry.addInterceptor(requestIdInterceptor).addPathPatterns("/**");
InterceptorRegistration authenticationTnt = registry.addInterceptor(sysAuthenticationInterceptor);
//tnt 认证
addInterceptor(registry.addInterceptor(tntAuthenticationInterceptor), authenticationTntPath, authenticationTntPathIgnore);
//tnt 授权
addInterceptor(registry.addInterceptor(tntAuthorizationInterceptor), authorizationTntPath, authorizationTntPathIgnore);
//saas 认证
addInterceptor(registry.addInterceptor(saasAuthenticationInterceptor), authenticationSaasPath, authenticationSaasPathIgnore);
//saas 授权
addInterceptor(registry.addInterceptor(saasAuthorizationInterceptor), authorizationSaasPath, authorizationSaasPathIgnore);
if (StringUtils.isNotBlank(authenticationTntPath)) {
authenticationTnt.addPathPatterns(Arrays.asList(authenticationTntPath.split(",")));
}
if (StringUtils.isNotBlank(authenticationTntPathIgnore)) {
authenticationTnt.excludePathPatterns(Arrays.asList(authenticationTntPathIgnore.split(",")));
}
}
InterceptorRegistration authorizationTnt = registry.addInterceptor(sysAuthorizationInterceptor);
private void addInterceptor(InterceptorRegistration registry, String authenticationPath, String authenticationPathIgnore) {
InterceptorRegistration authenticationTnt = registry;
if (StringUtils.isNotBlank(authorizationTntPath)) {
authorizationTnt.addPathPatterns(Arrays.asList(authorizationTntPath.split(",")));
if (StringUtils.isNotBlank(authenticationPath)) {
authenticationTnt.addPathPatterns(Arrays.asList(authenticationPath.split(",")));
}
if (StringUtils.isNotBlank(authorizationTntPathIgnore)) {
authorizationTnt.excludePathPatterns(Arrays.asList(authorizationTntPathIgnore.split(",")));
if (StringUtils.isNotBlank(authenticationPathIgnore)) {
authenticationTnt.excludePathPatterns(Arrays.asList(authenticationPathIgnore.split(",")));
}
}
......
......@@ -19,12 +19,12 @@ public class LocalDateTimeObjectHandler implements MetaObjectHandlerInternal{
@Override
public void insertFill(MetaObject metaObject, MetaObjectHandler handler) {
handler.setFieldValByName(BaseEntity.Fields.createdAt, LocalDateTime.now(), metaObject);
handler.setFieldValByName(BaseEntity.Fields.updatedAt, LocalDateTime.now(), metaObject);
handler.setFieldValByName(BaseEntity.Fields.createDate, LocalDateTime.now(), metaObject);
handler.setFieldValByName(BaseEntity.Fields.updateDate, LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject, MetaObjectHandler handler) {
handler.setFieldValByName(BaseEntity.Fields.updatedAt, LocalDateTime.now(), metaObject);
handler.setFieldValByName(BaseEntity.Fields.updateDate, LocalDateTime.now(), metaObject);
}
}
......@@ -4,8 +4,9 @@ public class HeaderConst {
public static final String TENANT_ID = Const.TENANT_ID;
public static final String PLATFORM_TOKEN = "platformToken";
//todo 2023年8月29日 不区分呢
// public static final String PLATFORM_TOKEN = "platformToken";
public static final String PLATFORM_TOKEN = "token";
public static final String TOKEN = "token";
public static final String WECHAT_TOKEN = "wechatToken";
......
......@@ -12,6 +12,10 @@ public class InterceptorOrderConst {
public static final int REQUEST_ID_INTERCEPTOR = 105;//这里用到用户信息
public static final int PLAT_AUTHENTICATION_INTERCEPTOR = 120;
public static final int PLAT_AUTHORIZATION_INTERCEPTOR = 130;
public static final int TNT_AUTHENTICATION_INTERCEPTOR = 140;
public static final int TNT_AUTHORIZATION_INTERCEPTOR = 150;
......
......@@ -48,12 +48,16 @@ public class RedisConst {
//public static final String PLATFORM_TOKEN_PREFIX = "plat:token:";
//public static final String PLATFORM_TOKEN_ROLE_MENU_PREFIX = "plat:role:menu:token:";//TODO ywc 这里可能有大key问题
//todo 为啥要区分?
public static final String TOKEN_PREFIX = "token:";
public static final String TOKEN_ROLE_MENU_PREFIX = "role:menu:token:";//TODO ywc 这里可能有大key问题 改成list存?
public static final String WECHAT_TOKEN_PREFIX = "wechat:token:";
public static final String WECHAT_TOKEN_ROLE_MENU_PREFIX = "wechat:role:menu:token:";//TODO ywc 这里可能有大key问题
public static final String PLATFORM_TOKEN_PREFIX = "plat:token:";
public static final String PLATFORM_TOKEN_ROLE_MENU_PREFIX = "plat:role:menu:token:";
//public static final String CUS_TOKEN_PREFIX = "cus:token:";
public static final int PLATFORM_EXPIRE_MINUTES = 120;
......@@ -86,8 +90,7 @@ public class RedisConst {
public static final String TOPIC_TNT_CONFIG_REFRESH = "topic:tnt:config:refresh";
public static final String TOPIC_I18N_DIC_REFRESH = "topic:i18n:dict:refresh";
public static final String PLATFORM_TOKEN_PREFIX = "plat:token:";
public static final String PLATFORM_TOKEN_ROLE_MENU_PREFIX = "plat:role:menu:token:";
......
package com.makeit.global.inteceptor;
import com.makeit.enums.order.InterceptorOrderConst;
import com.makeit.global.annotation.AuthIgnore;
import com.makeit.utils.user.TokenUtil;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Order(InterceptorOrderConst.PLAT_AUTHENTICATION_INTERCEPTOR)
@Component
public class SaasAuthenticationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
AuthIgnore annotation;
if (handler instanceof HandlerMethod) {
annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnore.class);
} else {
return true;
}
//如果有@IgnoreAuth注解,则不验证token
if (annotation != null) {
return true;
}
TokenUtil.platGetToken();
TokenUtil.platRefreshToken();
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
package com.makeit.global.inteceptor;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.id.IdConst;
import com.makeit.enums.order.InterceptorOrderConst;
import com.makeit.exception.BusinessException;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.utils.user.PlatUserUtil;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashSet;
import java.util.Set;
@Order(InterceptorOrderConst.PLAT_AUTHORIZATION_INTERCEPTOR)
@Component
public class SaasAuthorizationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Action annotation;
if (handler instanceof HandlerMethod) {
annotation = ((HandlerMethod) handler).getMethodAnnotation(Action.class);
} else {
return true;
}
//如果没有@PermissionInfo注解,则不验证
if (annotation == null) {
return true;
}
SaasUserRoleMenuRedisVO userLoginVO = PlatUserUtil.getPlatUserRoleMenu();
if (userLoginVO == null) {
return true;
}
if (IdConst.SUPER_ADMIN_ID.equals(userLoginVO.getId())) {
return true;
}
Set<String> codeSet = new HashSet<>(userLoginVO.getButtonCodeList());
for (String e : annotation.code()) {
if (codeSet.contains(e)) {
return true;
}
}
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_NO_PERMISSION);
//return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
......@@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletResponse;
@Order(InterceptorOrderConst.TNT_AUTHENTICATION_INTERCEPTOR)
@Component
public class SysAuthenticationInterceptor implements HandlerInterceptor {
public class TntAuthenticationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
......
......@@ -20,7 +20,7 @@ import java.util.Set;
@Order(InterceptorOrderConst.TNT_AUTHORIZATION_INTERCEPTOR)
@Component
public class SysAuthorizationInterceptor implements HandlerInterceptor {
public class TntAuthorizationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
......
package com.makeit.module.admin.dto;
import com.makeit.common.dto.BaseTenantIdDTO;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("部门 查询")
@Data
public class SysDeptQueryDTO extends BaseTenantIdDTO {
public class SysDeptQueryDTO extends BaseTenantDTO {
@ApiModelProperty(value = "名称")
private String name;
......
package com.makeit.module.admin.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.dto.BaseTenantIdDTO;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -15,7 +15,7 @@ import java.util.List;
@ApiModel("角色 列表 新增 编辑 详情")
@Data
public class SysRoleDTOVO extends BaseTenantIdDTO implements Serializable {
public class SysRoleDTOVO extends BaseTenantDTO implements Serializable {
@NotBlank(message = "名称不能为空")
@Size(max = 64, message = "名称最长为64字符")
......
package com.makeit.module.admin.dto;
import com.makeit.common.dto.BaseTenantIdDTO;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -11,7 +11,7 @@ import java.util.List;
@ApiModel("角色分配菜单")
@Data
public class SysRoleMenuDTO extends BaseTenantIdDTO implements Serializable {
public class SysRoleMenuDTO extends BaseTenantDTO implements Serializable {
// @ApiModelProperty(value = "菜单id")
// private String menuId;
......
package com.makeit.module.admin.dto;
import com.makeit.common.dto.BaseTenantIdDTO;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -9,7 +9,7 @@ import java.io.Serializable;
@ApiModel("角色分配用户")
@Data
public class SysUserRoleDTO extends BaseTenantIdDTO implements Serializable {
public class SysUserRoleDTO extends BaseTenantDTO implements Serializable {
@ApiModelProperty(value = "用户id")
private String userId;
......
......@@ -67,7 +67,7 @@ public class PlatMenuDTOVO extends BaseIdDTO implements Serializable {
*/
@ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
private LocalDateTime createDate;
@TableField(exist = false)
@ApiModelProperty(value = "子集")
......
......@@ -12,9 +12,9 @@ import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel("平台端角色 列表 新增 编辑 详情")
@ApiModel("SAAS端角色 列表 新增 编辑 详情")
@Data
public class PlatRoleDTOVO extends BaseIdDTO implements Serializable {
public class SaasRoleDTOVO extends BaseIdDTO implements Serializable {
@NotBlank(message = "名称不能为空")
@Size(max = 64, message = "名称最长为64字符")
......@@ -47,7 +47,7 @@ public class PlatRoleDTOVO extends BaseIdDTO implements Serializable {
*/
@ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
private LocalDateTime createDate;
@ApiModelProperty(value = "关键词 查询用")
private String keyword;
......
......@@ -17,7 +17,7 @@ import java.util.List;
@ApiModel("平台端用户 新增 编辑 详情")
@Data
public class PlatUserDTOVO extends BaseIdDTO implements Serializable {
public class SaasUserDTOVO extends BaseIdDTO implements Serializable {
// @ApiModelProperty(value = "用户名")
......@@ -60,9 +60,9 @@ public class PlatUserDTOVO extends BaseIdDTO implements Serializable {
*/
@ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
private LocalDateTime createDate;
@TableField(exist = false)
@ApiModelProperty(value = "角色集合")
private List<PlatRoleDTOVO> roleList;
private List<SaasRoleDTOVO> roleList;
}
......@@ -7,7 +7,7 @@ import java.io.Serializable;
import java.util.List;
@Data
public class UserRoleMenuRedisVO implements Serializable {
public class SaasUserRoleMenuRedisVO implements Serializable {
@ApiModelProperty("id")
private String id;
......
......@@ -64,7 +64,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
.eq(StringUtils.isNotBlank(dto.getTag()), SysDept::getTag, dto.getTag())
.orderByAsc(SysDept::getTag)
.orderByAsc(SysDept::getCreatedAt);
.orderByAsc(SysDept::getCreateDate);
return lambdaQueryWrapper;
}
......
......@@ -71,7 +71,7 @@ public class SysFactoryServiceImpl extends ServiceImpl<SysFactoryMapper, SysFact
LambdaQueryWrapper<SysFactory> lambdaQueryWrapper = new QueryWrapper<SysFactory>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SysFactory::getName, dto.getName());
lambdaQueryWrapper.orderByDesc(SysFactory::getCreatedAt);
lambdaQueryWrapper.orderByDesc(SysFactory::getCreateDate);
return lambdaQueryWrapper;
}
......@@ -157,7 +157,7 @@ public class SysFactoryServiceImpl extends ServiceImpl<SysFactoryMapper, SysFact
if (SysUserUtil.isSuper()) {
List<SysFactory> factoryList = list(new QueryWrapper<SysFactory>().lambda()
.orderByAsc(SysFactory::getCreatedAt)
.orderByAsc(SysFactory::getCreateDate)
);
return factoryList;
}
......@@ -171,7 +171,7 @@ public class SysFactoryServiceImpl extends ServiceImpl<SysFactoryMapper, SysFact
List<SysFactory> factoryList = list(new QueryWrapper<SysFactory>().lambda()
.in(SysFactory::getId, factoryIdList)
.orderByAsc(SysFactory::getCreatedAt)
.orderByAsc(SysFactory::getCreateDate)
);
return factoryList;
......@@ -200,7 +200,7 @@ public class SysFactoryServiceImpl extends ServiceImpl<SysFactoryMapper, SysFact
userIdList = new ArrayList<>(userIdList);
userIdList.add(-1 + "");
List<SysFactory> tenantList = list(new QueryWrapper<SysFactory>().lambda()
.orderByAsc(SysFactory::getCreatedAt)
.orderByAsc(SysFactory::getCreateDate)
);
return BeanDtoVoUtils.listVo(tenantList, SysFactoryDTOVO.class);
}
......
......@@ -68,7 +68,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
.in(StringUtils.isNotBlank(dto.getRoleId()), SysMenu::getId, menuIdList)
//.orderByAsc(TntMenu::getParentId)
.orderByAsc(SysMenu::getSort)
.orderByAsc(SysMenu::getCreatedAt)
.orderByAsc(SysMenu::getCreateBy)
);
return BeanDtoVoUtils.listVo(sysMenuList, SysMenuDTOVO.class);
......
......@@ -86,7 +86,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
.like(StringUtils.isNotBlank(dto.getKeyword()), SysRole::getName, dto.getKeyword());
})
.eq(StringUtils.isNotBlank(dto.getStatus()), SysRole::getStatus, dto.getStatus())
.orderByDesc(SysRole::getCreatedAt);
.orderByDesc(SysRole::getCreateDate);
menuFilter(dto, lambdaQueryWrapper);
......
......@@ -271,7 +271,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
List<SysMenu> menuList = sysMenuService.list(new QueryWrapper<SysMenu>().lambda()
.eq(SysMenu::getStatus, CommonEnum.YES.getValue())
.orderByAsc(SysMenu::getSort)
.orderByAsc(SysMenu::getCreatedAt)
.orderByAsc(SysMenu::getCreateDate)
);
return menuList;
......@@ -385,7 +385,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
.in(SysMenu::getId, menuIdList)
.eq(SysMenu::getStatus, CommonEnum.YES.getValue())
.orderByAsc(SysMenu::getSort)
.orderByAsc(SysMenu::getCreatedAt)
.orderByAsc(SysMenu::getCreateDate)
);
userLoginVO.setRoleList(BeanDtoVoUtils.listVo(roleList, SysRoleDTOVO.class));
......@@ -560,7 +560,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
roleIdList(lambdaQueryWrapper, dto);
lambdaQueryWrapper.orderByDesc(SysUser::getCreatedAt);
lambdaQueryWrapper.orderByDesc(SysUser::getCreateDate);
lambdaQueryWrapper.orderByDesc(SysUser::getId);
//TODO ywc 要不要改成全查出来 内存过滤
......
package com.makeit.module.system.dto;
import com.makeit.common.dto.BaseTenantIdDTO;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SysConfigCategoryDTOVO extends BaseTenantIdDTO {
public class SysConfigCategoryDTOVO extends BaseTenantDTO {
@ApiModelProperty("编码")
private String code;
......
......@@ -35,7 +35,7 @@ public class SysConfigCategoryServiceImpl extends ServiceImpl<SysConfigCategoryM
.like(StringUtils.isNotBlank(tntConfigCategory.getName()), SysConfigCategory::getName, tntConfigCategory.getName())
.like(StringUtils.isNotBlank(tntConfigCategory.getCode()), SysConfigCategory::getCode, tntConfigCategory.getCode())
.eq(SysConfigCategory::getTenantId, tntConfigCategory.getTenantId())
.orderByAsc(SysConfigCategory::getCreatedAt)
.orderByAsc(SysConfigCategory::getCreateDate)
);
return BeanDtoVoUtils.listVo(configCategoryList, SysConfigCategoryDTOVO.class);
}
......
......@@ -36,10 +36,10 @@ public class SysDictionaryCategoryServiceImpl extends ServiceImpl<SysDictionaryC
public List<SysDictionaryCategory> getEpDictionaryCategoryByList() {
List<SysDictionaryCategory> sysDictionaryCategoryList = list(new QueryWrapper<SysDictionaryCategory>().lambda()
/*.orderByAsc(PlatDictionaryCategory::getSort)*/.orderByAsc(SysDictionaryCategory::getCreatedAt));
/*.orderByAsc(PlatDictionaryCategory::getSort)*/.orderByAsc(SysDictionaryCategory::getCreateDate));
List<SysDictionary> sysDictionaryList = sysDictionaryService.list(new QueryWrapper<SysDictionary>().lambda()
.orderByAsc(SysDictionary::getSort).orderByAsc(SysDictionary::getCreatedAt));
.orderByAsc(SysDictionary::getSort).orderByAsc(SysDictionary::getCreateDate));
Map<String, List<SysDictionary>> sysDictionaryMap = sysDictionaryList.stream().collect(Collectors.groupingBy(item -> item.getCategoryId()));
for (SysDictionaryCategory sysDictionaryCategory : sysDictionaryCategoryList) {
......@@ -55,13 +55,13 @@ public class SysDictionaryCategoryServiceImpl extends ServiceImpl<SysDictionaryC
List<SysDictionaryCategory> sysDictionaryCategoryList = list(new QueryWrapper<SysDictionaryCategory>().lambda()
.like(SysDictionaryCategory::getCode, prefix)
.orderByAsc(SysDictionaryCategory::getCreatedAt));
.orderByAsc(SysDictionaryCategory::getCreateDate));
List<String> idList = StreamUtil.mapId(sysDictionaryCategoryList, SysDictionaryCategory::getId);
List<SysDictionary> sysDictionaryList = sysDictionaryService.list(new QueryWrapper<SysDictionary>().lambda()
.in(SysDictionary::getCategoryId, idList)
.orderByAsc(SysDictionary::getSort).orderByAsc(SysDictionary::getCreatedAt));
.orderByAsc(SysDictionary::getSort).orderByAsc(SysDictionary::getCreateDate));
Map<String, List<SysDictionary>> sysDictionaryMap = sysDictionaryList.stream().collect(Collectors.groupingBy(item -> item.getCategoryId()));
for (SysDictionaryCategory sysDictionaryCategory : sysDictionaryCategoryList) {
......@@ -124,7 +124,7 @@ public class SysDictionaryCategoryServiceImpl extends ServiceImpl<SysDictionaryC
public List<SysDictionaryCategory> list(SysDictionaryCategory sysDictionaryCategory) {
List<SysDictionaryCategory> configCategoryList = list(new QueryWrapper<SysDictionaryCategory>().lambda()
.like(StringUtils.isNotBlank(sysDictionaryCategory.getName()), SysDictionaryCategory::getName, sysDictionaryCategory.getName())
.orderByAsc(SysDictionaryCategory::getCreatedAt)
.orderByAsc(SysDictionaryCategory::getCreateDate)
);
return configCategoryList;
}
......
......@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.BaseTenantIdDTO;
import com.makeit.common.dto.BaseTenantDTO;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.global.aspect.tenant.TenantIdUtil;
......@@ -30,7 +30,7 @@ public class WrapperUtil {
return lambdaQueryWrapper;
}
public static <T extends BaseBusEntity> LambdaQueryWrapper<T> withTenantId(BaseTenantIdDTO baseFactoryDTO, Class<T> clazz) {
public static <T extends BaseBusEntity> LambdaQueryWrapper<T> withTenantId(BaseTenantDTO baseFactoryDTO, Class<T> clazz) {
LambdaQueryWrapper<T> lambdaQueryWrapper = new LambdaQueryWrapper<>(clazz);
lambdaQueryWrapper.eq(BaseBusEntity::getTenantId, baseFactoryDTO.getTenantId());
return lambdaQueryWrapper;
......
package com.makeit.utils.user;
import com.makeit.module.admin.saas.UserRoleMenuRedisVO;
import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
public class PlatUserUtil {
......@@ -15,12 +15,12 @@ public class PlatUserUtil {
return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), PlatUserVO.class);
}
public static UserLoginVO getUserVODetail() {
public static SaasUserLoginVO getUserVODetail() {
TokenUtil.platGetToken();
return TokenUtil.getPlatUserDetail();
}
public static UserRoleMenuRedisVO getPlatUserRoleMenu(){
public static SaasUserRoleMenuRedisVO getPlatUserRoleMenu(){
return TokenUtil.getPlatUserRoleMenu();
}
......
......@@ -2,7 +2,7 @@ package com.makeit.utils.user;
import com.makeit.module.admin.saas.PlatMenuDTOVO;
import com.makeit.module.admin.saas.PlatRoleDTOVO;
import com.makeit.module.admin.saas.SaasRoleDTOVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -10,7 +10,7 @@ import java.io.Serializable;
import java.util.List;
@Data
public class UserLoginVO implements Serializable {
public class SaasUserLoginVO implements Serializable {
@ApiModelProperty("id")
private String id;
......@@ -19,7 +19,7 @@ public class UserLoginVO implements Serializable {
private String account;
@ApiModelProperty("姓名")
private String name;
private String username;
// @ApiModelProperty("用户名")
// private String username;
......@@ -28,7 +28,7 @@ public class UserLoginVO implements Serializable {
private String token;
@ApiModelProperty("角色列表")
private List<PlatRoleDTOVO> roleList;
private List<SaasRoleDTOVO> roleList;
@ApiModelProperty("菜单树形列表")
private List<PlatMenuDTOVO> menuList;
......
......@@ -13,7 +13,7 @@ public class ThreadLocalUserUtil {
private static final ThreadLocal<String> THREAD_LOCAL_TNT_TOKEN = new BizThreadLocal<>();
private static final ThreadLocal<String> THREAD_LOCAL_WECHAT_TOKEN = new BizThreadLocal<>();
private static final ThreadLocal<UserLoginVO> THREAD_LOCAL_TNT_USER = new BizThreadLocal<>();
private static final ThreadLocal<SaasUserLoginVO> THREAD_LOCAL_TNT_USER = new BizThreadLocal<>();
private static final ThreadLocal<WechatUserInfo> THREAD_LOCAL_WECHAT_USER = new BizThreadLocal<>();
private static final ThreadLocal<SysUserRoleMenuRedisVO> THREAD_LOCAL_TNT_USER_ROLE_MENU = new BizThreadLocal<>();
......@@ -68,6 +68,11 @@ public class ThreadLocalUserUtil {
}
public static SaasUserLoginVO getSaasUser(){
SaasUserLoginVO saasUserDetail = TokenUtil.getSaasUserDetail();
return saasUserDetail;
}
public static WechatUserInfo getWechatUser() {
WechatUserInfo wechatUserInfo = THREAD_LOCAL_WECHAT_USER.get();
if (wechatUserInfo == null) {
......
......@@ -5,7 +5,7 @@ import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.HeaderConst;
import com.makeit.enums.redis.RedisConst;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.saas.UserRoleMenuRedisVO;
import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.utils.redis.RedisTemplateUtil;
import com.makeit.utils.redis.RedisUtil;
import com.makeit.utils.request.RequestUtil;
......@@ -37,10 +37,10 @@ public class TokenUtil {
return getToken(RedisConst.PLATFORM_TOKEN_PREFIX, RequestUtil.getHeader(HeaderConst.PLATFORM_TOKEN));
}
public static UserLoginVO getPlatUserDetail() {
public static SaasUserLoginVO getPlatUserDetail() {
String token = RequestUtil.getHeader(HeaderConst.PLATFORM_TOKEN);
if (StringUtils.isNotBlank(token)) {
UserLoginVO userLoginVO = RedisUtil.get(RedisConst.PLATFORM_TOKEN_PREFIX + token);
SaasUserLoginVO userLoginVO = RedisUtil.get(RedisConst.PLATFORM_TOKEN_PREFIX + token);
return userLoginVO;
}
return null;
......@@ -66,9 +66,9 @@ public class TokenUtil {
RedisTemplateUtil.expire(prefix + token, RedisConst.PLATFORM_EXPIRE_MINUTES, TimeUnit.MINUTES);
}
public static UserLoginVO getTntUserDetail(String token) {
public static SaasUserLoginVO getTntUserDetail(String token) {
if (StringUtils.isNotBlank(token)) {
UserLoginVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_PREFIX + token, UserLoginVO.class);
SaasUserLoginVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_PREFIX + token, SaasUserLoginVO.class);
return userLoginVO;
}
return null;
......@@ -217,6 +217,15 @@ public class TokenUtil {
return null;
}
public static SaasUserLoginVO getSaasUserDetail() {
String token = RequestUtil.getHeader(HeaderConst.PLATFORM_TOKEN);
if (StringUtils.isNotBlank(token)) {
SaasUserLoginVO userLoginVO = RedisTemplateUtil.get(RedisConst.PLATFORM_TOKEN_PREFIX + token, SaasUserLoginVO.class);
return userLoginVO;
}
return null;
}
public static void setMobileCode(String phone, String token, Integer t, int minutes) {
RedisTemplateUtil.set(RedisConst.TOKEN_MOBILE_CODE_PREFIX + ":" + phone + ":" + token, t, minutes);
......@@ -284,16 +293,27 @@ public class TokenUtil {
login(RedisConst.PLATFORM_TOKEN_ROLE_MENU_PREFIX, RequestUtil.getHeader(HeaderConst.PLATFORM_TOKEN), t);
}
public static UserRoleMenuRedisVO getPlatUserRoleMenu() {
public static SaasUserRoleMenuRedisVO getPlatUserRoleMenu() {
String token = RequestUtil.getHeader(HeaderConst.PLATFORM_TOKEN);
if (StringUtils.isNotBlank(token)) {
UserRoleMenuRedisVO userLoginVO = RedisUtil.get(RedisConst.PLATFORM_TOKEN_ROLE_MENU_PREFIX + token);
SaasUserRoleMenuRedisVO userLoginVO = RedisUtil.get(RedisConst.PLATFORM_TOKEN_ROLE_MENU_PREFIX + token);
return userLoginVO;
}
return null;
}
public static <T> void platLogin(String token, T t) {
/**
* saas端登录
* @param token
* @param t
* @param <T>
*/
public static <T> void saasLogin(String token, T t) {
login(RedisConst.PLATFORM_TOKEN_PREFIX, token, t);
}
public static void platRefreshToken() {
refreshToken(RedisConst.PLATFORM_TOKEN_PREFIX, RequestUtil.getHeader(HeaderConst.PLATFORM_TOKEN));
refreshToken(RedisConst.PLATFORM_TOKEN_ROLE_MENU_PREFIX, RequestUtil.getHeader(HeaderConst.PLATFORM_TOKEN));
}
}
......@@ -3,7 +3,7 @@ package com.makeit.utils.user.common;
import com.makeit.enums.HeaderConst;
import com.makeit.utils.user.ThreadLocalUserUtil;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.UserLoginVO;
import com.makeit.utils.user.SaasUserLoginVO;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import org.apache.commons.lang3.StringUtils;
......@@ -13,6 +13,7 @@ public class CommonUserUtil {
public static CommonUserVO getUser() {
SysUserLoginVO sysUserLoginVO = ThreadLocalUserUtil.getTntUser();
if (sysUserLoginVO != null) {
return new CommonUserVO(sysUserLoginVO.getId(), sysUserLoginVO.getName());
......@@ -23,6 +24,11 @@ public class CommonUserUtil {
return new CommonUserVO(wechatUserInfo.getId(), wechatUserInfo.getName());
}
SaasUserLoginVO saasUser = ThreadLocalUserUtil.getSaasUser();
if(saasUser != null){
return new CommonUserVO(saasUser.getId(),saasUser.getUsername());
}
return null;
}
......@@ -39,9 +45,9 @@ public class CommonUserUtil {
String wechatToken = httpHeaders.getFirst(HeaderConst.WECHAT_TOKEN);
if (StringUtils.isNotBlank(tenantToken)) {
UserLoginVO sysUserLoginVO = TokenUtil.getTntUserDetail(tenantToken);
SaasUserLoginVO sysUserLoginVO = TokenUtil.getTntUserDetail(tenantToken);
if (sysUserLoginVO != null) {
return new CommonUserVO(sysUserLoginVO.getId(), sysUserLoginVO.getName());
return new CommonUserVO(sysUserLoginVO.getId(), sysUserLoginVO.getUsername());
}
}
......
package com.makeit.utils.user.tenant;
import com.makeit.common.dto.BaseTenantIdDTO;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("厂别用户vo")
@Data
public class SysUserVO extends BaseTenantIdDTO {
public class SysUserVO extends BaseTenantDTO {
@ApiModelProperty(value = "姓名")
private String name;
......
package com.makeit.service.saas;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO;
import com.makeit.entity.saas.SaasRole;
import com.makeit.module.admin.saas.SaasRoleDTOVO;
import com.makeit.module.admin.saas.PlatRoleMenuDTO;
import com.makeit.module.admin.saas.PlatUserRoleDTO;
import java.util.List;
/**
* @author lixl
......@@ -10,4 +16,22 @@ import com.makeit.entity.saas.SaasRole;
*/
public interface SaasRoleService extends IService<SaasRole> {
List<SaasRoleDTOVO> list(SaasRoleDTOVO dto);
void add(SaasRoleDTOVO dto);
void edit(SaasRoleDTOVO dto);
SaasRoleDTOVO view(String id);
void del(String id);
void changeStatus(StatusDTO dto);
void assignUserList(List<PlatUserRoleDTO> userRoleDTOList);
void removeAssignUserList(List<PlatUserRoleDTO> userRoleDTOList);
void assignMenuList(PlatRoleMenuDTO roleMenuDTO);
}
......@@ -5,10 +5,10 @@ import com.makeit.common.dto.LoginDTO;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.admin.saas.PlatUserDTOVO;
import com.makeit.module.admin.saas.SaasUserDTOVO;
import com.makeit.module.admin.saas.PlatUserQueryDTO;
import com.makeit.entity.saas.SaasUser;
import com.makeit.utils.user.UserLoginVO;
import com.makeit.utils.user.SaasUserLoginVO;
import java.util.List;
......@@ -18,31 +18,31 @@ import java.util.List;
* @createDate 2023-08-29 11:14:07
*/
public interface SaasUserService extends IService<SaasUser> {
PageVO<PlatUserDTOVO> page(PageReqDTO<PlatUserQueryDTO> page);
PageVO<SaasUserDTOVO> page(PageReqDTO<PlatUserQueryDTO> page);
PageVO<PlatUserDTOVO> pageNoSuperAdmin(PageReqDTO<PlatUserQueryDTO> page);
PageVO<SaasUserDTOVO> pageNoSuperAdmin(PageReqDTO<PlatUserQueryDTO> page);
List<PlatUserDTOVO> list(PlatUserQueryDTO dto);
List<SaasUserDTOVO> list(PlatUserQueryDTO dto);
List<PlatUserDTOVO> listNoSuperAdmin(PlatUserQueryDTO dto);
List<SaasUserDTOVO> listNoSuperAdmin(PlatUserQueryDTO dto);
void add(PlatUserDTOVO dto);
void add(SaasUserDTOVO dto);
void edit(PlatUserDTOVO dto);
void edit(SaasUserDTOVO dto);
void changePassword(PlatUserDTOVO dto);
void changePassword(SaasUserDTOVO dto);
PlatUserDTOVO view(String id);
SaasUserDTOVO view(String id);
void del(String id);
void changeStatus(StatusDTO dto);
UserLoginVO login(LoginDTO loginDTO);
SaasUserLoginVO login(LoginDTO loginDTO);
UserLoginVO getRoleAndMenuList();
SaasUserLoginVO getRoleAndMenuList();
UserLoginVO getUserVO();
SaasUserLoginVO getUserVO();
void logout();
......
......@@ -84,7 +84,7 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i
.in(StringUtils.isNotBlank(dto.getRoleId()), SaasMenu::getId, menuIdList)
//.orderByAsc(PlatMenu::getParentId)
.orderByAsc(SaasMenu::getSort)
.orderByAsc(SaasMenu::getCreatedAt)
.orderByAsc(SaasMenu::getCreateDate)
);
return BeanDtoVoUtils.listVo(platMenuList, PlatMenuDTOVO.class);
......@@ -178,7 +178,7 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i
List<SaasMenu> exitList = list(new QueryWrapper<SaasMenu>().lambda()
.isNotNull(SaasMenu::getCode)
.in(SaasMenu::getCategory, SysEnum.MenuTypeEnum.MENU.getValue(), SysEnum.MenuTypeEnum.BUTTON.getValue())
.orderByDesc(SaasMenu::getCreatedAt)
.orderByDesc(SaasMenu::getCreateDate)
);
Map<String, SaasMenu> exitCodeMap = StreamUtil.toMapDep(exitList, SaasMenu::getCode);
......
package com.makeit.service.saas.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.dto.StatusDTO;
import com.makeit.entity.saas.SaasRole;
import com.makeit.entity.saas.SaasRoleMenu;
import com.makeit.entity.saas.SaasUserRole;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.exception.BusinessException;
import com.makeit.mapper.saas.SaasRoleMapper;
import com.makeit.module.admin.saas.SaasRoleDTOVO;
import com.makeit.module.admin.saas.PlatRoleMenuDTO;
import com.makeit.module.admin.saas.PlatUserRoleDTO;
import com.makeit.service.saas.SaasRoleMenuService;
import com.makeit.service.saas.SaasRoleService;
import com.makeit.service.saas.SaasUserRoleService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @author lixl
......@@ -15,4 +36,120 @@ import org.springframework.stereotype.Service;
public class SaasRoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
implements SaasRoleService{
@Autowired
private SaasUserRoleService saasUserRoleService;
@Autowired
private SaasRoleMenuService saasRoleMenuService;
@Override
public List<SaasRoleDTOVO> list(SaasRoleDTOVO dto) {
List<SaasRole> platRoleList = list(new QueryWrapper<SaasRole>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SaasRole::getName, dto.getName())
.like(StringUtils.isNotBlank(dto.getCode()), SaasRole::getCode, dto.getCode())
.and(StringUtils.isNotBlank(dto.getKeyword()), qw -> {
qw.like(StringUtils.isNotBlank(dto.getKeyword()), SaasRole::getName, dto.getKeyword())
.or()
.like(StringUtils.isNotBlank(dto.getKeyword()), SaasRole::getCode, dto.getKeyword());
})
.eq(StringUtils.isNotBlank(dto.getStatus()), SaasRole::getStatus, dto.getStatus())
.orderByDesc(SaasRole::getCreateDate)
);
return BeanDtoVoUtils.listVo(platRoleList, SaasRoleDTOVO.class);
}
private void check(SaasRoleDTOVO dto) {
SaasRole old = getOne(new QueryWrapper<SaasRole>().lambda()
.eq(SaasRole::getName, dto.getName()));
if (old != null && !old.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_NAME_DUPLICATE);
}
old = getOne(new QueryWrapper<SaasRole>().lambda()
.eq(SaasRole::getCode, dto.getCode()));
if (old != null && !old.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_CODE_DUPLICATE);
}
}
@Transactional
@Override
public void add(SaasRoleDTOVO dto) {
check(dto);
save(BeanDtoVoUtils.convert(dto, SaasRole.class));
}
@Transactional
@Override
public void edit(SaasRoleDTOVO dto) {
check(dto);
updateById(BeanDtoVoUtils.convert(dto, SaasRole.class));
}
@Override
public SaasRoleDTOVO view(String id) {
return BeanDtoVoUtils.convert(getById(id), SaasRoleDTOVO.class);
}
@Transactional
@Override
public void del(String id) {
removeById(id);
}
@Transactional
@Override
public void changeStatus(StatusDTO dto) {
if (Arrays.stream(CommonEnum.values()).noneMatch(e -> e.getValue().equals(dto.getStatus()))) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
SaasRole role = getById(dto.getId());
if (role.getStatus().equals(dto.getStatus())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
role.setStatus(dto.getStatus());
updateById(role);
}
@Transactional
@Override
public void assignUserList(List<PlatUserRoleDTO> userRoleDTOList) {
removeAssignUserList(userRoleDTOList);
List<SaasUserRole> userRoleList = BeanDtoVoUtils.listVo(userRoleDTOList, SaasUserRole.class);
saasUserRoleService.saveBatch(userRoleList);
}
@Transactional
@Override
public void removeAssignUserList(List<PlatUserRoleDTO> userRoleDTOList) {
Map<String, List<PlatUserRoleDTO>> roleUserMap = StreamUtil.groupBy(userRoleDTOList, PlatUserRoleDTO::getRoleId);
roleUserMap.forEach((k, v) -> {
List<String> userIdList = StreamUtil.map(v, PlatUserRoleDTO::getUserId);
userIdList.add(-1 + "");
saasUserRoleService.remove(new QueryWrapper<SaasUserRole>().lambda()
.eq(SaasUserRole::getRoleId, k)
.in(SaasUserRole::getUserId, userIdList));
});
}
@Transactional
@Override
public void assignMenuList(PlatRoleMenuDTO roleMenuDTO) {
//removeAssignMenuList(roleMenuDTOList);
saasRoleMenuService.remove(new QueryWrapper<SaasRoleMenu>().lambda().eq(SaasRoleMenu::getRoleId, roleMenuDTO.getRoleId()));
List<SaasRoleMenu> roleMenuList = StreamUtil.map(roleMenuDTO.getMenuIdList(), e -> {
SaasRoleMenu platRoleMenu = new SaasRoleMenu();
platRoleMenu.setRoleId(roleMenuDTO.getRoleId());
platRoleMenu.setMenuId(e);
return platRoleMenu;
});
saasRoleMenuService.saveBatch(roleMenuList);
}
}
......@@ -110,13 +110,19 @@ sa-token:
interceptor:
## 登录拦截路径
authenticationTntPath: /**
authenticationTntPathIgnore: /swagger-resources/**,/v2/api-docs/**,/sys/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/mobile/**,/doc.html,/saas/login/**,/error
authenticationTntPathIgnore: /swagger-resources/**,/v2/api-docs/**,/sys/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/mobile/**,/doc.html,/saas/**,/error
## 权限拦截路径
authorizationTntPath: /**
authorizationTntPathIgnore: /swagger-resources/**,/v2/api-docs/**,/sys/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/mobile/**,/doc.html,/saas/login/**,/error
authorizationTntPathIgnore: /swagger-resources/**,/v2/api-docs/**,/sys/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/mobile/**,/doc.html,/saas/**,/error
## saas端登录拦截路径
authenticationSaasPath: /saas/**
authenticationSaasPathIgnore: /saas/login/login
## saas端权限拦截路径
authorizationSaasPath: /saas/**
authorizationSaasPathIgnore: /saas/login/login
sign:
flag: true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment