This commit is contained in:
六如
2024-12-26 09:37:50 +08:00
parent 054560ae64
commit 150379c5f9
44 changed files with 26 additions and 1482 deletions

View File

@@ -4,5 +4,6 @@ mybatis.print-sql=true
# mysql config # mysql config
mysql.host=127.0.0.1:3306 mysql.host=127.0.0.1:3306
mysql.db=sop
mysql.username=root mysql.username=root
mysql.password=root mysql.password=root

View File

@@ -4,5 +4,6 @@ mybatis.print-sql=true
# mysql config # mysql config
mysql.host=127.0.0.1:3306 mysql.host=127.0.0.1:3306
mysql.db=sop2
mysql.username=root mysql.username=root
mysql.password=root mysql.password=root

View File

@@ -23,9 +23,9 @@ dubbo.registry.address=zookeeper://localhost:2181
####### mysql config ####### ####### mysql config #######
mysql.host=127.0.0.1:3306 mysql.host=127.0.0.1:3306
mysql.db=sop
mysql.username= mysql.username=
mysql.password= mysql.password=
mysql.db=sop
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://${mysql.host}/${mysql.db}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai spring.datasource.url=jdbc:mysql://${mysql.host}/${mysql.db}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai

View File

@@ -1,14 +1,14 @@
package com.gitee.sop.admin.common.context; package com.gitee.sop.admin.common.context;
import com.auth0.jwt.interfaces.Claim; import com.auth0.jwt.interfaces.Claim;
import com.gitee.sop.admin.common.manager.UserCacheManager;
import com.gitee.sop.admin.common.user.User;
import com.gitee.sop.admin.common.config.Configs; import com.gitee.sop.admin.common.config.Configs;
import com.gitee.sop.admin.common.enums.ConfigKeyEnum; import com.gitee.sop.admin.common.enums.ConfigKeyEnum;
import com.gitee.sop.admin.common.exception.ErrorTokenException; import com.gitee.sop.admin.common.exception.ErrorTokenException;
import com.gitee.sop.admin.common.exception.JwtErrorException; import com.gitee.sop.admin.common.exception.JwtErrorException;
import com.gitee.sop.admin.common.exception.JwtExpiredException; import com.gitee.sop.admin.common.exception.JwtExpiredException;
import com.gitee.sop.admin.common.exception.LoginFailureException; import com.gitee.sop.admin.common.exception.LoginFailureException;
import com.gitee.sop.admin.common.manager.UserCacheManager;
import com.gitee.sop.admin.common.user.User;
import com.gitee.sop.admin.common.util.JwtUtil; import com.gitee.sop.admin.common.util.JwtUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
@@ -33,7 +33,11 @@ public class UserContext {
private static Supplier<String> tokenGetter = () -> { private static Supplier<String> tokenGetter = () -> {
HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest(); ServletRequestAttributes requestAttributes = (ServletRequestAttributes) (RequestContextHolder.getRequestAttributes());
if (requestAttributes == null) {
return null;
}
HttpServletRequest request = requestAttributes.getRequest();
return getToken(request); return getToken(request);
}; };
@@ -43,7 +47,8 @@ public class UserContext {
/** /**
* 获取当前登录用户id * 获取当前登录用户id
* @return 返回id,没有返回null *
* @return 返回id, 没有返回null
*/ */
public static Long getUserId() { public static Long getUserId() {
return Optional.ofNullable(getUser()).map(User::getUserId).orElse(null); return Optional.ofNullable(getUser()).map(User::getUserId).orElse(null);
@@ -78,6 +83,9 @@ public class UserContext {
} }
public static String getToken(HttpServletRequest request) { public static String getToken(HttpServletRequest request) {
if (request == null) {
return null;
}
String token = request.getHeader(HEADER_AUTHORIZATION); String token = request.getHeader(HEADER_AUTHORIZATION);
if (StringUtils.hasText(token) && token.startsWith(JWT_PREFIX)) { if (StringUtils.hasText(token) && token.startsWith(JWT_PREFIX)) {
return token.substring(JWT_PREFIX.length()); return token.substring(JWT_PREFIX.length());

View File

@@ -10,7 +10,6 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum ConfigKeyEnum { public enum ConfigKeyEnum {
PASSWORD_SALT("admin.password-salt", ""),
JWT_TIMEOUT_DAYS("admin.jwt-timeout-days", "365"), JWT_TIMEOUT_DAYS("admin.jwt-timeout-days", "365"),
JWT_SECRET("admin.jwt.secret", ""), JWT_SECRET("admin.jwt.secret", ""),
TORNA_SERVER_ADDR("admin.torna-server-addr", ""), TORNA_SERVER_ADDR("admin.torna-server-addr", ""),

View File

@@ -24,8 +24,11 @@ public class AddByFill extends BaseFill<Long> {
@Override @Override
protected Object getFillValue(Long defaultValue) { protected Object getFillValue(Long defaultValue) {
if (defaultValue != null) {
return defaultValue;
}
User user = UserContext.getUser(); User user = UserContext.getUser();
return user != null ? user.getUserId() : defaultValue; return user != null ? user.getUserId() : 0L;
} }
@Override @Override

View File

@@ -1,80 +0,0 @@
package com.gitee.sop.admin.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名sys_admin_user
* 备注:系统用户表
*
* @author 六如
*/
@Table(name = "sys_admin_user", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysAdminUser {
/**
* id
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 用户名
*/
private String nickname;
/**
* 邮箱
*/
private String email;
/**
* 头像
*/
private String avatar;
/**
* 状态1启用2禁用
*/
private Integer status;
/**
* 注册类型1-系统2-手动
*/
private String regType;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,11 +0,0 @@
package com.gitee.sop.admin.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.admin.dao.entity.SysAdminUser;
/**
* @author 六如
*/
public interface SysAdminUserMapper extends BaseMapper<SysAdminUser> {
}

View File

@@ -2,14 +2,11 @@ package com.gitee.sop.admin.service.sys;
import com.gitee.fastmybatis.core.PageInfo; import com.gitee.fastmybatis.core.PageInfo;
import com.gitee.fastmybatis.core.query.LambdaQuery; import com.gitee.fastmybatis.core.query.LambdaQuery;
import com.gitee.sop.admin.common.config.Configs;
import com.gitee.sop.admin.common.dto.StatusUpdateBatchDTO; import com.gitee.sop.admin.common.dto.StatusUpdateBatchDTO;
import com.gitee.sop.admin.common.dto.StatusUpdateDTO; import com.gitee.sop.admin.common.dto.StatusUpdateDTO;
import com.gitee.sop.admin.common.dto.UserDTO; import com.gitee.sop.admin.common.dto.UserDTO;
import com.gitee.sop.admin.common.enums.ConfigKeyEnum;
import com.gitee.sop.admin.common.support.ServiceSupport; import com.gitee.sop.admin.common.support.ServiceSupport;
import com.gitee.sop.admin.common.util.CopyUtil; import com.gitee.sop.admin.common.util.CopyUtil;
import com.gitee.sop.admin.common.util.GenerateUtil;
import com.gitee.sop.admin.dao.entity.SysUser; import com.gitee.sop.admin.dao.entity.SysUser;
import com.gitee.sop.admin.dao.mapper.SysUserMapper; import com.gitee.sop.admin.dao.mapper.SysUserMapper;
import com.gitee.sop.admin.service.sys.dto.DeptUserResultDTO; import com.gitee.sop.admin.service.sys.dto.DeptUserResultDTO;
@@ -161,20 +158,5 @@ public class SysUserService implements ServiceSupport<SysUser, SysUserMapper> {
return this.get(SysUser::getUsername, username); return this.get(SysUser::getUsername, username);
} }
public String getDbPassword(String username, String password) {
return getDbPassword(username, password, getPasswordSalt());
}
public String getDbPassword(String username) {
return this.query().eq(SysUser::getUsername, username).getValue(SysUser::getPassword);
}
public String getDbPassword(String username, String password, String salt) {
return GenerateUtil.getUserPassword(username, password, salt);
}
private String getPasswordSalt() {
return Configs.getValue(ConfigKeyEnum.PASSWORD_SALT);
}
} }

View File

@@ -1,6 +1,7 @@
package com.gitee.sop.admin.service.sys; package com.gitee.sop.admin.service.sys;
import com.gitee.sop.admin.common.enums.ConfigKeyEnum; import com.gitee.sop.admin.common.enums.ConfigKeyEnum;
import com.gitee.sop.admin.common.enums.StatusEnum;
import com.gitee.sop.admin.common.util.PasswordUtil; import com.gitee.sop.admin.common.util.PasswordUtil;
import com.gitee.sop.admin.dao.entity.SysUser; import com.gitee.sop.admin.dao.entity.SysUser;
import com.gitee.sop.admin.dao.mapper.UpgradeMapper; import com.gitee.sop.admin.dao.mapper.UpgradeMapper;
@@ -12,6 +13,8 @@ import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.time.LocalDateTime;
/** /**
* @author 六如 * @author 六如
@@ -50,13 +53,14 @@ public class UpgradeService {
return; return;
} }
String username = "admin"; String username = "admin";
String tpl = "INSERT INTO `sys_user` ( `username`, `password`, `nickname`, `reg_type`) VALUES \n" + String tpl = "INSERT INTO `sys_user` (`id`, `username`, `password`, `nickname`, `reg_type`) VALUES \n" +
"\t('%s','%s','%s','%s');"; "\t(%s, '%s','%s','%s','%s');";
// 初始密码 // 初始密码
String defPassword = "123456"; String defPassword = "123456";
defPassword = DigestUtils.sha256Hex(defPassword); defPassword = DigestUtils.sha256Hex(defPassword);
String encodedPassword = BCrypt.hashpw(defPassword, BCrypt.gensalt()); String encodedPassword = BCrypt.hashpw(defPassword, BCrypt.gensalt());
String sql = String.format(tpl, username, encodedPassword, username, RegTypeEnum.BACKEND.getValue()); Long userId = 1L;
String sql = String.format(tpl, userId, username, encodedPassword, username, RegTypeEnum.BACKEND.getValue());
runSql(sql); runSql(sql);
} }

View File

@@ -11,7 +11,6 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum ConfigKeyEnum { public enum ConfigKeyEnum {
PASSWORD_SALT("admin.password-salt", ""),
JWT_TIMEOUT_DAYS("admin.jwt-timeout-days", "365"), JWT_TIMEOUT_DAYS("admin.jwt-timeout-days", "365"),
JWT_SECRET("admin.jwt.secret", ""), JWT_SECRET("admin.jwt.secret", ""),
TORNA_SERVER_ADDR("admin.torna-server-addr", ""), TORNA_SERVER_ADDR("admin.torna-server-addr", ""),

View File

@@ -1,111 +0,0 @@
package com.gitee.sop.website.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名api_info
* 备注:接口信息表
*
* @author 六如
*/
@Table(name = "api_info", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class ApiInfo {
/**
* id
*/
private Long id;
/**
* 所属应用
*/
private String application;
/**
* 接口名称
*/
private String apiName;
/**
* 版本号
*/
private String apiVersion;
/**
* 接口描述
*/
private String description;
/**
* 备注
*/
private String remark;
/**
* 接口class
*/
private String interfaceClassName;
/**
* 方法名称
*/
private String methodName;
/**
* 参数信息
*/
private String paramInfo;
/**
* 接口是否需要授权访问
*/
private Integer isPermission;
/**
* 是否需要appAuthToken
*/
private Integer isNeedToken;
/**
* 是否有公共响应参数
*/
private Integer hasCommonResponse;
/**
* 注册来源1-系统注册,2-手动注册
*/
private Integer regSource;
/**
* 1启用0禁用
*/
private Integer status;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,60 +0,0 @@
package com.gitee.sop.website.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名isv_info
* 备注isv信息表
*
* @author 六如
*/
@Table(name = "isv_info", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class IsvInfo {
/**
* id
*/
private Long id;
/**
* appKey
*/
private String appId;
/**
* 1启用2禁用
*/
private Integer status;
/**
* 备注
*/
private String remark;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,75 +0,0 @@
package com.gitee.sop.website.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名isv_keys
* 备注ISV秘钥管理
*
* @author 六如
*/
@Table(name = "isv_keys", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class IsvKeys {
/**
* id
*/
private Long id;
/**
* isv_info.id
*/
private Long isvId;
/**
* 秘钥格式1PKCS8(JAVA适用)2PKCS1(非JAVA适用)
*/
private Integer keyFormat;
/**
* 开发者生成的公钥
*/
private String publicKeyIsv;
/**
* 开发者生成的私钥(交给开发者)
*/
private String privateKeyIsv;
/**
* 平台生成的公钥(交给开发者)
*/
private String publicKeyPlatform;
/**
* 平台生成的私钥
*/
private String privateKeyPlatform;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,56 +0,0 @@
package com.gitee.sop.website.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名perm_group
* 备注:分组表
*
* @author 六如
*/
@Table(name = "perm_group", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class PermGroup {
/**
* id
*/
private Long id;
/**
* 分组名称
*/
private String groupName;
/**
* 是否删除
*/
@com.gitee.fastmybatis.annotation.Column(logicDelete = true)
private Integer isDeleted;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,55 +0,0 @@
package com.gitee.sop.website.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名perm_group_permission
* 备注:组权限表
*
* @author 六如
*/
@Table(name = "perm_group_permission", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class PermGroupPermission {
/**
* id
*/
private Long id;
/**
* 组id
*/
private Long groupId;
/**
* api_info.id
*/
private Long apiId;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,46 +0,0 @@
package com.gitee.sop.website.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名perm_isv_group
* 备注isv分组
*
* @author 六如
*/
@Table(name = "perm_isv_group", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class PermIsvGroup {
private Long id;
/**
* isv_info表id
*/
private Long isvId;
/**
* 组id
*/
private Long groupId;
private LocalDateTime addTime;
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,80 +0,0 @@
package com.gitee.sop.website.dao.entity;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名sys_admin_user
* 备注:系统用户表
*
* @author 六如
*/
@Table(name = "sys_admin_user", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysAdminUser {
/**
* id
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 用户名
*/
private String nickname;
/**
* 邮箱
*/
private String email;
/**
* 头像
*/
private String avatar;
/**
* 状态1启用2禁用
*/
private Integer status;
/**
* 注册类型1-系统2-手动
*/
private String regType;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 最后更新人id
*/
private Long updateBy;
}

View File

@@ -1,73 +0,0 @@
package com.gitee.sop.website.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
/**
* 表名sys_dept
* 备注:部门表
*
* @author 六如
*/
@Table(name = "sys_dept", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysDept {
/**
* id
*/
private Long id;
/**
* 部门名称
*/
private String name;
/**
* 排序
*/
private Integer sort;
/**
* 状态1启用2禁用
*/
private Integer status;
/**
* 备注
*/
private String remark;
/**
* 父级id
*/
private Long parentId;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 修改人id
*/
private Long updateBy;
}

View File

@@ -1,159 +0,0 @@
package com.gitee.sop.website.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
/**
* 表名sys_resource
* 备注:菜单资源表
*
* @author 六如
*/
@Table(name = "sys_resource", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysResource {
/**
* id
*/
private Long id;
/**
* 菜单类型0代表菜单、1代表iframe、2代表外链、3代表按钮
*/
private Integer menuType;
/**
* 菜单名称
*/
private String title;
/**
* 路由名称
*/
private String name;
/**
* 路由路径
*/
private String path;
/**
* 路由路径
*/
private String component;
/**
* 排序
*/
private Integer rank;
/**
* 路由重定向
*/
private String redirect;
/**
* 菜单图标
*/
private String icon;
/**
* 右侧图标
*/
private String extraIcon;
/**
* 进场动画(页面加载动画)
*/
private String enterTransition;
/**
* 离场动画(页面加载动画)
*/
private String leaveTransition;
/**
* 菜单激活
*/
private String activePath;
/**
* 权限标识
*/
private String auths;
/**
* 链接地址(需要内嵌的`iframe`链接地址)
*/
private String frameSrc;
/**
* 加载动画(内嵌的`iframe`页面是否开启首次加载动画)
*/
private Integer frameLoading;
/**
* 缓存页面
*/
private Integer keepAlive;
/**
* 标签页(当前菜单名称或自定义信息禁止添加到标签页)
*/
private Integer hiddenTag;
/**
* 固定标签页(当前菜单名称是否固定显示在标签页且不可关闭)
*/
private Integer fixedTag;
/**
* 菜单(是否显示该菜单)
*/
private Integer showLink;
/**
* 父级菜单(是否显示父级菜单
*/
private Integer showParent;
/**
* 父级id
*/
private Long parentId;
/**
* 是否删除
*/
@com.gitee.fastmybatis.annotation.Column(logicDelete = true)
private Integer isDeleted;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 修改人id
*/
private Long updateBy;
}

View File

@@ -1,71 +0,0 @@
package com.gitee.sop.website.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
/**
* 表名sys_role
* 备注:角色表
*
* @author 六如
*/
@Table(name = "sys_role", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysRole {
/**
* id
*/
private Long id;
/**
* 角色名称
*/
private String name;
/**
* 角色code
*/
private String code;
/**
* 备注
*/
private String remark;
/**
* 状态1启用2禁用
*/
private Integer status;
@com.gitee.fastmybatis.annotation.Column(logicDelete = true)
private Integer isDeleted;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 修改人id
*/
private Long updateBy;
}

View File

@@ -1,58 +0,0 @@
package com.gitee.sop.website.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
/**
* 表名sys_role_resource
* 备注:角色资源关联表
*
* @author 六如
*/
@Table(name = "sys_role_resource", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysRoleResource {
/**
* id
*/
private Long id;
/**
* sys_role.id
*/
private Long roleId;
/**
* sys_resource.id
*/
private Long resourceId;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 修改人id
*/
private Long updateBy;
}

View File

@@ -1,98 +0,0 @@
package com.gitee.sop.website.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
/**
* 表名sys_user
* 备注:系统用户表
*
* @author 六如
*/
@Table(name = "sys_user", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysUser {
/**
* id
*/
private Long id;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 昵称
*/
private String nickname;
/**
* 邮箱
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 头像
*/
private String avatar;
/**
* 性别,0-未知,1-男,2-女
*/
private Integer gender;
/**
* 状态1启用2禁用
*/
private Integer status;
/**
* 注册类型1-系统2-手动
*/
private String regType;
/**
* 备注
*/
private String remark;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 修改人id
*/
private Long updateBy;
}

View File

@@ -1,58 +0,0 @@
package com.gitee.sop.website.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
/**
* 表名sys_user_dept
* 备注:用户部门关联表
*
* @author 六如
*/
@Table(name = "sys_user_dept", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysUserDept {
/**
* id
*/
private Long id;
/**
* sys_user.id
*/
private Long userId;
/**
* sys_dept.id
*/
private Long deptId;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 修改人id
*/
private Long updateBy;
}

View File

@@ -1,58 +0,0 @@
package com.gitee.sop.website.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
/**
* 表名sys_user_role
* 备注:用户角色关联表
*
* @author 六如
*/
@Table(name = "sys_user_role", pk = @Pk(name = "id", strategy = PkStrategy.INCREMENT))
@Data
public class SysUserRole {
/**
* id
*/
private Long id;
/**
* sys_role.id
*/
private Long roleId;
/**
* sys_user.id
*/
private Long userId;
/**
* 添加时间
*/
private LocalDateTime addTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
* 创建人id
*/
private Long addBy;
/**
* 修改人id
*/
private Long updateBy;
}

View File

@@ -1,21 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.ApiInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface ApiInfoMapper extends BaseMapper<ApiInfo> {
default ApiInfo getByNameVersion(String apiName, String apiVersion) {
return this.query()
.eq(ApiInfo::getApiName, apiName)
.eq(ApiInfo::getApiVersion, apiVersion)
.get();
}
}

View File

@@ -9,9 +9,4 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface DocAppMapper extends BaseMapper<DocApp> { public interface DocAppMapper extends BaseMapper<DocApp> {
default String getToken(Long id) {
return this.query()
.eq(DocApp::getId, id)
.getValue(DocApp::getToken);
}
} }

View File

@@ -1,17 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.IsvInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface IsvInfoMapper extends BaseMapper<IsvInfo> {
default IsvInfo getByAppId(String appId) {
return this.get(IsvInfo::getAppId, appId);
}
}

View File

@@ -1,15 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.IsvKeys;
/**
* @author 六如
*/
public interface IsvKeysMapper extends BaseMapper<IsvKeys> {
default IsvKeys getByIsvInfoId(Long isvId) {
return this.get(IsvKeys::getIsvId, isvId);
}
}

View File

@@ -1,11 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.PermGroup;
/**
* @author 六如
*/
public interface PermGroupMapper extends BaseMapper<PermGroup> {
}

View File

@@ -1,11 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.PermGroupPermission;
/**
* @author 六如
*/
public interface PermGroupPermissionMapper extends BaseMapper<PermGroupPermission> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.PermIsvGroup;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface PermIsvGroupMapper extends BaseMapper<PermIsvGroup> {
}

View File

@@ -1,11 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysAdminUser;
/**
* @author 六如
*/
public interface SysAdminUserMapper extends BaseMapper<SysAdminUser> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysDept;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface SysDeptMapper extends BaseMapper<SysDept> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysResource;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface SysResourceMapper extends BaseMapper<SysResource> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysRole;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface SysRoleMapper extends BaseMapper<SysRole> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysRoleResource;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface SysRoleResourceMapper extends BaseMapper<SysRoleResource> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysUserDept;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface SysUserDeptMapper extends BaseMapper<SysUserDept> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysUser;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
}

View File

@@ -1,13 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.website.dao.entity.SysUserRole;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
}

View File

@@ -1,27 +0,0 @@
package com.gitee.sop.website.dao.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author tanghc
*/
@Mapper
public interface UpgradeMapper {
void runSql(@Param("sql") String sql);
/**
* 查看MYSQL表字段信息
* @param tableName 表名
* @return 返回字段信息
*/
List<Map<String, Object>> listColumnInfo(@Param("tableName") String tableName);
List<String> listTableName();
List<Map<String, Object>> listTableIndex(@Param("tableName") String tableName);
}

View File

@@ -1,22 +0,0 @@
<?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.gitee.sop.adminbackend.dao.mapper.UpgradeMapper">
<update id="runSql">
${sql}
</update>
<select id="listColumnInfo" resultType="java.util.Map">
SHOW COLUMNS FROM ${tableName}
</select>
<select id="listTableName" resultType="String">
SHOW TABLES
</select>
<select id="listTableIndex" resultType="java.util.Map">
show index from ${tableName}
</select>
</mapper>

View File

@@ -2,10 +2,8 @@ package com.gitee.sop.website.service.sys;
import com.gitee.fastmybatis.core.support.BaseLambdaService; import com.gitee.fastmybatis.core.support.BaseLambdaService;
import com.gitee.sop.website.common.config.IConfig; import com.gitee.sop.website.common.config.IConfig;
import com.gitee.sop.website.common.util.CopyUtil;
import com.gitee.sop.website.dao.entity.SysConfig; import com.gitee.sop.website.dao.entity.SysConfig;
import com.gitee.sop.website.dao.mapper.SysConfigMapper; import com.gitee.sop.website.dao.mapper.SysConfigMapper;
import com.gitee.sop.website.service.sys.dto.SystemConfigDTO;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
@@ -13,7 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -37,41 +34,6 @@ public class SysConfigService extends BaseLambdaService<SysConfig, SysConfigMapp
} }
}); });
public void save(Collection<SystemConfigDTO> configs) {
configs.forEach(this::setConfig);
}
public String getRawValue(String key) {
return this.query()
.eq(SysConfig::getConfigKey, key)
.getValue(SysConfig::getConfigValue);
}
public void setConfig(String key, String value) {
setConfig(key, value, "");
}
public void setConfig(String key, String value, String remark) {
SystemConfigDTO systemConfigDTO = new SystemConfigDTO();
systemConfigDTO.setConfigKey(key);
systemConfigDTO.setConfigValue(value);
systemConfigDTO.setRemark(remark);
setConfig(systemConfigDTO);
}
public void setConfig(SystemConfigDTO systemConfigDTO) {
Objects.requireNonNull(systemConfigDTO.getConfigKey(), "need key");
Objects.requireNonNull(systemConfigDTO.getConfigValue(), "need value");
SysConfig systemConfig = get(SysConfig::getConfigKey, systemConfigDTO.getConfigKey());
if (systemConfig == null) {
systemConfig = CopyUtil.copyBean(systemConfigDTO, SysConfig::new);
this.save(systemConfig);
} else {
CopyUtil.copyPropertiesIgnoreNull(systemConfigDTO, systemConfig);
this.update(systemConfig);
}
configCache.invalidate(systemConfigDTO.getConfigKey());
}
/** /**
* 获取配置信息 * 获取配置信息

22
sop.sql
View File

@@ -133,23 +133,6 @@ CREATE TABLE `perm_isv_group` (
UNIQUE KEY `uk_isvid_groupid` (`isv_id`,`group_id`) USING BTREE UNIQUE KEY `uk_isvid_groupid` (`isv_id`,`group_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=13 COMMENT='isv分组'; ) ENGINE=InnoDB AUTO_INCREMENT=13 COMMENT='isv分组';
CREATE TABLE `sys_admin_user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`username` varchar(128) NOT NULL DEFAULT '' COMMENT '用户名',
`password` varchar(128) NOT NULL DEFAULT '' COMMENT '密码',
`nickname` varchar(64) NOT NULL DEFAULT '' COMMENT '用户名',
`email` varchar(128) NOT NULL DEFAULT '' COMMENT '邮箱',
`avatar` varchar(128) NOT NULL DEFAULT '' COMMENT '头像',
`status` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '状态1启用2禁用',
`reg_type` varchar(32) NOT NULL DEFAULT '1' COMMENT '注册类型1-系统2-手动',
`add_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`add_by` bigint(20) DEFAULT '0' COMMENT '创建人id',
`update_by` bigint(20) DEFAULT '0' COMMENT '修改人id',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 COMMENT='系统用户表';
CREATE TABLE `sys_config` ( CREATE TABLE `sys_config` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`config_key` varchar(64) NOT NULL DEFAULT '' COMMENT '配置key', `config_key` varchar(64) NOT NULL DEFAULT '' COMMENT '配置key',
@@ -351,12 +334,8 @@ INSERT INTO `perm_isv_group` (`id`, `isv_id`, `group_id`, `add_time`, `update_ti
(11, 2, 1, '2024-10-25 20:25:41', '2024-10-25 20:25:41', 0, 0), (11, 2, 1, '2024-10-25 20:25:41', '2024-10-25 20:25:41', 0, 0),
(12, 1, 1, '2024-12-22 07:40:38', '2024-12-22 07:40:38', 0, 0); (12, 1, 1, '2024-12-22 07:40:38', '2024-12-22 07:40:38', 0, 0);
INSERT INTO `sys_admin_user` (`id`, `username`, `password`, `nickname`, `email`, `avatar`, `status`, `reg_type`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(1, 'admin', '$2a$10$6LWUuQQ8V/rszLo50.qrsuBlNmbYY/q2KSC1BmrxxN5czvOxmF3qK', 'admin', '', '', 1, 'backend', '2024-10-03 08:37:03', '2024-10-03 19:08:48', 0, 0);
INSERT INTO `sys_config` (`id`, `config_key`, `config_value`, `remark`, `is_deleted`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `sys_config` (`id`, `config_key`, `config_value`, `remark`, `is_deleted`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(1, 'admin.jwt.secret', 'UXJC8R3NmAvj9kFKWwBgYu6y3naXh7', '', 0, '2024-10-02 21:20:41', '2024-10-02 21:20:41', 0, 0),
(2, 'admin.password-salt', 'Khq9RnXZCGsWz', '', 0, '2024-10-02 21:20:41', '2024-10-02 21:20:41', 0, 0),
(3, 'admin.torna-url', '2', 'Torna服务器地址', 0, '2024-11-19 22:21:07', '2024-11-19 22:25:22', 1, 1), (3, 'admin.torna-url', '2', 'Torna服务器地址', 0, '2024-11-19 22:21:07', '2024-11-19 22:25:22', 1, 1),
(4, 'admin.open-prod-url', 'https://open.xxx.com/api', '开放平台线上地址', 0, '2024-11-19 22:21:07', '2024-12-21 14:37:31', 1, 1), (4, 'admin.open-prod-url', 'https://open.xxx.com/api', '开放平台线上地址', 0, '2024-11-19 22:21:07', '2024-12-21 14:37:31', 1, 1),
(5, 'admin.open-sandbox-url', 'https://open-sandbox.xxx.com/api', '开放平台沙箱地址', 0, '2024-11-19 22:21:07', '2024-12-21 14:37:32', 1, 1), (5, 'admin.open-sandbox-url', 'https://open-sandbox.xxx.com/api', '开放平台沙箱地址', 0, '2024-11-19 22:21:07', '2024-12-21 14:37:32', 1, 1),
@@ -438,7 +417,6 @@ INSERT INTO `sys_role_resource` (`id`, `role_id`, `resource_id`, `add_time`, `up
(108, 3, 20, '2024-12-19 11:50:13', '2024-12-19 11:50:13', 1, 1); (108, 3, 20, '2024-12-19 11:50:13', '2024-12-19 11:50:13', 1, 1);
INSERT INTO `sys_user` (`id`, `username`, `password`, `nickname`, `phone`, `email`, `avatar`, `gender`, `status`, `reg_type`, `remark`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES INSERT INTO `sys_user` (`id`, `username`, `password`, `nickname`, `phone`, `email`, `avatar`, `gender`, `status`, `reg_type`, `remark`, `add_time`, `update_time`, `add_by`, `update_by`) VALUES
(1, 'admin', '$2a$10$vx5WzzoQbryhC6gdV5fXfu6pykE3969tuax1cH.3ADfxrimaho1tO', 'admin', '', '', '', 1, 1, 'backend', '', '2024-12-12 10:11:19', '2024-12-12 12:25:50', 0, 1),
(2, 'jim', '$2a$10$LIw8h1oewg9ORK8ikYBRQ.HXchLcxSyPvNaNV6QBP2IXKsf33kJJy', 'jim', '', '', '', 0, 1, 'backend', '', '2024-12-12 12:07:33', '2024-12-20 19:59:48', 1, 1), (2, 'jim', '$2a$10$LIw8h1oewg9ORK8ikYBRQ.HXchLcxSyPvNaNV6QBP2IXKsf33kJJy', 'jim', '', '', '', 0, 1, 'backend', '', '2024-12-12 12:07:33', '2024-12-20 19:59:48', 1, 1),
(3, 'tom', '$2a$10$0drvKbiVDxZ/.zeVqyYcCOucWZs2uWx6KPDu56ddvzCAF.BmEgG06', 'tom', '', '', '', 1, 1, 'backend', '', '2024-12-12 21:51:16', '2024-12-19 09:56:52', 1, 1); (3, 'tom', '$2a$10$0drvKbiVDxZ/.zeVqyYcCOucWZs2uWx6KPDu56ddvzCAF.BmEgG06', 'tom', '', '', '', 1, 1, 'backend', '', '2024-12-12 21:51:16', '2024-12-19 09:56:52', 1, 1);