作者 钟来

模块整理

正在显示 100 个修改的文件 包含 463 行增加479 行删除

要显示太多修改。

为保证性能只显示 100 of 100+ 个文件。

... ... @@ -12,29 +12,9 @@
<artifactId>lh-central-control</artifactId>
<dependencies>
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
<!-- Spring框架基本的核心工具 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- 系统模块-->
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>ruoyi-common-redis</artifactId>
</dependency>
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-domain</artifactId>
<artifactId>lh-jar-device-service</artifactId>
</dependency>
</dependencies>
... ...
... ... @@ -5,7 +5,7 @@ import com.ruoyi.common.core.domain.Message;
import com.ruoyi.common.core.domain.MessageCode;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.html.HttpUtils;
import com.ruoyi.system.domain.iot.IotDevice;
import com.zhonglai.luhui.device.domain.IotDevice;
import com.zhonglai.luhui.redis.service.RedisCache;
import okhttp3.Response;
import org.springframework.beans.factory.annotation.Autowired;
... ...
package com.ruoyi.system.domain.entity;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
... ... @@ -15,6 +16,7 @@ import javax.validation.constraints.Size;
*/
public class SysDictData extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 字典编码 */
... ...
package com.ruoyi.system.domain.entity; import javax.validation.constraints.NotBlank;import javax.validation.constraints.Size; import com.ruoyi.common.annotation.Excel;import org.apache.commons.lang3.builder.ToStringBuilder;import org.apache.commons.lang3.builder.ToStringStyle;import com.ruoyi.common.tool.BaseEntity; /** * 字典类型表 sys_dict_type * * @author ruoyi */public class SysDictType extends BaseEntity{ private static final long serialVersionUID = 1L; /** 字典主键 */ @Excel(name = "字典主键", cellType = Excel.ColumnType.NUMERIC) private Long dictId; /** 字典名称 */ @Excel(name = "字典名称") private String dictName; /** 字典类型 */ @Excel(name = "字典类型") private String dictType; /** 状态(0正常 1停用) */ @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; public Long getDictId() { return dictId; } public void setDictId(Long dictId) { this.dictId = dictId; } @NotBlank(message = "字典名称不能为空") @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符") public String getDictName() { return dictName; } public void setDictName(String dictName) { this.dictName = dictName; } @NotBlank(message = "字典类型不能为空") @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符") public String getDictType() { return dictType; } public void setDictType(String dictType) { this.dictType = dictType; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("dictId", getDictId()) .append("dictName", getDictName()) .append("dictType", getDictType()) .append("status", getStatus()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .toString(); }}
\ No newline at end of file
package com.ruoyi.system.domain.entity; import javax.validation.constraints.NotBlank;import javax.validation.constraints.Size; import com.ruoyi.common.annotation.Excel;import com.ruoyi.common.annotation.PublicSQLConfig;import org.apache.commons.lang3.builder.ToStringBuilder;import org.apache.commons.lang3.builder.ToStringStyle;import com.ruoyi.common.tool.BaseEntity; /** * 字典类型表 sys_dict_type * * @author ruoyi */public class SysDictType extends BaseEntity{ @PublicSQLConfig(isSelect=false) private static final long serialVersionUID = 1L; /** 字典主键 */ @Excel(name = "字典主键", cellType = Excel.ColumnType.NUMERIC) private Long dictId; /** 字典名称 */ @Excel(name = "字典名称") private String dictName; /** 字典类型 */ @Excel(name = "字典类型") private String dictType; /** 状态(0正常 1停用) */ @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; public Long getDictId() { return dictId; } public void setDictId(Long dictId) { this.dictId = dictId; } @NotBlank(message = "字典名称不能为空") @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符") public String getDictName() { return dictName; } public void setDictName(String dictName) { this.dictName = dictName; } @NotBlank(message = "字典类型不能为空") @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符") public String getDictType() { return dictType; } public void setDictType(String dictType) { this.dictType = dictType; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("dictId", getDictId()) .append("dictName", getDictName()) .append("dictType", getDictType()) .append("status", getStatus()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .toString(); }}
\ No newline at end of file
... ...
package com.ruoyi.system.domain.entity;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
... ... @@ -15,6 +16,7 @@ import javax.validation.constraints.Size;
*/
public class SysRole extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 角色ID */
... ...
... ... @@ -6,6 +6,7 @@ import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.annotation.Excel.Type;
import com.ruoyi.common.annotation.Excels;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.utils.xss.Xss;
import com.ruoyi.common.tool.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
... ... @@ -24,6 +25,7 @@ import java.util.List;
*/
public class SysUser extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 用户ID */
... ...
... ... @@ -202,14 +202,10 @@ public class PublicSQL {
{
Object object = para.get("object");
String whereFieldNames = (String) para.get("whereFieldNames");
if( null != para.get("tablename"))
{
}
String tableName = (String) para.get("tablename");
if(null == tableName)
String tableName = changTableNameFromObject(object);
if(para.containsKey("tablename"))
{
tableName = changTableNameFromObject(object);
tableName = (String) para.get("tablename");
}
String sql = "update ";
sql += tableName;
... ...
... ... @@ -4,6 +4,7 @@ import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
... ... @@ -21,6 +22,7 @@ import com.ruoyi.quartz.util.CronUtils;
*/
public class SysJob extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 任务ID */
... ...
... ... @@ -3,6 +3,7 @@ package com.ruoyi.quartz.domain;
import java.util.Date;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
... ... @@ -14,6 +15,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
*/
public class SysJobLog extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** ID */
... ...
... ... @@ -27,12 +27,10 @@
<module>lh-quartz</module>
<module>ruoyi-auth</module>
<module>ruoyi-common</module>
<module>ruoyi-common-core</module>
<module>ruoyi-common-redis</module>
<module>ruoyi-common-security</module>
<module>ruoyi-framework</module>
<module>ruoyi-generator</module>
<module>ruoyi-system</module>
</modules>
<packaging>pom</packaging>
... ...
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-common</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>ruoyi-common-core</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
\ No newline at end of file
package com.zhonglai.luhui;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
\ No newline at end of file
package com.zhonglai.luhui.security.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true, securedEnabled = true)
@EnableWebSecurity
@ConditionalOnClass(WebSecurityConfigurerAdapter.class)
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
public class CustomSpringBootWebSecurityConfiguration {
}
... ...
package com.zhonglai.luhui.security.config;
import com.ruoyi.common.tool.SysLogininforType;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder;
/**
* spring security配置
*
* @author ruoyi
*/
public abstract class DefaultSecurityConfig extends WebSecurityConfigurerAdapter
{
/**
* 解决 无法直接注入 AuthenticationManager
*
* @return
* @throws Exception
*/
@Override
public AuthenticationManager authenticationManagerBean() throws Exception
{
return super.authenticationManagerBean();
}
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
}
/**
* anyRequest | 匹配所有请求路径
* access | SpringEl表达式结果为true时可以访问
* anonymous | 匿名可以访问
* denyAll | 用户不能访问
* fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录)
* hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问
* hasAnyRole | 如果有参数,参数表示角色,则其中任何一个角色可以访问
* hasAuthority | 如果有参数,参数表示权限,则其权限可以访问
* hasIpAddress | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问
* hasRole | 如果有参数,参数表示角色,则其角色可以访问
* permitAll | 用户可以任意访问
* rememberMe | 允许通过remember-me登录的用户访问
* authenticated | 用户登录后可访问
*/
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception
{
configHttpSecurity(httpSecurity);
}
/**
* 身份认证接口
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.userDetailsService(getUserDetailsService()).passwordEncoder(bCryptPasswordEncoder());
}
/**
* 自定义用户认证逻辑
*/
public abstract UserDetailsService getUserDetailsService();
public abstract void configHttpSecurity(HttpSecurity httpSecurity) throws Exception;
public abstract PasswordEncoder bCryptPasswordEncoder();
public abstract SysLogininforType sysLogininforType();
}
... ...
package com.zhonglai.luhui.security.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.BaseEntity;
import java.util.ArrayList;
... ... @@ -13,6 +14,7 @@ import java.util.List;
*/
public class TreeEntity extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 父菜单名称 */
... ...
package com.zhonglai.luhui.security.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.system.domain.entity.SysDept;
import com.ruoyi.system.domain.entity.SysMenu;
... ... @@ -15,6 +16,7 @@ import java.util.stream.Collectors;
*/
public class TreeSelect implements Serializable
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 节点ID */
... ...
package com.zhonglai.luhui.security.dto;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.utils.DESUtil;
import com.ruoyi.common.tool.SysLogininforType;
import com.zhonglai.luhui.security.utils.SecurityUtils;
... ... @@ -8,6 +9,7 @@ import org.springframework.security.core.GrantedAuthority;
import java.util.Collection;
public class ApiLoginUser extends BaseLoginUser {
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = -2519976444812946707L;
private Yu2leUserInfo yu2leUserInfo;
private Yu2leUserLogin yu2leUserLogin;
... ...
package com.zhonglai.luhui.security.dto;
import com.ruoyi.common.tool.SysLogininforType;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public abstract class BaseLoginUser implements UserDetails {
/**
... ... @@ -47,7 +53,7 @@ public abstract class BaseLoginUser implements UserDetails {
/**
* 浏览器类型
*/
private SysLogininforType sysLogininforType;
protected SysLogininforType sysLogininforType;
public Long getUserId() {
return userId;
... ... @@ -119,7 +125,8 @@ public abstract class BaseLoginUser implements UserDetails {
return sysLogininforType;
}
public void setSysLogininforType(SysLogininforType sysLogininforType) {
public BaseLoginUser setSysLogininforType(SysLogininforType sysLogininforType) {
this.sysLogininforType = sysLogininforType;
return this;
}
}
... ...
... ... @@ -5,8 +5,11 @@ import com.ruoyi.system.domain.entity.SysUser;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.SysLogininforType;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
... ... @@ -91,6 +94,11 @@ public class SysLoginUser extends BaseLoginUser
this.permissions = permissions;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@JSONField(serialize = false)
public String getPassword()
{
... ... @@ -165,9 +173,5 @@ public class SysLoginUser extends BaseLoginUser
this.user = user;
}
public Collection<? extends GrantedAuthority> getAuthorities()
{
return null;
}
}
... ...
package com.zhonglai.luhui.security.dto;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.utils.DESUtil;
import com.ruoyi.common.utils.DateUtils;
... ... @@ -10,6 +11,7 @@ import java.io.Serializable;
* 登录令牌
*/
public class Yu2leLoginToken implements Serializable {
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = -8696564127500370479L;
private Integer userId; //当前用户id
private String userLoginName; //当前用户登录名
... ...
package com.zhonglai.luhui.security.handle;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.ServletUtils;
... ... @@ -22,6 +23,7 @@ import java.io.Serializable;
@Component
public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, Serializable
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = -8970718410437077606L;
@Override
... ...
... ... @@ -7,8 +7,8 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.zhonglai.luhui.security.dto.BaseLoginUser;
import com.zhonglai.luhui.security.manager.AsyncManager;
import com.zhonglai.luhui.security.manager.factory.AsyncFactory;
import com.zhonglai.luhui.sys.manager.AsyncManager;
import com.zhonglai.luhui.sys.manager.factory.AsyncFactory;
import com.zhonglai.luhui.security.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
... ... @@ -48,4 +48,5 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler
}
ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(HttpStatus.SUCCESS, "退出成功")));
}
}
... ...
package com.zhonglai.luhui.security.service;
import com.ruoyi.common.enums.UserStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.tool.SysLogininforType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.entity.SysUser;
import com.zhonglai.luhui.security.dto.SysLoginUser;
import com.zhonglai.luhui.sys.service.ISysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
/**
* 用户验证处理
*
* @author ruoyi
*/
@Service
public class AdminDetailsServiceImpl implements UserDetailsService
{
private static final Logger log = LoggerFactory.getLogger(AdminDetailsServiceImpl.class);
@Autowired
private ISysUserService userService;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
{
SysUser user = userService.selectUserByUserName(username);
if (StringUtils.isNull(user))
{
log.info("登录用户:{} 不存在.", username);
throw new ServiceException("登录用户:" + username + " 不存在");
}
else if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
{
log.info("登录用户:{} 已被删除.", username);
throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
}
else if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
{
log.info("登录用户:{} 已被停用.", username);
throw new ServiceException("对不起,您的账号:" + username + " 已停用");
}
return createLoginUser(user);
}
public UserDetails createLoginUser(SysUser user)
{
return new SysLoginUser(user.getUserId(), user.getDeptId(), user,null).setSysLogininforType(SysLogininforType.lhAdmin);
}
}
... ...
package com.zhonglai.luhui.security.service;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.tool.SysLogininforType;
import com.ruoyi.common.utils.StringUtils;
import com.zhonglai.luhui.dao.service.PublicService;
import com.zhonglai.luhui.security.dto.ApiLoginUser;
import com.zhonglai.luhui.security.dto.Yu2leUserInfo;
import com.zhonglai.luhui.security.dto.Yu2leUserLogin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
/**
* 用户验证处理
*
* @author ruoyi
*/
@Service
public class ApiDetailsServiceImpl implements UserDetailsService
{
private static final Logger log = LoggerFactory.getLogger(ApiDetailsServiceImpl.class);
@Autowired
private PublicService publicService;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Yu2leUserLogin yu2leUserLogin = publicService.getObjectForTableName(Yu2leUserLogin.class,"loginName",username,"`liu_yu_le`.`user_login`");
Yu2leUserInfo yu2leUserInfo = publicService.getObjectForTableName(Yu2leUserInfo.class,"loginName",username,"`liu_yu_le`.`user_info`");;
if (StringUtils.isNull(yu2leUserLogin) || StringUtils.isNull(yu2leUserInfo))
{
log.info("登录用户:{} 不存在.", username);
throw new ServiceException("登录用户:" + username + " 不存在");
}
else if (1==yu2leUserInfo.getIsInvalid())
{
log.info("登录用户:{} 已被停用.", username);
throw new ServiceException("对不起,您的账号:" + username + " 已停用");
}
return new ApiLoginUser(yu2leUserInfo, yu2leUserLogin).setSysLogininforType(SysLogininforType.lhApi);
}
}
... ...
package com.zhonglai.luhui.security.service;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.InternalAuthenticationServiceException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsPasswordService;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.util.Assert;
import java.util.Map;
public class CustomAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider {
/**
* The plaintext password used to perform PasswordEncoder#matches(CharSequence,
* String)} on when the user is not found to avoid SEC-2056.
*/
private static final String USER_NOT_FOUND_PASSWORD = "userNotFoundPassword";
private PasswordEncoder passwordEncoder;
/**
* The password used to perform {@link PasswordEncoder#matches(CharSequence, String)}
* on when the user is not found to avoid SEC-2056. This is necessary, because some
* {@link PasswordEncoder} implementations will short circuit if the password is not
* in a valid format.
*/
private volatile String userNotFoundEncodedPassword;
private CustomUserDetailsService userDetailsService;
private UserDetailsPasswordService userDetailsPasswordService;
public CustomAuthenticationProvider() {
setPasswordEncoder(PasswordEncoderFactories.createDelegatingPasswordEncoder());
}
@Override
@SuppressWarnings("deprecation")
protected void additionalAuthenticationChecks(UserDetails userDetails,
UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {
if (authentication.getCredentials() == null) {
this.logger.debug("Failed to authenticate since no credentials provided");
throw new BadCredentialsException(this.messages
.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
}
String presentedPassword = authentication.getCredentials().toString();
if (!this.passwordEncoder.matches(presentedPassword, userDetails.getPassword())) {
this.logger.debug("Failed to authenticate since password does not match stored value");
throw new BadCredentialsException(this.messages
.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
}
}
@Override
protected void doAfterPropertiesSet() {
Assert.notNull(this.userDetailsService, "A UserDetailsService must be set");
}
@Override
protected final UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication)
throws AuthenticationException {
this.prepareTimingAttackProtection();
Map<String,String> map = (Map<String, String>) authentication.getDetails(); // 自定义添加
try {
String userType = map.get("userType"); // 自定义添加
UserDetails loadedUser = this.getUserDetailsService().loadUserByUsername(username, userType); // 自定义添加userType参数
if (loadedUser == null) {
throw new InternalAuthenticationServiceException("UserDetailsService returned null, which is an interface contract violation");
} else {
return loadedUser;
}
} catch (UsernameNotFoundException var4) {
this.mitigateAgainstTimingAttack(authentication);
throw var4;
} catch (InternalAuthenticationServiceException var5) {
throw var5;
} catch (Exception var6) {
throw new InternalAuthenticationServiceException(var6.getMessage(), var6);
}
}
@Override
protected Authentication createSuccessAuthentication(Object principal, Authentication authentication,
UserDetails user) {
boolean upgradeEncoding = this.userDetailsPasswordService != null
&& this.passwordEncoder.upgradeEncoding(user.getPassword());
if (upgradeEncoding) {
String presentedPassword = authentication.getCredentials().toString();
String newPassword = this.passwordEncoder.encode(presentedPassword);
user = this.userDetailsPasswordService.updatePassword(user, newPassword);
}
return super.createSuccessAuthentication(principal, authentication, user);
}
private void prepareTimingAttackProtection() {
if (this.userNotFoundEncodedPassword == null) {
this.userNotFoundEncodedPassword = this.passwordEncoder.encode(USER_NOT_FOUND_PASSWORD);
}
}
private void mitigateAgainstTimingAttack(UsernamePasswordAuthenticationToken authentication) {
if (authentication.getCredentials() != null) {
String presentedPassword = authentication.getCredentials().toString();
this.passwordEncoder.matches(presentedPassword, this.userNotFoundEncodedPassword);
}
}
/**
* Sets the PasswordEncoder instance to be used to encode and validate passwords. If
* not set, the password will be compared using
* {@link PasswordEncoderFactories#createDelegatingPasswordEncoder()}
* @param passwordEncoder must be an instance of one of the {@code PasswordEncoder}
* types.
*/
public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
Assert.notNull(passwordEncoder, "passwordEncoder cannot be null");
this.passwordEncoder = passwordEncoder;
this.userNotFoundEncodedPassword = null;
}
protected PasswordEncoder getPasswordEncoder() {
return this.passwordEncoder;
}
public void setUserDetailsService(CustomUserDetailsService userDetailsService) {
this.userDetailsService = userDetailsService;
}
protected CustomUserDetailsService getUserDetailsService() {
return this.userDetailsService;
}
public void setUserDetailsPasswordService(UserDetailsPasswordService userDetailsPasswordService) {
this.userDetailsPasswordService = userDetailsPasswordService;
}
}
package com.zhonglai.luhui.security.service;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
public interface CustomUserDetailsService extends UserDetailsService {
UserDetails loadUserByUsername(String username, String usertype) throws UsernameNotFoundException;
}
package com.zhonglai.luhui.security.config;
package com.zhonglai.luhui.security.service;
import com.ruoyi.common.tool.SysLogininforType;
import com.zhonglai.luhui.security.filter.JwtAuthenticationTokenFilter;
import com.zhonglai.luhui.security.handle.AuthenticationEntryPointImpl;
import com.zhonglai.luhui.security.handle.LogoutSuccessHandlerImpl;
import com.zhonglai.luhui.security.service.CustomAuthenticationProvider;
import com.zhonglai.luhui.security.service.CustomUserDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.LogoutFilter;
import org.springframework.stereotype.Service;
import org.springframework.web.filter.CorsFilter;
/**
* spring security配置
*
* @author ruoyi
*/
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
/**
* 自定义用户认证逻辑
*/
@Autowired
private CustomUserDetailsService userDetailsService;
import javax.servlet.*;
import java.io.IOException;
@Service
public class SecurityConfigService {
/**
* 认证失败处理类
*/
... ... @@ -43,59 +30,41 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
private AuthenticationEntryPointImpl unauthorizedHandler;
/**
* 退出处理类
*/
@Autowired
private LogoutSuccessHandlerImpl logoutSuccessHandler;
/**
* token认证过滤器
*/
@Autowired
private JwtAuthenticationTokenFilter authenticationTokenFilter;
/**
* 跨域过滤器
*/
@Autowired
private CorsFilter corsFilter;
/**
* 退出处理类
*/
@Autowired
private LogoutSuccessHandlerImpl logoutSuccessHandler;
/**
* 不拦截url
*/
@Value("${sys.antMatchers}")
private String antMatchers;
/**
* 解决 无法直接注入 AuthenticationManager
*
* @return
* @throws Exception
*/
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception
{
return super.authenticationManagerBean();
public void configHttpSecurity(HttpSecurity httpSecurity) throws Exception{
httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
defaultConfigHttpSecurity(httpSecurity);
// 添加JWT filter
httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
// 添加CORS filter
httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class);
httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class);
}
/**
* anyRequest | 匹配所有请求路径
* access | SpringEl表达式结果为true时可以访问
* anonymous | 匿名可以访问
* denyAll | 用户不能访问
* fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录)
* hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问
* hasAnyRole | 如果有参数,参数表示角色,则其中任何一个角色可以访问
* hasAuthority | 如果有参数,参数表示权限,则其权限可以访问
* hasIpAddress | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问
* hasRole | 如果有参数,参数表示角色,则其角色可以访问
* permitAll | 用户可以任意访问
* rememberMe | 允许通过remember-me登录的用户访问
* authenticated | 用户登录后可访问
*/
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception
public void defaultConfigHttpSecurity(HttpSecurity httpSecurity) throws Exception
{
httpSecurity
// CSRF禁用,因为不使用session
... ... @@ -126,12 +95,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.anyRequest().authenticated()
.and()
.headers().frameOptions().disable();
httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
// 添加JWT filter
httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
// 添加CORS filter
httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class);
httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class);
}
... ... @@ -144,26 +107,4 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
return new BCryptPasswordEncoder();
}
// /**
// * 身份认证接口
// */
// @Override
// protected void configure(AuthenticationManagerBuilder auth) throws Exception
// {
// auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
// }
@Bean(name="customAuthenticationProvider")
public AuthenticationProvider customAuthenticationProvider() {
CustomAuthenticationProvider customAuthenticationProvider= new CustomAuthenticationProvider();
customAuthenticationProvider.setUserDetailsService(userDetailsService);
customAuthenticationProvider.setHideUserNotFoundExceptions(false);
customAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());
return customAuthenticationProvider;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(customAuthenticationProvider());
}
}
... ...
package com.zhonglai.luhui.security.service;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.tool.SysLogininforType;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.AddressUtils;
... ... @@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
... ... @@ -62,7 +64,7 @@ public class TokenService
*
* @return 用户信息
*/
public BaseLoginUser getLoginUser(HttpServletRequest request)
public BaseLoginUser getLoginUser(HttpServletRequest request )
{
// 获取请求携带的令牌
String token = getToken(request);
... ... @@ -74,7 +76,9 @@ public class TokenService
// 解析对应的权限以及用户信息
String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
String userKey = getTokenKey(uuid);
BaseLoginUser user = redisCache.getCacheObject(userKey);
Collection<String> keys = redisCache.keys(userKey);
BaseLoginUser user = redisCache.getCacheObject(keys.stream().findFirst().get());
return user;
}
catch (Exception e)
... ... @@ -99,7 +103,7 @@ public class TokenService
/**
* 删除用户身份信息
*/
public void delLoginUser(String token)
public void delLoginUser(String token )
{
if (StringUtils.isNotEmpty(token))
{
... ... @@ -126,7 +130,7 @@ public class TokenService
return createToken(claims);
}
public void upUser(BaseLoginUser loginUser)
public void upUser(BaseLoginUser loginUser, SysLogininforType sysLogininforType)
{
String userKey = getTokenKey(loginUser.getToken());
redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
... ...
package com.zhonglai.luhui.security.service;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
@Service
public class UserDetailsServiceImpl implements CustomUserDetailsService {
@Override
public UserDetails loadUserByUsername(String username, String usertype) throws UsernameNotFoundException {
return null;
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return null;
}
}
package com.ruoyi.common.core.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.utils.StringUtils;
... ... @@ -12,6 +13,7 @@ import java.util.HashMap;
*/
public class AjaxResult extends HashMap<String, Object>
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 状态码 */
... ...
package com.ruoyi.common.exception;
import com.ruoyi.common.annotation.PublicSQLConfig;
/**
* 工具类异常
*
... ... @@ -7,6 +9,7 @@ package com.ruoyi.common.exception;
*/
public class UtilException extends RuntimeException
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 8247610319171014183L;
public UtilException(Throwable e)
... ...
package com.ruoyi.common.exception.job;
import com.ruoyi.common.annotation.PublicSQLConfig;
/**
* 计划策略异常
*
... ... @@ -7,6 +9,7 @@ package com.ruoyi.common.exception.job;
*/
public class TaskException extends Exception
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
private Code code;
... ...
package com.ruoyi.common.utils.uuid;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.exception.UtilException;
import java.security.MessageDigest;
... ... @@ -15,6 +16,7 @@ import java.util.concurrent.ThreadLocalRandom;
*/
public final class UUID implements java.io.Serializable, Comparable<UUID>
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = -1185015143654744140L;
/**
... ...
... ... @@ -24,12 +24,9 @@
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
</dependency>
<!-- 系统模块-->
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>ruoyi-system</artifactId>
<artifactId>ruoyi-common</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
... ...
package com.ruoyi.framework.web.domain.server;
import com.ruoyi.common.utils.Arith;
/**
... ...
... ... @@ -332,7 +332,10 @@ public class GenTableServiceImpl implements IGenTableService
genTable.setFunctionAuthor("钟来");
genTable.setGenType("1");
genTable.setGenPath("/");
genTable.setDataSource("DataSourceType."+dataSource);
if(StringUtils.isNotEmpty(dataSource))
{
genTable.setDataSource("DataSourceType."+dataSource);
}
List<GenTableColumn> columns = new ArrayList<>();
for(Map<String,Object> table:list)
{
... ... @@ -364,7 +367,7 @@ public class GenTableServiceImpl implements IGenTableService
switch (tableVules.getDataType())
{
case "int":
if(genTableColumn.getColumnName().equals("create_time"))
if(genTableColumn.getColumnName().indexOf("_time")>=0 )
{
genTableColumn.setQueryType("BETWEEN");
}else{
... ...
... ... @@ -2,21 +2,22 @@
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>lh-common</artifactId>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-jar</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-system</artifactId>
<artifactId>lh-jar-device-service</artifactId>
<description>
system系统模块
</description>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>com.zhonglai.luhui</groupId>
... ... @@ -75,6 +76,7 @@
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-jar-rocketmq</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
... ...
package com.ruoyi.system.domain;
package com.zhonglai.luhui.device.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
... ... @@ -12,6 +13,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
*/
public class IotAlert extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 告警ID */
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import com.ruoyi.common.tool.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
... ... @@ -12,6 +13,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
*/
public class IotAlertLog extends BaseEntity
{
@PublicSQLConfig(isSelect=false)
private static final long serialVersionUID = 1L;
/** 告警ID */
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import io.swagger.annotations.ApiModel;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import io.swagger.annotations.ApiModel;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import org.apache.commons.lang3.builder.ToStringBuilder;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.tool.BaseEntity;
import com.ruoyi.common.annotation.PublicSQLConfig;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import org.apache.commons.lang3.builder.ToStringBuilder;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.system.domain.user.UserTerminalGroupRelation;
import com.ruoyi.common.annotation.PublicSQLConfig;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.annotation.PublicSQLConfig;
import org.apache.commons.lang3.builder.ToStringBuilder;
... ...
package com.ruoyi.system.domain.iot;
package com.zhonglai.luhui.device.domain;
import com.ruoyi.common.tool.BaseEntity;
import com.ruoyi.common.annotation.PublicSQLConfig;
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.ruoyi.system.domain.iot.IotAlertLog;
import com.zhonglai.luhui.device.domain.IotAlertLog;
import org.springframework.stereotype.Repository;
import java.util.List;
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.ruoyi.system.domain.iot.IotAlert;
import com.zhonglai.luhui.device.domain.IotAlert;
import org.springframework.stereotype.Repository;
import java.util.List;
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.IotDevice;
import java.util.List;
import com.ruoyi.system.domain.iot.IotDevice;
/**
* nullMapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.IotPermission;
import java.util.List;
import com.ruoyi.system.domain.iot.IotPermission;
/**
* nullMapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.IotProduct;
import java.util.List;
import com.ruoyi.system.domain.iot.IotProduct;
/**
* nullMapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.IotProductTranslate;
import java.util.List;
import com.ruoyi.system.domain.iot.IotProductTranslate;
/**
* 产品指标翻译Mapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.IotRole;
import java.util.List;
import com.ruoyi.system.domain.iot.IotRole;
/**
* nullMapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.IotTerminal;
import java.util.List;
import com.ruoyi.system.domain.iot.IotTerminal;
/**
* nullMapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.DistributionCurrencyModel;
import com.zhonglai.luhui.device.domain.IotThingsModel;
import java.util.List;
import com.ruoyi.system.domain.DistributionCurrencyModel;
import com.ruoyi.system.domain.iot.IotThingsModel;
/**
* nullMapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import com.zhonglai.luhui.device.domain.IotThingsModelTemplate;
import java.util.List;
import com.ruoyi.system.domain.iot.IotThingsModelTemplate;
/**
* 物模型模板Mapper接口
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import java.util.List;
import com.ruoyi.system.domain.user.UserTerminalGroup;
... ...
package com.ruoyi.system.mapper;
package com.zhonglai.luhui.device.mapper;
import java.util.List;
import com.ruoyi.system.domain.user.UserTerminalGroupRelation;
... ...
package com.ruoyi.system.service;
package com.zhonglai.luhui.device.service;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.Message;
import com.ruoyi.common.core.domain.MessageCode;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.iot.IotDevice;
import com.ruoyi.common.core.domain.ApiName;
import com.ruoyi.common.core.domain.DeviceCommandApi;
import com.ruoyi.common.core.domain.DeviceCommandApiParameter;
import com.ruoyi.system.service.iot.IIotDeviceService;
import com.zhonglai.luhui.device.domain.IotDevice;
import com.zhonglai.luhui.rocketmq.service.RocketMqService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import com.ruoyi.system.domain.iot.IotAlertLog;
import com.zhonglai.luhui.device.domain.IotAlertLog;
import java.util.List;
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import com.ruoyi.system.domain.iot.IotAlert;
import com.zhonglai.luhui.device.domain.IotAlert;
import java.util.List;
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import com.zhonglai.luhui.device.domain.IotDevice;
import java.util.List;
import com.ruoyi.system.domain.iot.IotDevice;
/**
* nullService接口
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import java.util.List;
import com.ruoyi.system.domain.iot.IotPermission;
import com.zhonglai.luhui.device.domain.IotPermission;
/**
* nullService接口
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import java.util.List;
import com.ruoyi.system.domain.iot.IotProduct;
import com.zhonglai.luhui.device.domain.IotProduct;
/**
* nullService接口
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import java.util.List;
import com.ruoyi.system.domain.iot.IotProductTranslate;
import com.zhonglai.luhui.device.domain.IotProductTranslate;
/**
* 产品指标翻译Service接口
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import com.zhonglai.luhui.device.domain.IotRole;
import java.util.List;
import com.ruoyi.system.domain.iot.IotRole;
/**
* nullService接口
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import com.zhonglai.luhui.device.domain.IotTerminal;
import java.util.List;
import com.ruoyi.system.domain.iot.IotTerminal;
/**
* nullService接口
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import java.util.List;
import com.ruoyi.system.domain.DistributionCurrencyModel;
import com.ruoyi.system.domain.iot.IotThingsModel;
import com.zhonglai.luhui.device.domain.DistributionCurrencyModel;
import com.zhonglai.luhui.device.domain.IotThingsModel;
/**
* nullService接口
... ...
package com.ruoyi.system.service.iot;
package com.zhonglai.luhui.device.service;
import java.util.List;
import com.ruoyi.system.domain.iot.IotThingsModelTemplate;
import com.zhonglai.luhui.device.domain.IotThingsModelTemplate;
/**
* 物模型模板Service接口
... ...
package com.ruoyi.system.service.user;
package com.zhonglai.luhui.device.service;
import java.util.List;
import com.ruoyi.system.domain.user.UserTerminalGroupRelation;
... ...
package com.ruoyi.system.service.user;
package com.zhonglai.luhui.device.service;
import java.util.List;
import com.ruoyi.system.domain.user.UserTerminalGroup;
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.iot.IotAlertLog;
import com.ruoyi.system.mapper.IotAlertLogMapper;
import com.ruoyi.system.service.iot.IIotAlertLogService;
import com.zhonglai.luhui.device.domain.IotAlertLog;
import com.zhonglai.luhui.device.mapper.IotAlertLogMapper;
import com.zhonglai.luhui.device.service.IIotAlertLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.iot.IotAlert;
import com.ruoyi.system.mapper.IotAlertMapper;
import com.ruoyi.system.service.iot.IIotAlertService;
import com.zhonglai.luhui.device.domain.IotAlert;
import com.zhonglai.luhui.device.mapper.IotAlertMapper;
import com.zhonglai.luhui.device.service.IIotAlertService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.HashMap;
import java.util.List;
... ... @@ -8,17 +8,17 @@ import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.Message;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.iot.IotProduct;
import com.zhonglai.luhui.device.domain.IotProduct;
import com.ruoyi.common.core.domain.ApiName;
import com.ruoyi.common.core.domain.DeviceCommandApi;
import com.ruoyi.common.core.domain.DeviceCommandApiParameter;
import com.ruoyi.system.service.iot.IIotProductService;
import com.zhonglai.luhui.device.service.IIotProductService;
import com.zhonglai.luhui.rocketmq.service.RocketMqService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotDeviceMapper;
import com.ruoyi.system.domain.iot.IotDevice;
import com.ruoyi.system.service.iot.IIotDeviceService;
import com.zhonglai.luhui.device.mapper.IotDeviceMapper;
import com.zhonglai.luhui.device.domain.IotDevice;
import com.zhonglai.luhui.device.service.IIotDeviceService;
/**
* nullService业务层处理
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotPermissionMapper;
import com.ruoyi.system.domain.iot.IotPermission;
import com.ruoyi.system.service.iot.IIotPermissionService;
import com.zhonglai.luhui.device.mapper.IotPermissionMapper;
import com.zhonglai.luhui.device.domain.IotPermission;
import com.zhonglai.luhui.device.service.IIotPermissionService;
/**
* nullService业务层处理
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotProductMapper;
import com.ruoyi.system.domain.iot.IotProduct;
import com.ruoyi.system.service.iot.IIotProductService;
import com.zhonglai.luhui.device.mapper.IotProductMapper;
import com.zhonglai.luhui.device.domain.IotProduct;
import com.zhonglai.luhui.device.service.IIotProductService;
/**
* nullService业务层处理
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.List;
import com.zhonglai.luhui.redis.service.RedisCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotProductTranslateMapper;
import com.ruoyi.system.domain.iot.IotProductTranslate;
import com.ruoyi.system.service.iot.IIotProductTranslateService;
import com.zhonglai.luhui.device.mapper.IotProductTranslateMapper;
import com.zhonglai.luhui.device.domain.IotProductTranslate;
import com.zhonglai.luhui.device.service.IIotProductTranslateService;
/**
* 产品指标翻译Service业务层处理
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.List;
import com.zhonglai.luhui.device.domain.IotRole;
import com.zhonglai.luhui.device.mapper.IotRoleMapper;
import com.zhonglai.luhui.device.service.IIotRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotRoleMapper;
import com.ruoyi.system.domain.iot.IotRole;
import com.ruoyi.system.service.iot.IIotRoleService;
/**
* nullService业务层处理
... ... @@ -14,7 +15,7 @@ import com.ruoyi.system.service.iot.IIotRoleService;
* @date 2022-08-26
*/
@Service
public class IotRoleServiceImpl implements IIotRoleService
public class IotRoleServiceImpl implements IIotRoleService
{
@Autowired
private IotRoleMapper iotRoleMapper;
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.HashMap;
import java.util.List;
... ... @@ -9,13 +9,13 @@ import com.ruoyi.common.core.domain.Message;
import com.ruoyi.common.core.domain.ApiName;
import com.ruoyi.common.core.domain.DeviceCommandApi;
import com.ruoyi.common.core.domain.DeviceCommandApiParameter;
import com.ruoyi.system.service.iot.IIotDeviceService;
import com.zhonglai.luhui.device.service.IIotDeviceService;
import com.zhonglai.luhui.rocketmq.service.RocketMqService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotTerminalMapper;
import com.ruoyi.system.domain.iot.IotTerminal;
import com.ruoyi.system.service.iot.IIotTerminalService;
import com.zhonglai.luhui.device.mapper.IotTerminalMapper;
import com.zhonglai.luhui.device.domain.IotTerminal;
import com.zhonglai.luhui.device.service.IIotTerminalService;
/**
* nullService业务层处理
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.List;
import com.ruoyi.system.domain.DistributionCurrencyModel;
import com.zhonglai.luhui.device.domain.DistributionCurrencyModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotThingsModelMapper;
import com.ruoyi.system.domain.iot.IotThingsModel;
import com.ruoyi.system.service.iot.IIotThingsModelService;
import com.zhonglai.luhui.device.mapper.IotThingsModelMapper;
import com.zhonglai.luhui.device.domain.IotThingsModel;
import com.zhonglai.luhui.device.service.IIotThingsModelService;
/**
* nullService业务层处理
... ...
package com.ruoyi.system.service.impl.iot;
package com.zhonglai.luhui.device.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.IotThingsModelTemplateMapper;
import com.ruoyi.system.domain.iot.IotThingsModelTemplate;
import com.ruoyi.system.service.iot.IIotThingsModelTemplateService;
import com.zhonglai.luhui.device.mapper.IotThingsModelTemplateMapper;
import com.zhonglai.luhui.device.domain.IotThingsModelTemplate;
import com.zhonglai.luhui.device.service.IIotThingsModelTemplateService;
/**
* 物模型模板Service业务层处理
... ...
package com.ruoyi.system.service.impl.user;
package com.zhonglai.luhui.device.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.user.UserTerminalGroup;
import com.ruoyi.system.service.user.IUserTerminalGroupService;
import com.zhonglai.luhui.dao.service.PublicService;
import com.zhonglai.luhui.device.mapper.UserTerminalGroupRelationMapper;
import com.zhonglai.luhui.device.service.IUserTerminalGroupRelationService;
import com.zhonglai.luhui.device.service.IUserTerminalGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.UserTerminalGroupRelationMapper;
import com.ruoyi.system.domain.user.UserTerminalGroupRelation;
import com.ruoyi.system.service.user.IUserTerminalGroupRelationService;
import org.springframework.transaction.annotation.Transactional;
/**
... ...
package com.ruoyi.system.service.impl.user;
package com.zhonglai.luhui.device.service.impl;
import java.util.List;
import com.zhonglai.luhui.device.mapper.UserTerminalGroupMapper;
import com.zhonglai.luhui.device.service.IUserTerminalGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.UserTerminalGroupMapper;
import com.ruoyi.system.domain.user.UserTerminalGroup;
import com.ruoyi.system.service.user.IUserTerminalGroupService;
/**
* 终端分组Service业务层处理
... ... @@ -14,7 +15,7 @@ import com.ruoyi.system.service.user.IUserTerminalGroupService;
* @date 2022-11-22
*/
@Service
public class UserTerminalGroupServiceImpl implements IUserTerminalGroupService
public class UserTerminalGroupServiceImpl implements IUserTerminalGroupService
{
@Autowired
private UserTerminalGroupMapper userTerminalGroupMapper;
... ...
... ... @@ -2,9 +2,9 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotAlertLogMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotAlertLogMapper">
<resultMap type="com.ruoyi.system.domain.iot.IotAlertLog" id="AlertLogResult">
<resultMap type="com.zhonglai.luhui.device.domain.IotAlertLog" id="AlertLogResult">
<result property="alertLogId" column="alert_log__id" />
<result property="alertName" column="alert_name" />
<result property="alertLevel" column="alert_level" />
... ... @@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select alert_log__id, alert_name, alert_level, status, product_id, product_name, device_id, device_name,user_id, user_name, tenant_id, tenant_name, create_by, create_time, update_by, update_time, remark from iot_alert_log
</sql>
<select id="selectAlertLogList" parameterType="com.ruoyi.system.domain.iot.IotAlertLog" resultMap="AlertLogResult">
<select id="selectAlertLogList" parameterType="com.zhonglai.luhui.device.domain.IotAlertLog" resultMap="AlertLogResult">
<include refid="selectAlertLogVo"/>
<where>
<if test="userId != null and userId != 0"> and user_id = #{userId}</if>
... ... @@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where alert_log__id = #{alertLogId}
</select>
<insert id="insertAlertLog" parameterType="com.ruoyi.system.domain.iot.IotAlertLog" useGeneratedKeys="true" keyProperty="alertLogId">
<insert id="insertAlertLog" parameterType="com.zhonglai.luhui.device.domain.IotAlertLog" useGeneratedKeys="true" keyProperty="alertLogId">
insert into iot_alert_log
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="alertName != null and alertName != ''">alert_name,</if>
... ... @@ -88,7 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateAlertLog" parameterType="com.ruoyi.system.domain.iot.IotAlertLog">
<update id="updateAlertLog" parameterType="com.zhonglai.luhui.device.domain.IotAlertLog">
update iot_alert_log
<trim prefix="SET" suffixOverrides=",">
<if test="alertName != null and alertName != ''">alert_name = #{alertName},</if>
... ...
... ... @@ -2,9 +2,9 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotAlertMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotAlertMapper">
<resultMap type="com.ruoyi.system.domain.iot.IotAlert" id="AlertResult">
<resultMap type="com.zhonglai.luhui.device.domain.IotAlert" id="AlertResult">
<result property="alertId" column="alert_id" />
<result property="alertName" column="alert_name" />
<result property="alertLevel" column="alert_level" />
... ... @@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select alert_id, alert_name, alert_level,status, product_id, product_name, triggers, actions, create_by, create_time, update_by, update_time, remark from iot_alert
</sql>
<select id="selectAlertList" parameterType="com.ruoyi.system.domain.iot.IotAlert" resultMap="AlertResult">
<select id="selectAlertList" parameterType="com.zhonglai.luhui.device.domain.IotAlert" resultMap="AlertResult">
<include refid="selectAlertVo"/>
<where>
<if test="alertName != null and alertName != ''"> and alert_name like concat('%', #{alertName}, '%')</if>
... ... @@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where alert_id = #{alertId}
</select>
<insert id="insertAlert" parameterType="com.ruoyi.system.domain.iot.IotAlert" useGeneratedKeys="true" keyProperty="alertId">
<insert id="insertAlert" parameterType="com.zhonglai.luhui.device.domain.IotAlert" useGeneratedKeys="true" keyProperty="alertId">
insert into iot_alert
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="alertName != null and alertName != ''">alert_name,</if>
... ... @@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateAlert" parameterType="com.ruoyi.system.domain.iot.IotAlert">
<update id="updateAlert" parameterType="com.zhonglai.luhui.device.domain.IotAlert">
update iot_alert
<trim prefix="SET" suffixOverrides=",">
<if test="alertName != null and alertName != ''">alert_name = #{alertName},</if>
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotDeviceMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotDeviceMapper">
<resultMap type="IotDevice" id="IotDeviceResult">
<result property="active_time" column="active_time" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotPermissionMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotPermissionMapper">
<resultMap type="IotPermission" id="IotPermissionResult">
<result property="activity" column="activity" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotProductMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotProductMapper">
<resultMap type="IotProduct" id="IotProductResult">
<result property="create_time" column="create_time" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotProductTranslateMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotProductTranslateMapper">
<resultMap type="IotProductTranslate" id="IotProductTranslateResult">
<result property="create_time" column="create_time" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotRoleMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotRoleMapper">
<resultMap type="IotRole" id="IotRoleResult">
<result property="create_time" column="create_time" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotTerminalMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotTerminalMapper">
<resultMap type="IotTerminal" id="IotTerminalResult">
<result property="device_id" column="device_id" />
... ... @@ -14,6 +14,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="product_id" column="product_id" />
<result property="mqtt_username" column="mqtt_username" />
<result property="data_update_time" column="data_update_time" />
<result property="online" column="online" />
<result property="user_info_id" column="user_info_id" />
<result property="create_time" column="create_time" />
<result property="sensor_number" column="sensor_number" />
<association property="userTerminalGroupRelation" column="id" javaType="UserTerminalGroupRelation" resultMap="userTerminalGroupRelationResult" />
<association property="iotDevice" column="device_id" javaType="IotDevice" resultMap="iotDeviceResult" />
</resultMap>
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotThingsModelMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotThingsModelMapper">
<resultMap type="IotThingsModel" id="IotThingsModelResult">
<result property="create_by" column="create_by" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.IotThingsModelTemplateMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.IotThingsModelTemplateMapper">
<resultMap type="IotThingsModelTemplate" id="IotThingsModelTemplateResult">
<result property="ascription" column="ascription" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.UserTerminalGroupMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.UserTerminalGroupMapper">
<resultMap type="UserTerminalGroup" id="UserTerminalGroupResult">
<result property="create_time" column="create_time" />
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.UserTerminalGroupRelationMapper">
<mapper namespace="com.zhonglai.luhui.device.mapper.UserTerminalGroupRelationMapper">
<resultMap type="UserTerminalGroupRelation" id="UserTerminalGroupRelationResult">
<result property="create_time" column="create_time" />
... ...
package com.zhonglai.luhui.security.manager;
package com.zhonglai.luhui.sys.manager;
import com.ruoyi.common.utils.Threads;
import com.ruoyi.common.utils.spring.SpringUtils;
... ...
package com.zhonglai.luhui.security.manager;
package com.zhonglai.luhui.sys.manager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ...