1. 调整 sysUser,sysDept,sysRole 所在位置, 避免权限校验时的redis 转换Bug

2. 添加 task 服务,
3. todo 待添加队列获取后台任务以及后台任务的调用
This commit is contained in:
zhaowenyuan 2024-06-11 09:57:15 +08:00
parent a977c11faa
commit fee737f5e9
55 changed files with 893 additions and 92 deletions

View File

@ -7,7 +7,7 @@ import com.chushang.common.core.util.StringUtils;
import com.chushang.common.mybatis.base.BaseEntity; import com.chushang.common.mybatis.base.BaseEntity;
import com.chushang.datascope.annotation.DataScope; import com.chushang.datascope.annotation.DataScope;
import com.chushang.datascope.constants.ScopeConstants; import com.chushang.datascope.constants.ScopeConstants;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.datascope.enums.ScopeKeyWord; import com.chushang.datascope.enums.ScopeKeyWord;
import com.chushang.common.core.context.SecurityContextHolder; import com.chushang.common.core.context.SecurityContextHolder;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
@ -42,7 +42,7 @@ public class DataScopeAspect {
protected void handleDataScope(final JoinPoint joinPoint) { protected void handleDataScope(final JoinPoint joinPoint) {
// 获取当前的用户 // 获取当前的用户
LoginUser<?,DataScopeEntity> loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
if (StringUtils.isNotNull(loginUser)) { if (StringUtils.isNotNull(loginUser)) {
List<DataScopeEntity> scopes = loginUser.getScopes(); List<DataScopeEntity> scopes = loginUser.getScopes();
Long userId = loginUser.getUserId(); Long userId = loginUser.getUserId();

View File

@ -20,6 +20,10 @@
<groupId>com.chushang</groupId> <groupId>com.chushang</groupId>
<artifactId>chushang-common-feign</artifactId> <artifactId>chushang-common-feign</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>chushang-common-mybatis</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,4 +1,4 @@
package com.chushang.datascope.entity; package com.chushang.security.entity.po;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;

View File

@ -1,10 +1,9 @@
package com.chushang.system.entity.po; package com.chushang.security.entity.po;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chushang.common.mybatis.base.BaseEntity; import com.chushang.common.mybatis.base.BaseEntity;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -51,7 +50,7 @@ public class SysDept extends BaseEntity
/** 父部门名称 */ /** 父部门名称 */
@TableField(exist = false) @TableField(exist = false)
private String parentName; private String parentName;
/** 子部门 */ /** 子部门 */
@TableField(exist = false) @TableField(exist = false)
private List<SysDept> children = new ArrayList<>(); private List<SysDept> children = new ArrayList<>();
@ -71,4 +70,4 @@ public class SysDept extends BaseEntity
) )
private String updateBy; private String updateBy;
} }

View File

@ -1,10 +1,9 @@
package com.chushang.system.entity.po; package com.chushang.security.entity.po;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chushang.common.mybatis.base.BaseEntity; import com.chushang.common.mybatis.base.BaseEntity;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;
import java.util.Set; import java.util.Set;

View File

@ -1,9 +1,8 @@
package com.chushang.system.entity.po; package com.chushang.security.entity.po;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chushang.common.mybatis.base.BaseEntity; import com.chushang.common.mybatis.base.BaseEntity;
import com.chushang.datascope.entity.DataScopeEntity;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;

View File

@ -1,7 +1,10 @@
package com.chushang.security.entity.vo; package com.chushang.security.entity.vo;
import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.entity.po.SysUser;
import lombok.Data; import lombok.Data;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -11,8 +14,9 @@ import java.util.Set;
* by zhaowenyuan create 2022/5/19 12:09 * by zhaowenyuan create 2022/5/19 12:09
*/ */
@Data @Data
public class LoginUser<T, D> implements Serializable public class LoginUser implements Serializable
{ {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
@ -56,11 +60,11 @@ public class LoginUser<T, D> implements Serializable
/** /**
* 用户数据权限 * 用户数据权限
*/ */
private List<D> scopes; private List<DataScopeEntity> scopes;
/** /**
* 用户信息 * 用户信息
*/ */
private T sysUser; private SysUser sysUser;
/** /**
* 当前用户对应的 数据权限 * 当前用户对应的 数据权限
*/ */

View File

@ -109,6 +109,7 @@ public class TokenService
} }
catch (Exception ignored) catch (Exception ignored)
{ {
log.error("",ignored);
} }
return null; return null;
} }

View File

@ -31,7 +31,7 @@ public class SecurityUtils<T>
public static boolean isAdmin(){ public static boolean isAdmin(){
Long userId = SecurityContextHolder.getUserId(); Long userId = SecurityContextHolder.getUserId();
LoginUser<?, ?> loginUser = getLoginUser(); LoginUser loginUser = getLoginUser();
Set<String> roles = loginUser.getRoles(); Set<String> roles = loginUser.getRoles();
// 包含 admin 的账号 或者 id == 1 的就是 admin -- 必须是 admin 的才是超管权限 // 包含 admin 的账号 或者 id == 1 的就是 admin -- 必须是 admin 的才是超管权限
boolean flag = roles.contains(AuthUtil.SUPER_ADMIN); boolean flag = roles.contains(AuthUtil.SUPER_ADMIN);

View File

@ -5,13 +5,13 @@ import com.chushang.common.core.enums.PassCodeEnum;
import com.chushang.common.core.util.JwtUtils; import com.chushang.common.core.util.JwtUtils;
import com.chushang.common.core.util.StringUtils; import com.chushang.common.core.util.StringUtils;
import com.chushang.common.core.web.AjaxResult; import com.chushang.common.core.web.AjaxResult;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.auth.AuthUtil; import com.chushang.security.auth.AuthUtil;
import com.chushang.security.service.TokenService; import com.chushang.security.service.TokenService;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.bo.LoginBody; import com.chushang.system.entity.bo.LoginBody;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -39,7 +39,7 @@ public class UserController
public AjaxResult login(@RequestBody LoginBody form) public AjaxResult login(@RequestBody LoginBody form)
{ {
// 用户登录 // 用户登录
LoginUser<SysUser, DataScopeEntity> loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.PLATFORM.getCode()); LoginUser loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.PLATFORM.getCode());
// 获取登录token // 获取登录token
return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.PLATFORM.getCode())); return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.PLATFORM.getCode()));
} }
@ -51,7 +51,7 @@ public class UserController
public AjaxResult appLogin(@RequestBody LoginBody form) public AjaxResult appLogin(@RequestBody LoginBody form)
{ {
// 用户登录 // 用户登录
LoginUser<SysUser, DataScopeEntity> loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.APP.getCode()); LoginUser loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.APP.getCode());
// 获取登录token // 获取登录token
return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.APP.getCode())); return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.APP.getCode()));
} }
@ -63,7 +63,7 @@ public class UserController
public AjaxResult miniLogin(@RequestBody LoginBody form) public AjaxResult miniLogin(@RequestBody LoginBody form)
{ {
// 用户登录 // 用户登录
LoginUser<SysUser, DataScopeEntity> loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.MINI.getCode()); LoginUser loginUser = userService.login(form.getUsername(), form.getPassword(), PassCodeEnum.MINI.getCode());
// 获取登录token // 获取登录token
return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.MINI.getCode())); return AjaxResult.success(tokenService.createToken(loginUser, PassCodeEnum.MINI.getCode()));
} }

View File

@ -6,11 +6,11 @@ import com.chushang.common.core.exception.ResultException;
import com.chushang.common.core.util.IPUtils; import com.chushang.common.core.util.IPUtils;
import com.chushang.common.core.util.ServletUtils; import com.chushang.common.core.util.ServletUtils;
import com.chushang.common.core.web.Result; import com.chushang.common.core.web.Result;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.enums.LoginStatusEnum; import com.chushang.system.entity.enums.LoginStatusEnum;
import com.chushang.system.entity.po.SysLoginInfo; import com.chushang.system.entity.po.SysLoginInfo;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.system.feign.RemoteLoginInfoService; import com.chushang.system.feign.RemoteLoginInfoService;
import com.chushang.system.feign.RemoteUserService; import com.chushang.system.feign.RemoteUserService;
@ -35,13 +35,13 @@ public class UserService {
/** /**
* 登录 * 登录
*/ */
public LoginUser<SysUser, DataScopeEntity> login(String username, String password, String appCode) public LoginUser login(String username, String password, String appCode)
{ {
PassCodeEnum pce = PassCodeEnum.getEnumByCode(appCode); PassCodeEnum pce = PassCodeEnum.getEnumByCode(appCode);
if (pce.getOpenReg()) { if (pce.getOpenReg()) {
// 查询用户信息 // 查询用户信息
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
Result<LoginUser<SysUser, DataScopeEntity>> rLoginUser = remoteUserService.getUserInfo(username, SecurityConstants.INNER); Result<LoginUser> rLoginUser = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
long end = System.currentTimeMillis(); long end = System.currentTimeMillis();
log.info("time : {}",end - start); log.info("time : {}",end - start);
if (Result.FAIL_CODE == rLoginUser.getCode()){ if (Result.FAIL_CODE == rLoginUser.getCode()){
@ -51,7 +51,7 @@ public class UserService {
recordLoginInfo(username, LoginStatusEnum.ACCOUNT_EMPTY); recordLoginInfo(username, LoginStatusEnum.ACCOUNT_EMPTY);
throw new ResultException("登录用户:" + username + " 不存在"); throw new ResultException("登录用户:" + username + " 不存在");
} }
LoginUser<SysUser, DataScopeEntity> loginUser = rLoginUser.getData(); LoginUser loginUser = rLoginUser.getData();
SysUser sysUser = loginUser.getSysUser(); SysUser sysUser = loginUser.getSysUser();
Boolean isPlatform = sysUser.getIsPlatform(); Boolean isPlatform = sysUser.getIsPlatform();
if (!isPlatform && !PassCodeEnum.PLATFORM.equals(pce)){ if (!isPlatform && !PassCodeEnum.PLATFORM.equals(pce)){

View File

@ -74,7 +74,7 @@ public class FileController {
} }
@SysLog(value = "批量文件", businessType = BusinessType.DELETE) @SysLog(value = "批量文件", businessType = BusinessType.DELETE)
@DeleteMapping(value = "/del/batch") @PostMapping(value = "/del/batch")
@RequiresPermissions("system:file:del") @RequiresPermissions("system:file:del")
public AjaxResult delFile(@RequestBody List<String> fids) { public AjaxResult delFile(@RequestBody List<String> fids) {
fileSourceService.delFileBatch(fids); fileSourceService.delFileBatch(fids);

View File

@ -23,6 +23,16 @@
<module>system-feign</module> <module>system-feign</module>
<module>system-service</module> <module>system-service</module>
</modules> </modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>system-feign</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies> <dependencies>
<!--监控客户端--> <!--监控客户端-->
<dependency> <dependency>

View File

@ -25,10 +25,6 @@
<groupId>com.chushang</groupId> <groupId>com.chushang</groupId>
<artifactId>chushang-common-feign</artifactId> <artifactId>chushang-common-feign</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>chushang-common-security</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.chushang</groupId> <groupId>com.chushang</groupId>
<artifactId>chushang-common-excel</artifactId> <artifactId>chushang-common-excel</artifactId>

View File

@ -1,7 +1,7 @@
package com.chushang.system.entity.vo; package com.chushang.system.entity.vo;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.chushang.system.entity.po.SysDept; import com.chushang.security.entity.po.SysDept;
import com.chushang.system.entity.po.SysMenu; import com.chushang.system.entity.po.SysMenu;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -13,7 +13,7 @@ import java.util.stream.Collectors;
/** /**
* Treeselect树结构实体类 * Treeselect树结构实体类
* *
* @author ruoyi * @author ruoyi
*/ */
@Setter @Setter

View File

@ -2,10 +2,10 @@ package com.chushang.system.feign;
import com.chushang.common.core.constant.SecurityConstants; import com.chushang.common.core.constant.SecurityConstants;
import com.chushang.common.core.web.Result; import com.chushang.common.core.web.Result;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.system.constants.SystemConstants; import com.chushang.system.constants.SystemConstants;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@ -28,6 +28,6 @@ public interface RemoteUserService {
* @return 结果 * @return 结果
*/ */
@GetMapping("/info/{username}") @GetMapping("/info/{username}")
Result<LoginUser<SysUser, DataScopeEntity>> getUserInfo(@PathVariable(value = "username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); Result<LoginUser> getUserInfo(@PathVariable(value = "username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
} }

View File

@ -21,7 +21,6 @@
<dependency> <dependency>
<groupId>com.chushang</groupId> <groupId>com.chushang</groupId>
<artifactId>system-feign</artifactId> <artifactId>system-feign</artifactId>
<version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.chushang</groupId> <groupId>com.chushang</groupId>

View File

@ -6,7 +6,7 @@ import com.chushang.common.log.enums.BusinessType;
import com.chushang.security.annotation.RequiresPermissions; import com.chushang.security.annotation.RequiresPermissions;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.dto.ListDeptDTO; import com.chushang.system.entity.dto.ListDeptDTO;
import com.chushang.system.entity.po.SysDept; import com.chushang.security.entity.po.SysDept;
import com.chushang.system.service.ISysDeptService; import com.chushang.system.service.ISysDeptService;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;

View File

@ -5,12 +5,12 @@ import com.chushang.common.core.util.StringUtils;
import com.chushang.common.core.web.AjaxResult; import com.chushang.common.core.web.AjaxResult;
import com.chushang.common.log.annotation.SysLog; import com.chushang.common.log.annotation.SysLog;
import com.chushang.common.log.enums.BusinessType; import com.chushang.common.log.enums.BusinessType;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.annotation.RequiresPermissions; import com.chushang.security.annotation.RequiresPermissions;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.dto.ListMenuDTO; import com.chushang.system.entity.dto.ListMenuDTO;
import com.chushang.system.entity.po.SysMenu; import com.chushang.system.entity.po.SysMenu;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.system.service.ISysMenuService; import com.chushang.system.service.ISysMenuService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -158,7 +158,7 @@ public class MenuController {
@GetMapping("/getRouters") @GetMapping("/getRouters")
public AjaxResult getRouters() public AjaxResult getRouters()
{ {
LoginUser<SysUser, DataScopeEntity> loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser(); SysUser sysUser = loginUser.getSysUser();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(sysUser); List<SysMenu> menus = menuService.selectMenuTreeByUserId(sysUser);
return AjaxResult.success(menuService.buildMenus(menus)); return AjaxResult.success(menuService.buildMenus(menus));

View File

@ -7,12 +7,12 @@ import com.chushang.common.log.annotation.SysLog;
import com.chushang.common.log.enums.BusinessType; import com.chushang.common.log.enums.BusinessType;
import com.chushang.common.mybatis.page.CommonParam; import com.chushang.common.mybatis.page.CommonParam;
import com.chushang.common.mybatis.utils.PageResult; import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.annotation.RequiresPermissions; import com.chushang.security.annotation.RequiresPermissions;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.po.SysPost; import com.chushang.system.entity.po.SysPost;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.service.ISysPostService; import com.chushang.system.service.ISysPostService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -82,7 +82,7 @@ public class PostController {
AssertUtil.invalidate(postService.checkPostUnique(postName), "新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); AssertUtil.invalidate(postService.checkPostUnique(postName), "新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
post.setCreateBy(SecurityUtils.getUsername()); post.setCreateBy(SecurityUtils.getUsername());
LoginUser<SysUser, DataScopeEntity> loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser(); SysUser sysUser = loginUser.getSysUser();
Long deptId = sysUser.getDeptId(); Long deptId = sysUser.getDeptId();

View File

@ -9,7 +9,7 @@ import com.chushang.system.entity.bo.CancelUserRole;
import com.chushang.system.entity.bo.RoleUser; import com.chushang.system.entity.bo.RoleUser;
import com.chushang.system.entity.dto.ListRoleDTO; import com.chushang.system.entity.dto.ListRoleDTO;
import com.chushang.system.entity.dto.ListUserDTO; import com.chushang.system.entity.dto.ListUserDTO;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import com.chushang.system.service.ISysRoleService; import com.chushang.system.service.ISysRoleService;
import com.chushang.system.service.ISysUserService; import com.chushang.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -5,15 +5,15 @@ import com.chushang.common.core.util.StringUtils;
import com.chushang.common.core.web.AjaxResult; import com.chushang.common.core.web.AjaxResult;
import com.chushang.common.log.annotation.SysLog; import com.chushang.common.log.annotation.SysLog;
import com.chushang.common.log.enums.BusinessType; import com.chushang.common.log.enums.BusinessType;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.annotation.RequiresPermissions; import com.chushang.security.annotation.RequiresPermissions;
import com.chushang.security.service.TokenService; import com.chushang.security.service.TokenService;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.bo.PasswordForm; import com.chushang.system.entity.bo.PasswordForm;
import com.chushang.system.entity.dto.ListUserDTO; import com.chushang.system.entity.dto.ListUserDTO;
import com.chushang.system.entity.po.SysPost; import com.chushang.system.entity.po.SysPost;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.system.service.*; import com.chushang.system.service.*;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
@ -96,7 +96,7 @@ public class UserController {
@PutMapping("/profile") @PutMapping("/profile")
public AjaxResult updateProfile(@RequestBody SysUser user) public AjaxResult updateProfile(@RequestBody SysUser user)
{ {
LoginUser<SysUser, DataScopeEntity> loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
String username = user.getUsername(); String username = user.getUsername();
if (!sysUserService.checkUsername(username)){ if (!sysUserService.checkUsername(username)){
SysUser sysUser = loginUser.getSysUser(); SysUser sysUser = loginUser.getSysUser();
@ -203,7 +203,7 @@ public class UserController {
public AjaxResult updatePwd(@RequestBody @Valid PasswordForm form) public AjaxResult updatePwd(@RequestBody @Valid PasswordForm form)
{ {
// 这里没有密码 // 这里没有密码
LoginUser<SysUser, DataScopeEntity> loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser(); SysUser sysUser = loginUser.getSysUser();
if (!SecurityUtils.matchesPassword(form.getOldPassword(), sysUser.getSalt(), sysUser.getPassword())){ if (!SecurityUtils.matchesPassword(form.getOldPassword(), sysUser.getSalt(), sysUser.getPassword())){
throw new ResultException("原密码不正确"); throw new ResultException("原密码不正确");

View File

@ -2,7 +2,7 @@ package com.chushang.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chushang.system.entity.dto.ListDeptDTO; import com.chushang.system.entity.dto.ListDeptDTO;
import com.chushang.system.entity.po.SysDept; import com.chushang.security.entity.po.SysDept;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;

View File

@ -3,7 +3,7 @@ package com.chushang.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chushang.system.entity.dto.ListRoleDTO; import com.chushang.system.entity.dto.ListRoleDTO;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;

View File

@ -3,7 +3,7 @@ package com.chushang.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chushang.system.entity.dto.ListUserDTO; import com.chushang.system.entity.dto.ListUserDTO;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;

View File

@ -2,10 +2,10 @@ package com.chushang.system.remote;
import com.chushang.common.core.util.StringUtils; import com.chushang.common.core.util.StringUtils;
import com.chushang.common.core.web.Result; import com.chushang.common.core.web.Result;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.annotation.InnerAuth; import com.chushang.security.annotation.InnerAuth;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.feign.RemoteUserService; import com.chushang.system.feign.RemoteUserService;
import com.chushang.system.service.*; import com.chushang.system.service.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -33,7 +33,7 @@ public class RemoteUserController implements RemoteUserService {
@InnerAuth @InnerAuth
@GetMapping("/info/{username}") @GetMapping("/info/{username}")
public Result<LoginUser<SysUser, DataScopeEntity>> getUserInfo(@PathVariable("username") String username, String source) public Result<LoginUser> getUserInfo(@PathVariable("username") String username, String source)
{ {
SysUser sysUser = sysUserService.selectUserByUserName(username); SysUser sysUser = sysUserService.selectUserByUserName(username);
if (StringUtils.isNull(sysUser)) { if (StringUtils.isNull(sysUser)) {
@ -47,7 +47,7 @@ public class RemoteUserController implements RemoteUserService {
// 数据权限集合 // 数据权限集合
List<DataScopeEntity> dataScopes = permissionService.getDataScopes(sysUser); List<DataScopeEntity> dataScopes = permissionService.getDataScopes(sysUser);
LoginUser<SysUser, DataScopeEntity> sysUserVo = new LoginUser<>(); LoginUser sysUserVo = new LoginUser();
sysUserVo.setUserId(sysUser.getUserId()); sysUserVo.setUserId(sysUser.getUserId());
sysUserVo.setUsername(sysUser.getUsername()); sysUserVo.setUsername(sysUser.getUsername());
sysUserVo.setSysUser(sysUser); sysUserVo.setSysUser(sysUser);

View File

@ -7,13 +7,10 @@ import com.chushang.common.core.text.Convert;
import com.chushang.common.core.util.StringUtils; import com.chushang.common.core.util.StringUtils;
import com.chushang.common.mybatis.enums.Operator; import com.chushang.common.mybatis.enums.Operator;
import com.chushang.system.entity.dto.ListDeptDTO; import com.chushang.system.entity.dto.ListDeptDTO;
import com.chushang.system.entity.po.SysDept; import com.chushang.security.entity.po.SysDept;
import com.chushang.system.entity.vo.TreeSelect; import com.chushang.system.entity.vo.TreeSelect;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
* <p> * <p>

View File

@ -6,7 +6,7 @@ import com.chushang.common.core.util.StringUtils;
import com.chushang.common.mybatis.enums.Operator; import com.chushang.common.mybatis.enums.Operator;
import com.chushang.system.entity.dto.ListMenuDTO; import com.chushang.system.entity.dto.ListMenuDTO;
import com.chushang.system.entity.po.SysMenu; import com.chushang.system.entity.po.SysMenu;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.entity.vo.RouterVo; import com.chushang.system.entity.vo.RouterVo;
import com.chushang.system.entity.vo.TreeSelect; import com.chushang.system.entity.vo.TreeSelect;

View File

@ -1,13 +1,10 @@
package com.chushang.system.service; package com.chushang.system.service;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.entity.po.SysUser;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @author by zhaowenyuan create 2022/8/19 09:43 * @author by zhaowenyuan create 2022/8/19 09:43

View File

@ -9,8 +9,8 @@ import com.chushang.common.core.web.AjaxResult;
import com.chushang.common.mybatis.enums.Operator; import com.chushang.common.mybatis.enums.Operator;
import com.chushang.system.entity.bo.CancelUserRole; import com.chushang.system.entity.bo.CancelUserRole;
import com.chushang.system.entity.dto.ListRoleDTO; import com.chushang.system.entity.dto.ListRoleDTO;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import java.util.List; import java.util.List;

View File

@ -7,7 +7,7 @@ import com.chushang.common.core.exception.ResultException;
import com.chushang.common.core.web.AjaxResult; import com.chushang.common.core.web.AjaxResult;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.dto.ListUserDTO; import com.chushang.system.entity.dto.ListUserDTO;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
/** /**
* <p> * <p>

View File

@ -10,8 +10,8 @@ import com.chushang.system.mapper.SysDeptMapper;
import com.chushang.system.service.ISysUserService; import com.chushang.system.service.ISysUserService;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.dto.ListDeptDTO; import com.chushang.system.entity.dto.ListDeptDTO;
import com.chushang.system.entity.po.SysDept; import com.chushang.security.entity.po.SysDept;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import com.chushang.system.entity.vo.TreeSelect; import com.chushang.system.entity.vo.TreeSelect;
import com.chushang.system.service.ISysDeptService; import com.chushang.system.service.ISysDeptService;
import com.chushang.system.service.ISysRoleService; import com.chushang.system.service.ISysRoleService;

View File

@ -5,12 +5,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chushang.common.core.constant.Constants; import com.chushang.common.core.constant.Constants;
import com.chushang.common.core.constant.UserConstants; import com.chushang.common.core.constant.UserConstants;
import com.chushang.common.core.util.StringUtils; import com.chushang.common.core.util.StringUtils;
import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.entity.dto.ListMenuDTO; import com.chushang.system.entity.dto.ListMenuDTO;
import com.chushang.system.entity.enums.MenuTypeEnum; import com.chushang.system.entity.enums.MenuTypeEnum;
import com.chushang.system.entity.po.SysMenu; import com.chushang.system.entity.po.SysMenu;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.entity.vo.MetaVo; import com.chushang.system.entity.vo.MetaVo;
import com.chushang.system.entity.vo.RouterVo; import com.chushang.system.entity.vo.RouterVo;
import com.chushang.system.entity.vo.TreeSelect; import com.chushang.system.entity.vo.TreeSelect;

View File

@ -2,19 +2,17 @@ package com.chushang.system.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.chushang.datascope.constants.ScopeConstants; import com.chushang.datascope.constants.ScopeConstants;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.auth.AuthUtil; import com.chushang.security.auth.AuthUtil;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.service.ISysDeptService; import com.chushang.system.service.ISysDeptService;
import com.chushang.system.service.ISysMenuService; import com.chushang.system.service.ISysMenuService;
import com.chushang.system.service.ISysPermissionService; import com.chushang.system.service.ISysPermissionService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@ -8,14 +8,14 @@ import com.chushang.common.core.util.StringUtils;
import com.chushang.common.core.web.AjaxResult; import com.chushang.common.core.web.AjaxResult;
import com.chushang.common.mybatis.utils.PageResult; import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.datascope.annotation.DataScope; import com.chushang.datascope.annotation.DataScope;
import com.chushang.datascope.entity.DataScopeEntity; import com.chushang.security.entity.po.DataScopeEntity;
import com.chushang.security.utils.SecurityUtils; import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.mapper.SysRoleMapper; import com.chushang.system.mapper.SysRoleMapper;
import com.chushang.system.service.ISysRoleMenuService; import com.chushang.system.service.ISysRoleMenuService;
import com.chushang.system.entity.bo.CancelUserRole; import com.chushang.system.entity.bo.CancelUserRole;
import com.chushang.system.entity.dto.ListRoleDTO; import com.chushang.system.entity.dto.ListRoleDTO;
import com.chushang.system.entity.po.SysRole; import com.chushang.security.entity.po.SysRole;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.security.entity.vo.LoginUser; import com.chushang.security.entity.vo.LoginUser;
import com.chushang.system.service.ISysRoleDeptService; import com.chushang.system.service.ISysRoleDeptService;
import com.chushang.system.service.ISysRoleService; import com.chushang.system.service.ISysRoleService;
@ -106,7 +106,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
@Override @Override
@Transactional @Transactional
public void saveRole(SysRole role) { public void saveRole(SysRole role) {
LoginUser<SysUser, DataScopeEntity> loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser(); SysUser sysUser = loginUser.getSysUser();
Long deptId = sysUser.getDeptId(); Long deptId = sysUser.getDeptId();

View File

@ -14,7 +14,7 @@ import com.chushang.security.utils.SecurityUtils;
import com.chushang.system.mapper.SysUserMapper; import com.chushang.system.mapper.SysUserMapper;
import com.chushang.system.service.*; import com.chushang.system.service.*;
import com.chushang.system.entity.dto.ListUserDTO; import com.chushang.system.entity.dto.ListUserDTO;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.entity.po.SysUserRole; import com.chushang.system.entity.po.SysUserRole;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;

View File

@ -5,7 +5,7 @@
select d.dept_id, d.parent_dept_id, d.ancestors, d.dept_name, d.order_num, d.status, d.del_state, d.create_by, d.create_time select d.dept_id, d.parent_dept_id, d.ancestors, d.dept_name, d.order_num, d.status, d.del_state, d.create_by, d.create_time
from sys_dept d from sys_dept d
</sql> </sql>
<resultMap type="com.chushang.system.entity.po.SysDept" id="SysDeptResult"> <resultMap type="com.chushang.security.entity.po.SysDept" id="SysDeptResult">
<id property="deptId" column="dept_id" /> <id property="deptId" column="dept_id" />
<result property="parentId" column="parent_dept_id" /> <result property="parentId" column="parent_dept_id" />
<result property="ancestors" column="ancestors" /> <result property="ancestors" column="ancestors" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chushang.system.mapper.SysRoleMapper"> <mapper namespace="com.chushang.system.mapper.SysRoleMapper">
<resultMap id="SysRole" type="com.chushang.system.entity.po.SysRole"> <resultMap id="SysRole" type="com.chushang.security.entity.po.SysRole">
<id property="roleId" column="role_id" /> <id property="roleId" column="role_id" />
<result property="roleName" column="role_name" /> <result property="roleName" column="role_name" />
<result property="roleKey" column="role_key" /> <result property="roleKey" column="role_key" />
@ -27,7 +27,7 @@
</sql> </sql>
<select id="selectRoleList" resultMap="SysRole" <select id="selectRoleList" resultMap="SysRole"
parameterType="com.chushang.system.entity.po.SysRole"> parameterType="com.chushang.security.entity.po.SysRole">
select distinct r.role_id, r.role_name, r.role_key, r.order_num, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, select distinct r.role_id, r.role_name, r.role_key, r.order_num, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
r.status, r.del_state, r.create_time, r.remark, r.update_time, r.create_by r.status, r.del_state, r.create_time, r.remark, r.update_time, r.create_by
from sys_role r from sys_role r

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chushang.system.mapper.SysUserMapper"> <mapper namespace="com.chushang.system.mapper.SysUserMapper">
<resultMap type="com.chushang.system.entity.po.SysUser" id="SysUserResult"> <resultMap type="com.chushang.security.entity.po.SysUser" id="SysUserResult">
<id property="userId" column="user_id"/> <id property="userId" column="user_id"/>
<result property="deptId" column="dept_id"/> <result property="deptId" column="dept_id"/>
<result property="username" column="username"/> <result property="username" column="username"/>
@ -22,7 +22,7 @@
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/> <collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
</resultMap> </resultMap>
<resultMap id="deptResult" type="com.chushang.system.entity.po.SysDept"> <resultMap id="deptResult" type="com.chushang.security.entity.po.SysDept">
<id property="deptId" column="dept_id"/> <id property="deptId" column="dept_id"/>
<result property="parentId" column="parent_dept_id"/> <result property="parentId" column="parent_dept_id"/>
<result property="deptName" column="dept_name"/> <result property="deptName" column="dept_name"/>
@ -31,7 +31,7 @@
<result property="status" column="dept_status"/> <result property="status" column="dept_status"/>
</resultMap> </resultMap>
<resultMap id="RoleResult" type="com.chushang.system.entity.po.SysRole"> <resultMap id="RoleResult" type="com.chushang.security.entity.po.SysRole">
<id property="roleId" column="role_id"/> <id property="roleId" column="role_id"/>
<result property="roleName" column="role_name"/> <result property="roleName" column="role_name"/>
<result property="roleKey" column="role_key"/> <result property="roleKey" column="role_key"/>
@ -60,7 +60,7 @@
where u.user_id = #{userId} and u.del_state = FALSE where u.user_id = #{userId} and u.del_state = FALSE
</select> </select>
<select id="selectUserList" parameterType="com.chushang.system.entity.po.SysUser" resultMap="SysUserResult"> <select id="selectUserList" parameterType="com.chushang.security.entity.po.SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.username, u.status, u.del_state, u.create_by, u.create_time, select u.user_id, u.dept_id, u.username, u.status, u.del_state, u.create_by, u.create_time,
d.dept_name from sys_user u d.dept_name from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id

View File

@ -2,7 +2,7 @@ import cn.hutool.json.JSONUtil;
import com.chushang.security.service.TokenService; import com.chushang.security.service.TokenService;
import com.chushang.SystemApplication; import com.chushang.SystemApplication;
import com.chushang.system.entity.po.SysMenu; import com.chushang.system.entity.po.SysMenu;
import com.chushang.system.entity.po.SysUser; import com.chushang.security.entity.po.SysUser;
import com.chushang.system.entity.vo.RouterVo; import com.chushang.system.entity.vo.RouterVo;
import com.chushang.system.service.*; import com.chushang.system.service.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -0,0 +1,64 @@
### gradle ###
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
### STS ###
.settings/
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
bin/
### IntelliJ IDEA ###
.idea/*
*.iws
*.iml
*.ipr
rebel.xml
### NetBeans ###
nbproject/private/
build/
nbbuild/
nbdist/
.nb-gradle/
### maven ###
target/
*.war
*.ear
*.zip
*.tar
*.tar.gz
### vscode ###
.vscode
### logs ###
/logs/
*.log
*.log.gz
### xxl-job log ###
/xxl-job/
### temp ignore ###
*.cache
*.diff
*.patch
*.tmp
*.java~
*.properties~
*.xml~
### system ignore ###
.DS_Store
Thumbs.db
Servers
.metadata
.fastRequest

View File

@ -0,0 +1,63 @@
<?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">
<parent>
<artifactId>chushang-modules</artifactId>
<groupId>com.chushang</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>chushang-module-task</artifactId>
<packaging>pom</packaging>
<modules>
<module>task-service</module>
<module>task-feign</module>
</modules>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>task-feign</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!--监控客户端-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<!--注册中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,30 @@
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.chushang</groupId>
<artifactId>chushang-module-task</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>task-feign</artifactId>
<dependencies>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>chushang-common-feign</artifactId>
</dependency>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>chushang-common-mybatis</artifactId>
</dependency>
<!-- 权限控制 -->
<dependency>
<groupId>com.chushang</groupId>
<artifactId>chushang-common-data-scope</artifactId>
</dependency>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>chushang-common-dict</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,108 @@
package com.chushang.task.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chushang.common.mybatis.base.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @auther: zhao
* @date: 2024/6/7 18:18
*/
@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "tb_task_info")
public class TaskInfo extends BaseEntity {
/**
* 主键id
*/
@TableId(value = "task_id", type = IdType.ASSIGN_ID)
private Long taskId;
/**
* 后台任务名称
*/
@TableField(value = "task_name")
private String taskName;
/**
* 所属服务名
*/
@TableField(value = "application_name")
private String applicationName;
/**
* 方法名称
*/
@TableField(value = "method_name")
private String methodName;
/**
* 类名
*/
@TableField(value = "class_name")
private String className;
/**
* 任务状态
*/
@TableField(value = "task_status")
private Short taskStatus;
/**
* 创建人
*/
@TableField(value = "create_by")
private String createBy;
/**
* 修改人
*/
@TableField(value = "update_by")
private String updateBy;
/**
* 后台任务执行参数
*/
@TableField(value = "params")
private String params;
/**
* 备注信息
*/
@TableField(value = "remark")
private String remark;
/**
* 导出或者下载时, 对应的返回的文件路径
*/
@TableField(value = "down_url")
private String downUrl;
/**
* 最后一次执行时间
*/
@TableField(value = "last_run_time")
private LocalDateTime lastRunTime;
/**
* 最后一次执行结果
*/
@TableField("last_run_result")
private String lastRunResult;
@TableField("error_message")
private String errorMessage;
/**
* 部门id -- 根据部门查看区分
*/
@TableField("dept_id")
private Long deptId;
}

View File

@ -0,0 +1,118 @@
<?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">
<parent>
<artifactId>chushang-module-task</artifactId>
<groupId>com.chushang</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.0.0</version>
<artifactId>task-service</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>task-feign</artifactId>
</dependency>
<dependency>
<groupId>com.chushang</groupId>
<artifactId>chushang-common-redis</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/application.yml</exclude>
<exclude>**/bootstrap.yml</exclude>
<exclude>**/logback-nacos.xml</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 加入前缀 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- jar包不包含唯一版本标识 -->
<useUniqueVersions>false</useUniqueVersions>
<!--指定入口类 -->
<mainClass>com.chushang.TaskApplication</mainClass>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
<Class-Path>./config/</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<finalName>${project.build.finalName}</finalName>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 该插件的作用是用于复制指定的文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution> <!-- 复制配置文件 -->
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application.yml</include>
<include>bootstrap.yml</include>
<include>logback-nacos.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<nonFilteredFileExtensions>
</nonFilteredFileExtensions>
<encoding>UTF-8</encoding>
<outputDirectory>${project.build.directory}/config</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>
</project>

View File

@ -0,0 +1,48 @@
package com.chushang;
import com.chushang.common.core.enums.AppStartType;
import com.chushang.common.feign.annotation.EnableOnnFeignClients;
import com.chushang.common.feign.annotation.EnableTransferFeign;
import com.chushang.security.annotation.EnableCustomConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* 认证授权中心
*
* @author ruoyi
*/
@EnableDiscoveryClient
@EnableOnnFeignClients
@SpringBootApplication(scanBasePackages = {"com.chushang.**"})
@EnableTransferFeign
@EnableCustomConfig
@EnableTransactionManagement
public class TaskApplication extends SpringBootServletInitializer
{
private final static Logger log = LoggerFactory.getLogger(TaskApplication.class);
private final static String APP_NAME = "系统任务服务应用";
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
log.info(AppStartType.START_FORMAT, AppStartType.web_server.type(), APP_NAME);
SpringApplicationBuilder run = application.sources(TaskApplication.class);
log.info(AppStartType.END_FORMAT, AppStartType.web_server.type(), APP_NAME);
return run;
}
public static void main(String[] args) throws Exception {
log.info(AppStartType.START_FORMAT, AppStartType.main.type(), APP_NAME);
SpringApplication.run(TaskApplication.class, args);
log.info(AppStartType.END_FORMAT, AppStartType.main.type(), APP_NAME);
}
}

View File

@ -0,0 +1,34 @@
package com.chushang.task.controller;
import com.chushang.common.core.web.AjaxResult;
import com.chushang.common.mybatis.page.CommonParam;
import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.security.annotation.RequiresPermissions;
import com.chushang.task.entity.TaskInfo;
import com.chushang.task.service.TaskInfoService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @auther: zhao
* @date: 2024/6/11 9:11
*/
@RestController
@RequestMapping(value = "/")
public class TaskController {
@Resource
TaskInfoService taskInfoService;
@RequiresPermissions("system:task:list")
@GetMapping("/list")
public AjaxResult page(TaskInfo taskInfo){
CommonParam commonParam = CommonParam.buildPageRequest();
PageResult pageResult = taskInfoService.pagePostList(taskInfo, commonParam);
return AjaxResult.success(pageResult);
}
}

View File

@ -0,0 +1,10 @@
package com.chushang.task.mapper;
import com.chushang.task.entity.TaskInfo;
/**
* @auther: zhao
* @date: 2024/6/7 18:18
*/
public interface TaskInfoMapper extends com.baomidou.mybatisplus.core.mapper.BaseMapper<TaskInfo> {
}

View File

@ -0,0 +1,27 @@
package com.chushang.task.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chushang.common.mybatis.page.CommonParam;
import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.datascope.annotation.DataScope;
import com.chushang.task.entity.TaskInfo;
/**
* @auther: zhao
* @date: 2024/6/7 18:19
*/
public interface TaskInfoService extends IService<TaskInfo> {
@DataScope(tableAlias = "t")
default PageResult pagePostList(TaskInfo sysPost, CommonParam commonParam){
IPage<TaskInfo> page = this.page(
new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(commonParam.getPage(), commonParam.getLimit()),
buildWrapper(sysPost, commonParam)
);
return new PageResult(page);
}
Wrapper<TaskInfo> buildWrapper(TaskInfo sysPost, CommonParam commonParam);
}

View File

@ -0,0 +1,38 @@
package com.chushang.task.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chushang.common.core.constant.SecurityConstants;
import com.chushang.common.mybatis.page.CommonParam;
import com.chushang.datascope.constants.ScopeConstants;
import com.chushang.task.entity.TaskInfo;
import com.chushang.task.mapper.TaskInfoMapper;
import com.chushang.task.service.TaskInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
/**
* @auther: zhao
* @date: 2024/6/7 18:19
*/
@Slf4j
@Service
public class TaskInfoServiceImpl extends ServiceImpl<TaskInfoMapper, TaskInfo> implements TaskInfoService {
@Override
public Wrapper<TaskInfo> buildWrapper(TaskInfo taskInfo, CommonParam commonParam) {
return new QueryWrapper<TaskInfo>()
.orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy())
.lambda()
.eq(null != taskInfo.getTaskId(), TaskInfo::getTaskId, taskInfo.getTaskId())
.like(StringUtils.isNotEmpty(taskInfo.getApplicationName()), TaskInfo::getApplicationName, taskInfo.getApplicationName())
.eq(StringUtils.isNotEmpty(taskInfo.getTaskName()), TaskInfo::getTaskName, taskInfo.getTaskName())
.eq(null != taskInfo.getTaskStatus(), TaskInfo::getTaskStatus, taskInfo.getTaskStatus())
.like(StringUtils.isNotEmpty(taskInfo.getClassName()), TaskInfo::getClassName, taskInfo.getClassName())
.like(StringUtils.isNotEmpty(taskInfo.getMethodName()), TaskInfo::getMethodName, taskInfo.getMethodName())
.in(ObjectUtils.isNotEmpty(taskInfo.getSqlParam().get(ScopeConstants.DATA_SCOPE)), TaskInfo::getDeptId, taskInfo.getSqlParam().get(ScopeConstants.DATA_SCOPE));
}
}

View File

@ -0,0 +1,90 @@
server:
#开启优雅停机
shutdown: graceful
port: 8086
servlet:
context-path: /task
tomcat:
uri-encoding: UTF-8
threads:
max: 800
min-spare: 100
spring:
application:
name: @artifactId@
# 如果需要使用读写分离, 此处需要改造, 有没有办法不用改?
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${config.jdbc.master.task.username}
password: ${config.jdbc.master.task.password}
url: jdbc:mysql://${config.jdbc.master.task.host}:${config.jdbc.master.task.port}/${config.jdbc.master.task.database}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
hikari:
# 最大线程池数量
maximum-pool-size: 30
# 最小线程池数量
minimum-idle: 5
# 检测连接
connection-test-query: SELECT 1
# 连接超时时间 默认30分钟
connection-timeout: 30000
# 连接最大生存期间, 默认30分钟
#max-lifetime: 300000
devtools:
restart:
enabled: true
jackson:
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
# mybaits-plus配置
mybatis-plus:
# 全局刷新 mapper
mapper-locations: classpath:/mapper/**/*.xml
global-config:
refresh:
enable: true
db-config:
id-type: auto
table-underline: true
logic-delete-value: 1
logic-not-delete-value: 0
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
jdbc-type-for-null: 'null'
default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# feign 配置
feign:
sentinel:
enabled: true
okhttp:
enabled: true
httpclient:
enabled: false
client:
config:
default:
connectTimeout: 10000
readTimeout: 10000
compression:
request:
enabled: true
response:
enabled: true
# 暴露监控端点
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
# 日志监听配置 -- 如果启用的话,需要配置 kafka 的路径
logging:
config: classpath:logback-nacos.xml

View File

@ -0,0 +1,29 @@
spring:
config:
import:
-: "classpath:application.yml"
cloud:
loadbalancer:
cache:
enabled: false
nacos:
server-addr: ${nacos.host}
username: ${nacos.username}
password: ${nacos.password}
discovery:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${nacos.namespace}
group: ${nacos.group}
service: ${spring.application.name}
config:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
group: ${spring.cloud.nacos.discovery.group}
file-extension: yaml
refresh-enabled: true
shared-configs:
- dataId: application-common.${spring.cloud.nacos.config.file-extension}
group: ${nacos.group}
refresh: ${spring.cloud.nacos.config.refresh-enabled}
profiles:
active: @profiles.active@

View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
<springProperty scope="context" name="plumelog.kafka.hosts" source="plumelog.kafka.hosts"/>
<springProperty scope="context" name="plumelog.redis.hosts" source="plumelog.redis.hosts" />
<springProperty scope="context" name="plumelog.redis.auth" source="plumelog.redis.auth" />
<springProperty scope="context" name="plumelog.redis.db" source="plumelog.redis.db" />
<springProperty scope="context" name="plumelog.env" source="spring.profiles.active"/>
<property name="log.kafka.hosts" value="${plumelog.kafka.hosts}" />
<property name="log.redis.hosts" value="${plumelog.redis.hosts}" />
<property name="log.redis.auth" value="${plumelog.redis.auth}" />
<property name="log.redis.db" value="${plumelog.redis.db}"/>
<property name="log.path" value="logs/${spring.application.name}"/>
<property name="log.env" value="${plumelog.env}"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} TRACE[%X{traceId:-} / %X{span:-}] [%clr(%5p) %clr(${PID:- } %clr(%15.15t){faint}] %clr(---){faint}){magenta} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- Console log output -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- Log file info output -->
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxHistory>5</maxHistory>
<maxFileSize>500MB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
</appender>
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxHistory>5</maxHistory>
<maxFileSize>500MB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxHistory>5</maxHistory>
<maxFileSize>500MB</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
</appender>
<!--nacos 心跳 INFO 屏蔽-->
<logger name="com.alibaba.cloud.nacos" level="info">
</logger>
<!-- 使用kafka启用下面配置 -->
<!-- <appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender">-->
<!-- <appName>${spring.application.name}</appName>-->
<!-- <kafkaHosts>${log.hosts}</kafkaHosts>-->
<!-- </appender>-->
<!--redis-->
<!-- <appender name="redisPlumelog" class="com.plumelog.logback.appender.RedisAppender">-->
<!-- <appName>${spring.application.name}</appName>-->
<!-- <redisHost>${log.redis.hosts}</redisHost>-->
<!-- <redisAuth>${log.redis.auth}</redisAuth>-->
<!-- <redisDb>${log.redis.db}</redisDb>-->
<!-- <env>${log.env}</env>-->
<!-- </appender>-->
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="info"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
<!-- 输出plumelog -->
<!-- <appender-ref ref="redisPlumelog"/>-->
</root>
</configuration>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chushang.task.mapper.TaskInfoMapper">
<resultMap id="BaseResultMap" type="com.chushang.task.entity.TaskInfo">
<!--@mbg.generated-->
<!--@Table tb_task_info-->
<id column="id" jdbcType="BIGINT" property="taskId" />
<result column="task_name" jdbcType="VARCHAR" property="taskName" />
<result column="application_name" jdbcType="VARCHAR" property="applicationName" />
<result column="method_name" jdbcType="VARCHAR" property="methodName" />
<result column="class_name" jdbcType="VARCHAR" property="className" />
<result column="task_status" jdbcType="SMALLINT" property="taskStatus" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="version" jdbcType="BIGINT" property="version" />
<result column="del_state" jdbcType="BOOLEAN" property="delState" />
<result column="params" jdbcType="LONGVARCHAR" property="params" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="down_url" jdbcType="VARCHAR" property="downUrl" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, task_name, application_name, method_name, class_name, task_status, create_by,
update_by, create_time, update_time, version, del_state, params, remark, down_url
</sql>
</mapper>

View File

@ -16,6 +16,7 @@
<module>chushang-module-gateway</module> <module>chushang-module-gateway</module>
<module>chushang-module-system</module> <module>chushang-module-system</module>
<module>chushang-module-oss</module> <module>chushang-module-oss</module>
<module>chushang-module-task</module>
</modules> </modules>
<dependencies> <dependencies>
<!-- 链路--> <!-- 链路-->