Commit 8c2fabbd authored by “yiyousong”'s avatar “yiyousong”
parents 3211fce1 e7b4bcb5
......@@ -9,7 +9,9 @@
package com.mortals.xhx.base.system.resource.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
......@@ -31,7 +33,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return
* @throws AppException
*/
public List<ResourceEntity> findAllEnable() throws AppException;
List<ResourceEntity> findAllEnable() throws AppException;
/**
* 根据用户查询可用资源
......@@ -39,7 +41,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return
* @throws AppException
*/
public List<ResourceEntity> findListByUserId(Long userId) throws AppException;
List<ResourceEntity> findListByUserId(Long userId) throws AppException;
/**
* 查询用户可用资源
......@@ -47,7 +49,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return 字符串,多个以逗号分隔
* @throws AppException
*/
public String findUrlByUserId(Long userId) throws AppException;
String findUrlByUserId(Long userId) throws AppException;
/**
* 查询用户用资源集合
......@@ -55,7 +57,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return
* @throws AppException
*/
public Set<String> findUrlSetByUserId(Long userId) throws AppException;
Set<String> findUrlSetByUserId(Long userId) throws AppException;
/**
* 获取所有资源,不分页
......@@ -64,4 +66,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
*/
List<ResourceEntity> findAll(int userType);
Rest<String> refreshResourceUrl(String packageName, Context context);
}
\ No newline at end of file
......@@ -8,6 +8,7 @@
package com.mortals.xhx.base.system.resource.service.impl;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService;
......@@ -18,19 +19,17 @@ import com.mortals.xhx.base.system.resource.dao.ResourceDao;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import com.mortals.xhx.base.system.resource.model.ResourceQuery;
import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.base.system.role.model.RoleAuthEntity;
import com.mortals.xhx.base.system.role.model.RoleAuthQuery;
import com.mortals.xhx.base.system.role.service.RoleAuthService;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.utils.ControllerScanUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode;
......@@ -39,6 +38,7 @@ import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode;
* <p>Description: ResourceServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
......@@ -88,6 +88,74 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
return dao.getAll(userType);
}
@Override
public Rest<String> refreshResourceUrl(String packageName, Context context) {
List<Class<?>> classList = ControllerScanUtil.getAllClassByPackageName(packageName);
//System.out.println(classList); //获取到了所有的类
List<ResourceEntity> newResourcelist = ControllerScanUtil.getAnnotationInfo(classList).stream().filter(f->!ObjectUtils.isEmpty(f.getUrl())).collect(Collectors.toList());
Map<String, List<ResourceEntity>> localResourceMap = this.find(new ResourceQuery()).stream().collect(Collectors.groupingBy(x -> x.getName()));
Map<String, List<ResourceEntity>> newResourceMap = newResourcelist.stream().collect(Collectors.groupingBy(x -> x.getName()));
//更新 与新增 新加的;
newResourceMap.entrySet().forEach(item -> {
List<ResourceEntity> resourceEntities = item.getValue();
if (ObjectUtils.isEmpty(resourceEntities)) return;
if (resourceEntities.size() == 1) {
ResourceEntity resourceEntity = resourceEntities.get(0);
saveUpdateResourceEntity(context, localResourceMap, resourceEntity);
} else if (resourceEntities.size() > 1) {
//原始扫描 有多个资源列表针对一个名称的
for (ResourceEntity resourceEntity : resourceEntities) {
saveUpdateResourceEntity(context, localResourceMap, resourceEntity);
}
}
});
return Rest.ok();
}
private void saveUpdateResourceEntity(Context context, Map<String, List<ResourceEntity>> localResourceMap, ResourceEntity resourceEntity) {
//查找 本地是否已经存在了
List<ResourceEntity> tempResourceList = localResourceMap.getOrDefault(resourceEntity.getName(), new ArrayList<>());
if (tempResourceList.size() == 0) {
//新增 resource;
resourceEntity.setCreateUserId(this.getContextUserId(context));
resourceEntity.setCreateTime(new Date());
this.save(resourceEntity, context);
} else if (tempResourceList.size() == 1) {
//更新
ResourceEntity tempResource = tempResourceList.get(0);
Set<String> setUrl = Arrays.stream(resourceEntity.getUrl().split(",")).collect(Collectors.toSet());
Arrays.stream(tempResource.getUrl().split(",")).forEach(i -> {
setUrl.add(i);
});
tempResource.setUrl(setUrl.stream().collect(Collectors.joining(",")));
this.update(tempResource, context);
} else if (tempResourceList.size() > 1) {
//找到多个同名的 资源配置
for (ResourceEntity tempResource : tempResourceList) {
//模糊匹配到路径有一个存在的
Set<String> setUrl = Arrays.stream(resourceEntity.getUrl().split(",")).collect(Collectors.toSet());
String[] splitUrl = tempResource.getUrl().split(",");
Boolean bool = false;
for (int i = 0; i < splitUrl.length; i++) {
if (setUrl.contains(splitUrl[i])) {
bool = true;
break;
}
}
if (bool) {
//匹配到了,更新当前这个资源
Arrays.stream(tempResource.getUrl().split(",")).forEach(i -> {
setUrl.add(i);
});
tempResource.setUrl(setUrl.stream().collect(Collectors.joining(",")));
this.update(tempResource, context);
}
}
}
}
@Override
protected void updateAfter(ResourceEntity entity, Context context) throws AppException {
......
package com.mortals.xhx.base.system.resource.web;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.Rest;
import com.mortals.framework.common.code.UserType;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.common.code.AuthType;
import com.mortals.xhx.common.code.SourceType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.common.code.AuthType;
import com.mortals.xhx.common.code.SourceType;
import java.util.HashMap;
import java.util.Map;
/**
* 资源信息
......@@ -32,9 +31,9 @@ import com.mortals.xhx.common.code.SourceType;
@Slf4j
@RestController
@RequestMapping("resource")
public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService,ResourceEntity,Long> {
public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService, ResourceEntity, Long> {
public ResourceController(){
public ResourceController() {
super.setModuleDesc("资源信息");
}
......@@ -65,4 +64,30 @@ public class ResourceController extends BaseCRUDJsonBodyMappingController<Resour
return ret.toJSONString();
}
@Override
protected void doListBefore(ResourceEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context);
}
/**
* 资源路径刷新
*/
@PostMapping(value = "refreshUrl")
@UnAuth
public Rest<String> refreshUrl(@RequestParam(name = "packageName", defaultValue = "com.mortals.xhx") String packageName) {
log.info("刷新资源路径,packageName", packageName);
String busiDesc = this.getModuleDesc() + "资源路径刷新";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
try {
this.service.refreshResourceUrl(packageName, getContext());
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error(busiDesc, e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.user.model;
import java.util.Date;
import java.util.Objects;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.user.model.vo.UserVo;
import java.util.Date;
/**
*
* Description:User
* date: 2021-9-26 16:11:48
*/
public class UserEntity extends UserEntityExt implements IUser {
private static final long serialVersionUID = 1632643908537L;
* 用户信息业务实体对象
*
* @author zxfei
* @date 2022-07-05
*/
public class UserEntity extends UserVo implements IUser {
private static final long serialVersionUID = 1L;
/**
* 登录名
*/
private String loginName;
/**
* 登录密码,使用md5双次加密
*/
private String loginPwd;
/**
* 最近一次使用密码,使用md5双次加密
*/
private String loginPwd1;
/**
* 最近二次使用密码,使用md5双次加密
*/
private String loginPwd2;
/**
* 最近三次使用密码,使用md5双次加密
*/
private String loginPwd3;
/**
* 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
*/
private String loginLimitAddress;
/**
* 用户名
*/
private String realName;
/**
* 用户手机号
*/
private String mobile;
/**
* 用户联系电话
*/
private String phone;
/**
* 用户邮箱
*/
private String email;
/**
* QQ号码
*/
private String qq;
/**
* 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 用户类型(0.系统用户,1.普通用户,2.工作人员)
*/
private Integer userType;
/**
* 站点id
* 所属站点id,多个逗号分隔
*/
private Long siteId;
private String siteIds;
/**
* 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
*/
private Integer status;
/**
* 客户ID
*/
private Long customerId;
/**
* 创建时间
* 所属区域code,多个逗号分隔
*/
private Date createTime;
private String areaCodes;
/**
* 创建用户
* 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
*/
private Long createUserId;
private Integer status;
/**
* 创建用户名称
*/
private String createUserName;
/**
* 最后一次登录时间
*/
private Date lastLoginTime;
/**
* 最后一次登录地址
*/
private String lastLoginAddress;
/**
* 最后修改密码时间
*/
private Date lastModPwdTime;
/**
* 最后修改密码地址
*/
private String lastModPwdAddr;
public UserEntity(){
}
public UserEntity(){}
/**
* 获取 登录名
* @return loginName
* @return String
*/
public String getLoginName() {
return this.loginName;
public String getLoginName(){
return loginName;
}
/**
* 设置 登录名
* @param loginName
*/
public void setLoginName(String loginName) {
public void setLoginName(String loginName){
this.loginName = loginName;
}
/**
* 获取 登录密码,使用md5双次加密
* @return loginPwd
* @return String
*/
public String getLoginPwd() {
return this.loginPwd;
public String getLoginPwd(){
return loginPwd;
}
/**
* 设置 登录密码,使用md5双次加密
* @param loginPwd
*/
public void setLoginPwd(String loginPwd) {
public void setLoginPwd(String loginPwd){
this.loginPwd = loginPwd;
}
/**
* 获取 最近一次使用密码,使用md5双次加密
* @return loginPwd1
*/
public String getLoginPwd1() {
return this.loginPwd1;
}
/**
* 设置 最近一次使用密码,使用md5双次加密
* @param loginPwd1
*/
public void setLoginPwd1(String loginPwd1) {
this.loginPwd1 = loginPwd1;
}
/**
* 获取 最近二次使用密码,使用md5双次加密
* @return loginPwd2
*/
public String getLoginPwd2() {
return this.loginPwd2;
}
/**
* 设置 最近二次使用密码,使用md5双次加密
* @param loginPwd2
*/
public void setLoginPwd2(String loginPwd2) {
this.loginPwd2 = loginPwd2;
}
/**
* 获取 最近三次使用密码,使用md5双次加密
* @return loginPwd3
*/
public String getLoginPwd3() {
return this.loginPwd3;
}
/**
* 设置 最近三次使用密码,使用md5双次加密
* @param loginPwd3
*/
public void setLoginPwd3(String loginPwd3) {
this.loginPwd3 = loginPwd3;
}
/**
* 获取 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @return loginLimitAddress
* @return String
*/
public String getLoginLimitAddress() {
return this.loginLimitAddress;
public String getLoginLimitAddress(){
return loginLimitAddress;
}
/**
* 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginLimitAddress
*/
public void setLoginLimitAddress(String loginLimitAddress) {
public void setLoginLimitAddress(String loginLimitAddress){
this.loginLimitAddress = loginLimitAddress;
}
/**
* 获取 用户名
* @return realName
* @return String
*/
public String getRealName() {
return this.realName;
public String getRealName(){
return realName;
}
@Override
......@@ -230,156 +134,122 @@ public class UserEntity extends UserEntityExt implements IUser {
return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID;
}
@Override
public boolean isSystemUser() {
return userType != null && userType.intValue() == 0;
}
@Override
public boolean isManager() {
return false;
}
/**
* 设置 用户名
* @param realName
*/
public void setRealName(String realName) {
public void setRealName(String realName){
this.realName = realName;
}
/**
* 获取 用户手机号
* @return mobile
* @return String
*/
public String getMobile() {
return this.mobile;
public String getMobile(){
return mobile;
}
/**
* 设置 用户手机号
* @param mobile
*/
public void setMobile(String mobile) {
public void setMobile(String mobile){
this.mobile = mobile;
}
/**
* 获取 用户联系电话
* @return phone
* @return String
*/
public String getPhone() {
return this.phone;
public String getPhone(){
return phone;
}
/**
* 设置 用户联系电话
* @param phone
*/
public void setPhone(String phone) {
public void setPhone(String phone){
this.phone = phone;
}
/**
* 获取 用户邮箱
* @return email
* @return String
*/
public String getEmail() {
return this.email;
public String getEmail(){
return email;
}
/**
* 设置 用户邮箱
* @param email
*/
public void setEmail(String email) {
public void setEmail(String email){
this.email = email;
}
/**
* 获取 QQ号码
* @return qq
* @return String
*/
public String getQq() {
return this.qq;
public String getQq(){
return qq;
}
/**
* 设置 QQ号码
* @param qq
*/
public void setQq(String qq) {
public void setQq(String qq){
this.qq = qq;
}
/**
* 获取 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* @return userType
* 获取 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return Integer
*/
public Integer getUserType() {
return this.userType;
public Integer getUserType(){
return userType;
}
/**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType
*/
public void setUserType(Integer userType) {
public void setUserType(Integer userType){
this.userType = userType;
}
/**
* 获取 站点id
* @return siteId
*/
public Long getSiteId() {
return this.siteId;
}
@Override
public String getSiteIds() {
return this.siteIds;
}
public void setSiteIds(String siteIds) {
this.siteIds = siteIds;
public Long getDeptId() {
return null;
}
/**
* 设置 站点id
* @param siteId
*/
public void setSiteId(Long siteId) {
this.siteId = siteId;
}
/**
* 获取 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* @return status
*/
public Integer getStatus() {
return this.status;
}
/**
* 设置 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* @param status
*/
public void setStatus(Integer status) {
this.status = status;
@Override
public String getDeptName() {
return null;
}
@Override
public Long getDeptId() {
public Long getCustomerId() {
return null;
}
@Override
public String getDeptName() {
public Long getSiteId() {
return null;
}
/**
* 获取 客户ID
* @return customerId
* 获取 所属站点id,多个逗号分隔
* @return String
*/
public Long getCustomerId() {
return this.customerId;
public String getSiteIds(){
return siteIds;
}
@Override
public Long getCustomerJoinId() {
return null;
......@@ -391,123 +261,96 @@ public class UserEntity extends UserEntityExt implements IUser {
}
/**
* 设置 客户ID
* @param customerId
* 设置 所属站点id,多个逗号分隔
* @param siteIds
*/
public void setCustomerId(Long customerId) {
this.customerId = customerId;
public void setSiteIds(String siteIds){
this.siteIds = siteIds;
}
/**
* 获取 创建时间
* @return createTime
* 获取 所属区域code,多个逗号分隔
* @return String
*/
public Date getCreateTime() {
return this.createTime;
public String getAreaCodes(){
return areaCodes;
}
/**
* 设置 创建时间
* @param createTime
* 设置 所属区域code,多个逗号分隔
* @param areaCodes
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
public void setAreaCodes(String areaCodes){
this.areaCodes = areaCodes;
}
/**
* 获取 创建用户
* @return createUserId
* 获取 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return Integer
*/
public Long getCreateUserId() {
return this.createUserId;
public Integer getStatus(){
return status;
}
/**
* 设置 创建用户
* @param createUserId
* 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param status
*/
public void setCreateUserId(Long createUserId) {
this.createUserId = createUserId;
public void setStatus(Integer status){
this.status = status;
}
/**
* 获取 创建用户名称
* @return createUserName
* @return String
*/
public String getCreateUserName() {
return this.createUserName;
public String getCreateUserName(){
return createUserName;
}
/**
* 设置 创建用户名称
* @param createUserName
*/
public void setCreateUserName(String createUserName) {
public void setCreateUserName(String createUserName){
this.createUserName = createUserName;
}
/**
* 获取 最后一次登录时间
* @return lastLoginTime
* @return Date
*/
public Date getLastLoginTime() {
return this.lastLoginTime;
public Date getLastLoginTime(){
return lastLoginTime;
}
/**
* 设置 最后一次登录时间
* @param lastLoginTime
*/
public void setLastLoginTime(Date lastLoginTime) {
public void setLastLoginTime(Date lastLoginTime){
this.lastLoginTime = lastLoginTime;
}
/**
* 获取 最后一次登录地址
* @return lastLoginAddress
* @return String
*/
public String getLastLoginAddress() {
return this.lastLoginAddress;
public String getLastLoginAddress(){
return lastLoginAddress;
}
/**
* 设置 最后一次登录地址
* @param lastLoginAddress
*/
public void setLastLoginAddress(String lastLoginAddress) {
public void setLastLoginAddress(String lastLoginAddress){
this.lastLoginAddress = lastLoginAddress;
}
/**
* 获取 最后修改密码时间
* @return lastModPwdTime
*/
public Date getLastModPwdTime() {
return this.lastModPwdTime;
}
/**
* 设置 最后修改密码时间
* @param lastModPwdTime
*/
public void setLastModPwdTime(Date lastModPwdTime) {
this.lastModPwdTime = lastModPwdTime;
}
/**
* 获取 最后修改密码地址
* @return lastModPwdAddr
*/
public String getLastModPwdAddr() {
return this.lastModPwdAddr;
}
/**
* 设置 最后修改密码地址
* @param lastModPwdAddr
*/
public void setLastModPwdAddr(String lastModPwdAddr) {
this.lastModPwdAddr = lastModPwdAddr;
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), loginName, loginPwd, loginPwd1, loginPwd2, loginPwd3, loginLimitAddress, realName, mobile, phone, email, qq, userType, status, customerId, createTime, createUserId, createUserName, lastLoginTime, lastLoginAddress, lastModPwdTime, lastModPwdAddr);
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj == null) return false;
if (obj instanceof UserEntity) {
UserEntity tmp = (UserEntity) obj;
if (this.getId().longValue() == tmp.getId().longValue()) {
if (this.getId() == tmp.getId()) {
return true;
}
}
......@@ -516,56 +359,54 @@ public class UserEntity extends UserEntityExt implements IUser {
public String toString(){
StringBuilder sb = new StringBuilder("");
sb
.append(",id:").append(getId())
.append(",loginName:").append(getLoginName())
.append(",loginPwd:").append(getLoginPwd())
.append(",loginPwd1:").append(getLoginPwd1())
.append(",loginPwd2:").append(getLoginPwd2())
.append(",loginPwd3:").append(getLoginPwd3())
.append(",loginLimitAddress:").append(getLoginLimitAddress())
.append(",realName:").append(getRealName())
.append(",mobile:").append(getMobile())
.append(",phone:").append(getPhone())
.append(",email:").append(getEmail())
.append(",qq:").append(getQq())
.append(",userType:").append(getUserType())
.append(",siteId:").append(getSiteId())
.append(",status:").append(getStatus())
.append(",customerId:").append(getCustomerId())
.append(",createTime:").append(getCreateTime())
.append(",createUserId:").append(getCreateUserId())
.append(",createUserName:").append(getCreateUserName())
.append(",lastLoginTime:").append(getLastLoginTime())
.append(",lastLoginAddress:").append(getLastLoginAddress())
.append(",lastModPwdTime:").append(getLastModPwdTime())
.append(",lastModPwdAddr:").append(getLastModPwdAddr())
;
sb.append(",loginName:").append(getLoginName());
sb.append(",loginPwd:").append(getLoginPwd());
sb.append(",loginLimitAddress:").append(getLoginLimitAddress());
sb.append(",realName:").append(getRealName());
sb.append(",mobile:").append(getMobile());
sb.append(",phone:").append(getPhone());
sb.append(",email:").append(getEmail());
sb.append(",qq:").append(getQq());
sb.append(",userType:").append(getUserType());
sb.append(",siteIds:").append(getSiteIds());
sb.append(",areaCodes:").append(getAreaCodes());
sb.append(",status:").append(getStatus());
sb.append(",createUserName:").append(getCreateUserName());
sb.append(",lastLoginTime:").append(getLastLoginTime());
sb.append(",lastLoginAddress:").append(getLastLoginAddress());
return sb.toString();
}
public void initAttrValue(){
this.loginName = null;
this.loginPwd = null;
this.loginPwd1 = null;
this.loginPwd2 = null;
this.loginPwd3 = null;
this.loginLimitAddress = null;
this.realName = null;
this.mobile = null;
this.phone = null;
this.email = null;
this.qq = null;
this.loginName = "";
this.loginPwd = "";
this.loginLimitAddress = "";
this.realName = "";
this.mobile = "";
this.phone = "";
this.email = "";
this.qq = "";
this.userType = null;
this.siteId = null;
this.siteIds = "";
this.areaCodes = "";
this.status = 1;
this.customerId = null;
this.createTime = null;
this.createUserId = null;
this.createUserName = null;
this.createUserName = "";
this.lastLoginTime = null;
this.lastLoginAddress = null;
this.lastModPwdTime = null;
this.lastModPwdAddr = null;
this.lastLoginAddress = "";
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.user.model;
import java.util.List;
import java.util.Date;
import java.util.List;
/**
*
* Description:User
* date: 2021-9-26 16:11:48
*/
public class UserQuery extends UserEntity{
private static final long serialVersionUID = 1632643908887L;
* 用户信息业务查询对象
*
* @author zxfei
* @date 2022-07-06
*/
public class UserQuery extends UserEntity {
/** 开始 用户ID,主键,自增长 */
private Long idStart;
......@@ -19,25 +18,15 @@ public class UserQuery extends UserEntity{
/** 增加 用户ID,主键,自增长 */
private Long idIncrement;
/** 用户ID,主键,自增长 */
/** 用户ID,主键,自增长列表 */
private List <Long> idList;
/** 登录名 */
private List<String> loginNameList;
/** 登录密码,使用md5双次加密 */
private List<String> loginPwdList;
/** 最近一次使用密码,使用md5双次加密 */
private List<String> loginPwd1List;
/** 最近二次使用密码,使用md5双次加密 */
private List<String> loginPwd2List;
/** 最近三次使用密码,使用md5双次加密 */
private List<String> loginPwd3List;
/** 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录 */
private List<String> loginLimitAddressList;
......@@ -56,58 +45,42 @@ public class UserQuery extends UserEntity{
/** QQ号码 */
private List<String> qqList;
/** 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */
/** 开始 用户类型(0.系统用户,1.普通用户,2.工作人员) */
private Integer userTypeStart;
/** 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */
/** 结束 用户类型(0.系统用户,1.普通用户,2.工作人员) */
private Integer userTypeEnd;
/** 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */
/** 增加 用户类型(0.系统用户,1.普通用户,2.工作人员) */
private Integer userTypeIncrement;
/** 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */
/** 用户类型(0.系统用户,1.普通用户,2.工作人员)列表 */
private List <Integer> userTypeList;
/** 开始 站点id */
private Long siteIdStart;
/** 结束 站点id */
private Long siteIdEnd;
/** 增加 站点id */
private Long siteIdIncrement;
/** 站点id */
private List <Long> siteIdList;
/** 所属站点id,多个逗号分隔 */
private List<String> siteIdsList;
/** 所属区域code,多个逗号分隔 */
private List<String> areaCodesList;
/** 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */
/** 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) */
private Integer statusStart;
/** 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */
/** 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) */
private Integer statusEnd;
/** 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */
/** 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) */
private Integer statusIncrement;
/** 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */
/** 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)列表 */
private List <Integer> statusList;
/** 开始 客户ID */
private Long customerIdStart;
/** 结束 客户ID */
private Long customerIdEnd;
/** 增加 客户ID */
private Long customerIdIncrement;
/** 客户ID */
private List <Long> customerIdList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** 开始 创建用户 */
private Long createUserIdStart;
......@@ -117,12 +90,12 @@ public class UserQuery extends UserEntity{
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户 */
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 创建用户名称 */
private List<String> createUserNameList;
/** 开始 最后一次登录时间 */
private String lastLoginTimeStart;
......@@ -131,14 +104,6 @@ public class UserQuery extends UserEntity{
/** 最后一次登录地址 */
private List<String> lastLoginAddressList;
/** 开始 最后修改密码时间 */
private String lastModPwdTimeStart;
/** 结束 最后修改密码时间 */
private String lastModPwdTimeEnd;
/** 最后修改密码地址 */
private List<String> lastModPwdAddrList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<UserQuery> orConditionList;
......@@ -146,10 +111,7 @@ public class UserQuery extends UserEntity{
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<UserQuery> andConditionList;
public UserQuery(){
}
public UserQuery(){}
/**
* 获取 开始 用户ID,主键,自增长
......@@ -169,7 +131,7 @@ public class UserQuery extends UserEntity{
/**
* 获取 结束 用户ID,主键,自增长
* @return idEnd
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
......@@ -214,6 +176,7 @@ public class UserQuery extends UserEntity{
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 登录名
* @return loginNameList
......@@ -245,51 +208,6 @@ public class UserQuery extends UserEntity{
this.loginPwdList = loginPwdList;
}
/**
* 获取 最近一次使用密码,使用md5双次加密
* @return loginPwd1List
*/
public List<String> getLoginPwd1List(){
return this.loginPwd1List;
}
/**
* 设置 最近一次使用密码,使用md5双次加密
* @param loginPwd1List
*/
public void setLoginPwd1List(List<String> loginPwd1List){
this.loginPwd1List = loginPwd1List;
}
/**
* 获取 最近二次使用密码,使用md5双次加密
* @return loginPwd2List
*/
public List<String> getLoginPwd2List(){
return this.loginPwd2List;
}
/**
* 设置 最近二次使用密码,使用md5双次加密
* @param loginPwd2List
*/
public void setLoginPwd2List(List<String> loginPwd2List){
this.loginPwd2List = loginPwd2List;
}
/**
* 获取 最近三次使用密码,使用md5双次加密
* @return loginPwd3List
*/
public List<String> getLoginPwd3List(){
return this.loginPwd3List;
}
/**
* 设置 最近三次使用密码,使用md5双次加密
* @param loginPwd3List
*/
public void setLoginPwd3List(List<String> loginPwd3List){
this.loginPwd3List = loginPwd3List;
}
/**
* 获取 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @return loginLimitAddressList
*/
......@@ -380,7 +298,7 @@ public class UserQuery extends UserEntity{
this.qqList = qqList;
}
/**
* 获取 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 获取 开始 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userTypeStart
*/
public Integer getUserTypeStart(){
......@@ -388,7 +306,7 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 开始 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeStart
*/
public void setUserTypeStart(Integer userTypeStart){
......@@ -396,15 +314,15 @@ public class UserQuery extends UserEntity{
}
/**
* 获取 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* @return userTypeEnd
* 获取 结束 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return $userTypeEnd
*/
public Integer getUserTypeEnd(){
return this.userTypeEnd;
}
/**
* 设置 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 结束 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeEnd
*/
public void setUserTypeEnd(Integer userTypeEnd){
......@@ -412,7 +330,7 @@ public class UserQuery extends UserEntity{
}
/**
* 获取 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 获取 增加 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userTypeIncrement
*/
public Integer getUserTypeIncrement(){
......@@ -420,7 +338,7 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 增加 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeIncrement
*/
public void setUserTypeIncrement(Integer userTypeIncrement){
......@@ -428,7 +346,7 @@ public class UserQuery extends UserEntity{
}
/**
* 获取 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 获取 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userTypeList
*/
public List<Integer> getUserTypeList(){
......@@ -436,77 +354,45 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeList
*/
public void setUserTypeList(List<Integer> userTypeList){
this.userTypeList = userTypeList;
}
/**
* 获取 开始 站点id
* @return siteIdStart
*/
public Long getSiteIdStart(){
return this.siteIdStart;
}
/**
* 设置 开始 站点id
* @param siteIdStart
*/
public void setSiteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
}
/**
* 获取 结束 站点id
* @return siteIdEnd
* 获取 所属站点id,多个逗号分隔
* @return siteIdsList
*/
public Long getSiteIdEnd(){
return this.siteIdEnd;
public List<String> getSiteIdsList(){
return this.siteIdsList;
}
/**
* 设置 结束 站点id
* @param siteIdEnd
* 设置 所属站点id,多个逗号分隔
* @param siteIdsList
*/
public void setSiteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
public void setSiteIdsList(List<String> siteIdsList){
this.siteIdsList = siteIdsList;
}
/**
* 获取 增加 站点id
* @return siteIdIncrement
*/
public Long getSiteIdIncrement(){
return this.siteIdIncrement;
}
/**
* 设置 增加 站点id
* @param siteIdIncrement
*/
public void setSiteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
}
/**
* 获取 站点id
* @return siteIdList
* 获取 所属区域code,多个逗号分隔
* @return areaCodesList
*/
public List<Long> getSiteIdList(){
return this.siteIdList;
public List<String> getAreaCodesList(){
return this.areaCodesList;
}
/**
* 设置 站点id
* @param siteIdList
* 设置 所属区域code,多个逗号分隔
* @param areaCodesList
*/
public void setSiteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
public void setAreaCodesList(List<String> areaCodesList){
this.areaCodesList = areaCodesList;
}
/**
* 获取 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 获取 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return statusStart
*/
public Integer getStatusStart(){
......@@ -514,7 +400,7 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusStart
*/
public void setStatusStart(Integer statusStart){
......@@ -522,15 +408,15 @@ public class UserQuery extends UserEntity{
}
/**
* 获取 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* @return statusEnd
* 获取 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return $statusEnd
*/
public Integer getStatusEnd(){
return this.statusEnd;
}
/**
* 设置 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusEnd
*/
public void setStatusEnd(Integer statusEnd){
......@@ -538,7 +424,7 @@ public class UserQuery extends UserEntity{
}
/**
* 获取 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 获取 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return statusIncrement
*/
public Integer getStatusIncrement(){
......@@ -546,7 +432,7 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusIncrement
*/
public void setStatusIncrement(Integer statusIncrement){
......@@ -554,7 +440,7 @@ public class UserQuery extends UserEntity{
}
/**
* 获取 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 获取 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return statusList
*/
public List<Integer> getStatusList(){
......@@ -562,75 +448,13 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusList
*/
public void setStatusList(List<Integer> statusList){
this.statusList = statusList;
}
/**
* 获取 开始 客户ID
* @return customerIdStart
*/
public Long getCustomerIdStart(){
return this.customerIdStart;
}
/**
* 设置 开始 客户ID
* @param customerIdStart
*/
public void setCustomerIdStart(Long customerIdStart){
this.customerIdStart = customerIdStart;
}
/**
* 获取 结束 客户ID
* @return customerIdEnd
*/
public Long getCustomerIdEnd(){
return this.customerIdEnd;
}
/**
* 设置 结束 客户ID
* @param customerIdEnd
*/
public void setCustomerIdEnd(Long customerIdEnd){
this.customerIdEnd = customerIdEnd;
}
/**
* 获取 增加 客户ID
* @return customerIdIncrement
*/
public Long getCustomerIdIncrement(){
return this.customerIdIncrement;
}
/**
* 设置 增加 客户ID
* @param customerIdIncrement
*/
public void setCustomerIdIncrement(Long customerIdIncrement){
this.customerIdIncrement = customerIdIncrement;
}
/**
* 获取 客户ID
* @return customerIdList
*/
public List<Long> getCustomerIdList(){
return this.customerIdList;
}
/**
* 设置 客户ID
* @param customerIdList
*/
public void setCustomerIdList(List<Long> customerIdList){
this.customerIdList = customerIdList;
}
/**
* 获取 开始 创建时间
* @return createTimeStart
......@@ -662,6 +486,7 @@ public class UserQuery extends UserEntity{
public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
}
/**
* 获取 开始 创建用户
* @return createUserIdStart
......@@ -680,7 +505,7 @@ public class UserQuery extends UserEntity{
/**
* 获取 结束 创建用户
* @return createUserIdEnd
* @return $createUserIdEnd
*/
public Long getCreateUserIdEnd(){
return this.createUserIdEnd;
......@@ -725,6 +550,7 @@ public class UserQuery extends UserEntity{
public void setCreateUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
}
/**
* 获取 创建用户名称
* @return createUserNameList
......@@ -771,6 +597,7 @@ public class UserQuery extends UserEntity{
public void setLastLoginTimeEnd(String lastLoginTimeEnd){
this.lastLoginTimeEnd = lastLoginTimeEnd;
}
/**
* 获取 最后一次登录地址
* @return lastLoginAddressList
......@@ -786,54 +613,6 @@ public class UserQuery extends UserEntity{
public void setLastLoginAddressList(List<String> lastLoginAddressList){
this.lastLoginAddressList = lastLoginAddressList;
}
/**
* 获取 开始 最后修改密码时间
* @return lastModPwdTimeStart
*/
public String getLastModPwdTimeStart(){
return this.lastModPwdTimeStart;
}
/**
* 设置 开始 最后修改密码时间
* @param lastModPwdTimeStart
*/
public void setLastModPwdTimeStart(String lastModPwdTimeStart){
this.lastModPwdTimeStart = lastModPwdTimeStart;
}
/**
* 获取 结束 最后修改密码时间
* @return lastModPwdTimeEnd
*/
public String getLastModPwdTimeEnd(){
return this.lastModPwdTimeEnd;
}
/**
* 设置 结束 最后修改密码时间
* @param lastModPwdTimeEnd
*/
public void setLastModPwdTimeEnd(String lastModPwdTimeEnd){
this.lastModPwdTimeEnd = lastModPwdTimeEnd;
}
/**
* 获取 最后修改密码地址
* @return lastModPwdAddrList
*/
public List<String> getLastModPwdAddrList(){
return this.lastModPwdAddrList;
}
/**
* 设置 最后修改密码地址
* @param lastModPwdAddrList
*/
public void setLastModPwdAddrList(List<String> lastModPwdAddrList){
this.lastModPwdAddrList = lastModPwdAddrList;
}
/**
* 设置 用户ID,主键,自增长
* @param id
......@@ -878,6 +657,8 @@ public class UserQuery extends UserEntity{
this.idList = idList;
return this;
}
/**
* 设置 登录名
* @param loginName
......@@ -887,7 +668,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 登录名
* @param loginNameList
......@@ -896,6 +676,8 @@ public class UserQuery extends UserEntity{
this.loginNameList = loginNameList;
return this;
}
/**
* 设置 登录密码,使用md5双次加密
* @param loginPwd
......@@ -905,7 +687,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 登录密码,使用md5双次加密
* @param loginPwdList
......@@ -914,60 +695,8 @@ public class UserQuery extends UserEntity{
this.loginPwdList = loginPwdList;
return this;
}
/**
* 设置 最近一次使用密码,使用md5双次加密
* @param loginPwd1
*/
public UserQuery loginPwd1(String loginPwd1){
setLoginPwd1(loginPwd1);
return this;
}
/**
* 设置 最近一次使用密码,使用md5双次加密
* @param loginPwd1List
*/
public UserQuery loginPwd1List(List<String> loginPwd1List){
this.loginPwd1List = loginPwd1List;
return this;
}
/**
* 设置 最近二次使用密码,使用md5双次加密
* @param loginPwd2
*/
public UserQuery loginPwd2(String loginPwd2){
setLoginPwd2(loginPwd2);
return this;
}
/**
* 设置 最近二次使用密码,使用md5双次加密
* @param loginPwd2List
*/
public UserQuery loginPwd2List(List<String> loginPwd2List){
this.loginPwd2List = loginPwd2List;
return this;
}
/**
* 设置 最近三次使用密码,使用md5双次加密
* @param loginPwd3
*/
public UserQuery loginPwd3(String loginPwd3){
setLoginPwd3(loginPwd3);
return this;
}
/**
* 设置 最近三次使用密码,使用md5双次加密
* @param loginPwd3List
*/
public UserQuery loginPwd3List(List<String> loginPwd3List){
this.loginPwd3List = loginPwd3List;
return this;
}
/**
* 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginLimitAddress
......@@ -977,7 +706,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginLimitAddressList
......@@ -986,6 +714,8 @@ public class UserQuery extends UserEntity{
this.loginLimitAddressList = loginLimitAddressList;
return this;
}
/**
* 设置 用户名
* @param realName
......@@ -995,7 +725,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 用户名
* @param realNameList
......@@ -1004,6 +733,8 @@ public class UserQuery extends UserEntity{
this.realNameList = realNameList;
return this;
}
/**
* 设置 用户手机号
* @param mobile
......@@ -1013,7 +744,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 用户手机号
* @param mobileList
......@@ -1022,6 +752,8 @@ public class UserQuery extends UserEntity{
this.mobileList = mobileList;
return this;
}
/**
* 设置 用户联系电话
* @param phone
......@@ -1031,7 +763,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 用户联系电话
* @param phoneList
......@@ -1040,6 +771,8 @@ public class UserQuery extends UserEntity{
this.phoneList = phoneList;
return this;
}
/**
* 设置 用户邮箱
* @param email
......@@ -1049,7 +782,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 用户邮箱
* @param emailList
......@@ -1058,6 +790,8 @@ public class UserQuery extends UserEntity{
this.emailList = emailList;
return this;
}
/**
* 设置 QQ号码
* @param qq
......@@ -1067,7 +801,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 QQ号码
* @param qqList
......@@ -1078,7 +811,7 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType
*/
public UserQuery userType(Integer userType){
......@@ -1087,7 +820,7 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 开始 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeStart
*/
public UserQuery userTypeStart(Integer userTypeStart){
......@@ -1095,9 +828,8 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 结束 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeEnd
*/
public UserQuery userTypeEnd(Integer userTypeEnd){
......@@ -1105,9 +837,8 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 增加 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeIncrement
*/
public UserQuery userTypeIncrement(Integer userTypeIncrement){
......@@ -1115,9 +846,8 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeList
*/
public UserQuery userTypeList(List<Integer> userTypeList){
......@@ -1125,53 +855,46 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 站点id
* @param siteId
*/
public UserQuery siteId(Long siteId){
setSiteId(siteId);
return this;
}
/**
* 设置 开始 站点id
* @param siteIdStart
* 设置 所属站点id,多个逗号分隔
* @param siteIds
*/
public UserQuery siteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
public UserQuery siteIds(String siteIds){
setSiteIds(siteIds);
return this;
}
/**
* 设置 结束 站点id
* @param siteIdEnd
* 设置 所属站点id,多个逗号分隔
* @param siteIdsList
*/
public UserQuery siteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
public UserQuery siteIdsList(List<String> siteIdsList){
this.siteIdsList = siteIdsList;
return this;
}
/**
* 设置 增加 站点id
* @param siteIdIncrement
* 设置 所属区域code,多个逗号分隔
* @param areaCodes
*/
public UserQuery siteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
public UserQuery areaCodes(String areaCodes){
setAreaCodes(areaCodes);
return this;
}
/**
* 设置 站点id
* @param siteIdList
* 设置 所属区域code,多个逗号分隔
* @param areaCodesList
*/
public UserQuery siteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
public UserQuery areaCodesList(List<String> areaCodesList){
this.areaCodesList = areaCodesList;
return this;
}
/**
* 设置 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param status
*/
public UserQuery status(Integer status){
......@@ -1180,7 +903,7 @@ public class UserQuery extends UserEntity{
}
/**
* 设置 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusStart
*/
public UserQuery statusStart(Integer statusStart){
......@@ -1188,9 +911,8 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusEnd
*/
public UserQuery statusEnd(Integer statusEnd){
......@@ -1198,9 +920,8 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusIncrement
*/
public UserQuery statusIncrement(Integer statusIncrement){
......@@ -1208,9 +929,8 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusList
*/
public UserQuery statusList(List<Integer> statusList){
......@@ -1218,69 +938,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 客户ID
* @param customerId
*/
public UserQuery customerId(Long customerId){
setCustomerId(customerId);
return this;
}
/**
* 设置 开始 客户ID
* @param customerIdStart
*/
public UserQuery customerIdStart(Long customerIdStart){
this.customerIdStart = customerIdStart;
return this;
}
/**
* 设置 结束 客户ID
* @param customerIdEnd
*/
public UserQuery customerIdEnd(Long customerIdEnd){
this.customerIdEnd = customerIdEnd;
return this;
}
/**
* 设置 增加 客户ID
* @param customerIdIncrement
*/
public UserQuery customerIdIncrement(Long customerIdIncrement){
this.customerIdIncrement = customerIdIncrement;
return this;
}
/**
* 设置 客户ID
* @param customerIdList
*/
public UserQuery customerIdList(List<Long> customerIdList){
this.customerIdList = customerIdList;
return this;
}
/**
* 设置 开始 创建时间
* @param createTimeStart
*/
public UserQuery createTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart;
return this;
}
/**
* 设置 结束 创建时间
* @param createTimeEnd
*/
public UserQuery createTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
return this;
}
/**
* 设置 创建用户
......@@ -1326,6 +983,8 @@ public class UserQuery extends UserEntity{
this.createUserIdList = createUserIdList;
return this;
}
/**
* 设置 创建用户名称
* @param createUserName
......@@ -1335,7 +994,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 创建用户名称
* @param createUserNameList
......@@ -1345,24 +1003,8 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 开始 最后一次登录时间
* @param lastLoginTimeStart
*/
public UserQuery lastLoginTimeStart(String lastLoginTimeStart){
this.lastLoginTimeStart = lastLoginTimeStart;
return this;
}
/**
* 设置 结束 最后一次登录时间
* @param lastLoginTimeEnd
*/
public UserQuery lastLoginTimeEnd(String lastLoginTimeEnd){
this.lastLoginTimeEnd = lastLoginTimeEnd;
return this;
}
/**
* 设置 最后一次登录地址
* @param lastLoginAddress
......@@ -1372,7 +1014,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 最后一次登录地址
* @param lastLoginAddressList
......@@ -1382,44 +1023,6 @@ public class UserQuery extends UserEntity{
return this;
}
/**
* 设置 开始 最后修改密码时间
* @param lastModPwdTimeStart
*/
public UserQuery lastModPwdTimeStart(String lastModPwdTimeStart){
this.lastModPwdTimeStart = lastModPwdTimeStart;
return this;
}
/**
* 设置 结束 最后修改密码时间
* @param lastModPwdTimeEnd
*/
public UserQuery lastModPwdTimeEnd(String lastModPwdTimeEnd){
this.lastModPwdTimeEnd = lastModPwdTimeEnd;
return this;
}
/**
* 设置 最后修改密码地址
* @param lastModPwdAddr
*/
public UserQuery lastModPwdAddr(String lastModPwdAddr){
setLastModPwdAddr(lastModPwdAddr);
return this;
}
/**
* 设置 最后修改密码地址
* @param lastModPwdAddrList
*/
public UserQuery lastModPwdAddrList(List<String> lastModPwdAddrList){
this.lastModPwdAddrList = lastModPwdAddrList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
......
package com.mortals.xhx.base.system.user.model;
package com.mortals.xhx.base.system.user.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.model.model.ModelEntity;
......@@ -7,15 +8,20 @@ import lombok.Data;
import java.util.List;
/**
* Description:User
* date: 2021-9-26 16:11:48
* 用户信息业务视图对象
*
* @author zxfei
* @date 2022-07-05
*/
@Data
public class UserEntityExt extends BaseEntityLong {
public class UserVo extends BaseEntityLong {
/**
* 站点名称
*/
private String siteName;
private String roleIds;
/**
* 唯一标识
*/
......@@ -35,12 +41,9 @@ public class UserEntityExt extends BaseEntityLong {
*/
private Long expireTime;
private String oldPassword;
private String newPassword;
private String siteIds;
private List<ModelEntity> modleList;
/**
* 所属区域code,多个逗号分隔
*/
private String areaCodes;
}
\ No newline at end of file
/**
* 文件:UserService.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
* 文件:UserService.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.user.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Result;
import com.mortals.framework.service.ICRUDCacheService;
import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.menu.model.MenuEntity;
import com.mortals.xhx.base.system.user.dao.UserDao;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.common.pdu.user.UserPdu;
......@@ -29,7 +31,7 @@ import java.util.Set;
* @version 1.0.0
*/
public interface UserService extends ICRUDCacheService<UserEntity,Long> {
public interface UserService extends ICRUDCacheService<UserEntity, Long> {
/**
* 用户登录
*
......@@ -116,8 +118,11 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException;
void updateWidthDao(UserEntity userEntity);
void updateUserList(List<UserPdu> list);
Rest<Void> refreshUser();
UserDao getUserDao();
}
\ No newline at end of file
......@@ -26,11 +26,14 @@ import com.mortals.xhx.base.system.menu.model.MenuEntity;
import com.mortals.xhx.base.system.menu.service.MenuService;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.base.system.role.model.RoleUserQuery;
import com.mortals.xhx.base.system.role.service.RoleUserService;
import com.mortals.xhx.base.system.user.dao.UserDao;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.user.UserPdu;
import com.mortals.xhx.common.utils.BeanUtil;
......@@ -43,8 +46,10 @@ import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.module.workman.model.WorkmanEntity;
import com.mortals.xhx.module.workman.model.WorkmanQuery;
import com.mortals.xhx.module.workman.service.WorkmanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
......@@ -61,12 +66,20 @@ import java.util.stream.Collectors;
* @version 1.0.0
*/
@Service("userService")
@Slf4j
public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserEntity, Long> implements UserService {
@Autowired
private MenuService menuService;
@Autowired
private ResourceService resourceService;
@Autowired
private RoleUserService roleUserService;
@Lazy
@Autowired
private IUserFeign userFeign;
/**
* @param data
* @return
......@@ -241,7 +254,6 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
entity.initAttrValue();
entity.setLoginName(loginName);
entity.setRealName(userName);
entity.setCustomerId(customerId);
entity.setLoginPwd(password);
entity.setMobile(mobile);
entity.setUserType(UserType.CUSTOMER.getValue());
......@@ -287,10 +299,7 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
}
try {
sysUser.setLoginPwd(SecurityUtil.md5DoubleEncoding(newPwd));
sysUser.setLoginPwd3(sysUser.getLoginPwd2());
sysUser.setLoginPwd2(sysUser.getLoginPwd1());
sysUser.setLoginPwd1(sysUser.getLoginPwd());
sysUser.setLastModPwdTime(new Date());
} catch (Exception e) {
throw new AppException("密码转换异常!", e);
}
......@@ -315,7 +324,6 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
//分组查找存在的与不存在的用户
Map<Boolean, List<UserPdu>> collect = list.parallelStream().collect(Collectors.partitioningBy(x -> existUserMap.containsKey(x.getLoginName())));
List<UserPdu> userPdusUpdate = collect.get(true);//更新
List<UserEntity> userEntityUpdate = new ArrayList<>();
List<UserPdu> userPdusSave = collect.get(false);//新增
List<UserEntity> userEntitySave = new ArrayList<>();
......@@ -341,14 +349,10 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
}
}
//分组刷新节点 新增
Map<String, List<UserEntity>> saveSitesCollect = userEntitySave.stream().collect(Collectors.groupingBy(x -> x.getSiteIds()));
// Map<String, List<UserEntity>> updateSitesCollect = userEntityUpdate.stream().collect(Collectors.groupingBy(x -> x.getSiteIds()));
saveSitesCollect.entrySet().stream().forEach(item -> {
String siteIds = item.getKey();
List<UserEntity> userEntities = item.getValue();
if (!ObjectUtils.isEmpty(userEntities)) {
Context context = new Context();
......@@ -356,38 +360,83 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context, userEntities));
}
});
/*
//如果用户未有所属站点 则不更新
for (UserPdu user : list) {
UserEntity tempUser = this.selectOne(new UserQuery().loginName(user.getLoginName()));
if (ObjectUtils.isEmpty(tempUser)) {
//新增
UserEntity entity = new UserEntity();
entity.initAttrValue();
BeanUtils.copyProperties(user, entity, BeanUtil.getNullPropertyNames(user));
this.save(entity);
if (!ObjectUtils.isEmpty(entity.getSiteIds())) {
Context context = new Context();
context.setUser(entity);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
}
} else {
//更新
@Override
public Rest<Void> refreshUser() {
UserPdu userPdu = new UserPdu();
userPdu.setPage(1);
userPdu.setSize(-1);
Rest<RespData<List<UserPdu>>> resp = userFeign.list(userPdu);
if (resp.getCode() == YesNoEnum.YES.getValue()) {
List<UserPdu> userPduList = resp.getData().getData();
log.info("用户总数量:{}", userPduList.size());
if (!ObjectUtils.isEmpty(userPduList)) {
List<UserEntity> newUserList = userPduList.stream().map(newUser -> {
UserEntity userEntity = new UserEntity();
BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd", "loginName", "userType", "status", "lastLoginTime", "lastLoginAddress"});
userEntity.setId(tempUser.getId());
this.updateWidthDao(userEntity);
if (!ObjectUtils.isEmpty(userEntity.getSiteIds())) {
Context context = new Context();
context.setUser(userEntity);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
userEntity.initAttrValue();
BeanUtils.copyProperties(newUser, userEntity, new String[]{"id", "lastLoginTime", "lastLoginAddress"});
return userEntity;
}).collect(Collectors.toList());
List<UserEntity> saveUpdateUserList = newUserList.parallelStream().map(item -> {
UserEntity extCache = this.getExtCache(item.getLoginName());
if (ObjectUtils.isEmpty(extCache)) {
item.setCreateUserId(1L);
item.setCreateUserName("系统管理员");
item.setCreateTime(new Date());
return item;
} else {
//更新用户列表
item.setId(extCache.getId());
item.setUpdateUserId(1L);
item.setUpdateUserName("系统管理员");
item.setUpdateTime(new Date());
return item;
}
}).collect(Collectors.toList());
Map<Boolean, List<UserEntity>> saveUpdateCollect = saveUpdateUserList.stream().collect(Collectors.partitioningBy(x -> x.getId() == null));
if (!ObjectUtils.isEmpty(saveUpdateCollect.get(true))) {
//需要新增的用户
log.info("需要新增用户数量:{}", saveUpdateCollect.get(true).size());
saveUpdateCollect.get(true).stream().forEach(item -> {
this.getUserDao().insert(item);
this.putCache(item.getId() == null ? "" : item.getId().toString(), item);
RoleUserQuery roleUserQuery = new RoleUserQuery();
roleUserQuery.setUserId(item.getId());
roleUserQuery.setRoleIdList(Arrays.asList(1L));
roleUserService.doDistributionRole(roleUserQuery);
});
}
if (!ObjectUtils.isEmpty(saveUpdateCollect.get(false))) {
//需要新增的用户
log.info("需要更新用户数量:{}", saveUpdateCollect.get(false).size());
saveUpdateCollect.get(false).stream().forEach(item -> {
this.getUserDao().update(item);
this.putCache(item.getId() == null ? "" : item.getId().toString(), item);
});
}
//差集删除
Set<String> collectSet = newUserList.parallelStream().map(x -> x.getLoginName()).collect(Collectors.toSet());
Long[] removeUserIds = this.getCacheList().parallelStream().filter(f -> !collectSet.contains(f.getLoginName())).map(i -> i.getId()).distinct().toArray(Long[]::new);
if (!ObjectUtils.isEmpty(removeUserIds)) {
log.info("需要删除的本地用户数量:{}", removeUserIds.length);
this.remove(removeUserIds, null);
}
this.updateUserList(userPduList);
}
}
}*/
return Rest.ok();
}
@Override
public UserDao getUserDao() {
return this.getDao();
}
public static void main(String[] args) throws Exception {
//eba467f81fb265befdf1f6ab041d39ab 原始admin密码
......
......@@ -2,7 +2,9 @@ package com.mortals.xhx.base.system.user.web;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.Rest;
import com.mortals.framework.common.code.UserType;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
......@@ -16,10 +18,7 @@ import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
......@@ -37,11 +36,7 @@ import java.util.Map;
@RequestMapping("user")
public class UserController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> {
@Autowired
private UserService userService;
public UserController() {
super.setFormClass(UserForm.class);
super.setModuleDesc("用户信息");
}
......@@ -63,26 +58,6 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
}
}
@Override
protected int editAfter(Long id, Map<String, Object> model, UserEntity entity, Context context) throws AppException {
entity.setLoginPwd(null);
entity.setLoginPwd1(null);
entity.setLoginPwd2(null);
return super.editAfter(id, model, entity, context);
}
@Override
protected int saveAfter(UserEntity entity, Map<String, Object> model, Context context) throws AppException {
if (entity.getId() == getCurUser().getId()) {
//saveCurrUserForSession(request, response, userService.get(form.getEntity().getId(), false));
}
return super.saveAfter(entity, model, context);
}
@Override
protected void saveBefore(UserEntity entity, Map<String, Object> model, Context context) throws AppException {
if (service.existUser(entity.getLoginName(), entity.getId())) {
......@@ -108,6 +83,15 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
}
@PostMapping({"refreshUser"})
@UnAuth
public Rest<Object> refreshUser() {
log.info("刷新用户");
this.service.refreshUser();
return Rest.ok("用户同步刷新操作成功");
}
public static void main(String[] args) {
String token = "eyJhbGciOiJIUzI1NiJ9.eyJsb2dpbl91c2VyX2tleSI6IjIzNGE5NDA5ZDVhOTQ3MWNhMzdkYjZkYmMwY2JjZTc5In0.MWyQW40HYDxyUz7PJRf_nRsFPWx3Hr811Ime984nixs";
......
/**
* 文件:UserForm.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.user.web;
import com.mortals.framework.web.BaseCRUDFormLong;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.model.UserQuery;
/**
* <p>Title: 用户信息</p>
* <p>Description: UserForm </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class UserForm extends BaseCRUDFormLong<UserEntity> {
private UserEntity entity = new UserEntity();
private UserQuery query = new UserQuery();
public UserForm(){
}
@Override
public UserEntity getEntity() {
return entity;
}
public void setEntity(UserEntity entity) {
this.entity = entity;
}
@Override
public UserQuery getQuery() {
return query;
}
public void setQuery(UserQuery query) {
this.query = query;
}
}
\ No newline at end of file
package com.mortals.xhx.common.utils;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.stream.Collectors;
public class ControllerScanUtil {
/**
* 查看类路径
*/
public static final String[] ULR_VIEW = {"view", "info", "list", "get", "find", "export", "download",
"index", "bill"};
public static final String[] WHITE_URL = {"login", "test","file","securitycode"};
public static void main(String[] args) {
List<Class<?>> classList = getAllClassByPackageName("com.mortals.xhx");
//System.out.println(classList); //获取到了所有的类
getAnnotationInfo(classList);
}
public static List<ResourceEntity> getAnnotationInfo(List<Class<?>> clsList) {
List<ResourceEntity> resourceArrayList = new ArrayList<>();
if (clsList != null && clsList.size() > 0) {
for (Class<?> cls : clsList) {
boolean exits = cls.isAnnotationPresent(RestController.class);
if (!exits) {
continue;
}
//白名单地址的 也不需要
ResourceEntity resourceViewEntity = new ResourceEntity();
resourceViewEntity.initAttrValue();
ResourceEntity resourceEditEntity = new ResourceEntity();
resourceEditEntity.initAttrValue();
Method substringMethod = null;
String result = "";
try {
String packName = cls.getPackage().getName();
if (StrUtil.contains(packName, "system")) {
//系统管理-xx管理-
substringMethod = cls.getMethod("getModuleDesc");
result = (String) substringMethod.invoke(cls.newInstance());
resourceViewEntity.setName("系统管理-" + result + "管理-查看");
resourceEditEntity.setName("系统管理-" + result + "管理-维护");
} else {
substringMethod = cls.getMethod("getModuleDesc");
result = (String) substringMethod.invoke(cls.newInstance());
resourceViewEntity.setName(result + "-查看");
resourceEditEntity.setName(result + "-维护");
}
} catch (Exception e) {
}
RequestMapping requestMappingCls = cls.getAnnotation(RequestMapping.class);
String prefix = "";
if (requestMappingCls != null) {
prefix = "/" + requestMappingCls.value()[0];
boolean b = false;
for (String s : WHITE_URL) {
if (StrUtil.contains(requestMappingCls.value()[0].toLowerCase(), s)) {
b = true;
break;
}
}
if (b) {
continue;
}
}
if (ObjectUtils.isEmpty(result)) {
if (requestMappingCls != null) {
result = StrUtil.removeSuffix(StrUtil.removePrefix(requestMappingCls.value()[0].toUpperCase(), "/"), "/") + "接口模块";
}
resourceViewEntity.setName(result + "-查看");
resourceEditEntity.setName(result + "-维护");
}
Set<String> urlSet = new HashSet<>();
//获取类中的所有的方法
Method[] methods = cls.getDeclaredMethods();
if (methods != null && methods.length > 0) {
for (Method method : methods) {
boolean unAuth = method.isAnnotationPresent(UnAuth.class);
if (unAuth) {
continue;
}
boolean mExits = method.isAnnotationPresent(RequestMapping.class);
if (mExits) {
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
String url = prefix + "/" + requestMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits1 = method.isAnnotationPresent(GetMapping.class);
if (mExits1) {
GetMapping getMapping = method.getAnnotation(GetMapping.class);
String url = prefix + "/" + getMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits2 = method.isAnnotationPresent(PostMapping.class);
if (mExits2) {
PostMapping postMapping = method.getAnnotation(PostMapping.class);
String url = prefix + "/" + postMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
}
}
//获取超类中的方法
Method[] superMethods = cls.getSuperclass().getDeclaredMethods();
if (superMethods != null && superMethods.length > 0) {
for (Method method : superMethods) {
boolean unAuth = method.isAnnotationPresent(UnAuth.class);
if (unAuth) {
continue;
}
boolean mExits = method.isAnnotationPresent(RequestMapping.class);
if (mExits) {
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
String url = prefix + "/" + requestMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits1 = method.isAnnotationPresent(GetMapping.class);
if (mExits1) {
GetMapping getMapping = method.getAnnotation(GetMapping.class);
String url = prefix + "/" + getMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits2 = method.isAnnotationPresent(PostMapping.class);
if (mExits2) {
PostMapping postMapping = method.getAnnotation(PostMapping.class);
String url = prefix + "/" + postMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
}
}
if (!ObjectUtils.isEmpty(urlSet)) {
Set<String> UrlViewSet = new HashSet<>();
Set<String> UrlEditSet = new HashSet<>();
for (String url : urlSet) {
String str = StrUtil.subAfter(url, "/", true);
boolean bool = false;
for (String checkStr : ULR_VIEW) {
boolean contains = StrUtil.contains(str.toLowerCase(), checkStr);
if (contains) {
UrlViewSet.add(url);
bool = true;
break;
}
}
if (!bool) {
UrlEditSet.add(url);
}
}
resourceViewEntity.setUrl(UrlViewSet.stream().collect(Collectors.joining(",")));
System.out.println(JSONObject.toJSONString(resourceViewEntity));
resourceArrayList.add(resourceViewEntity);
resourceEditEntity.setUrl(UrlEditSet.stream().collect(Collectors.joining(",")));
System.out.println(JSONObject.toJSONString(resourceEditEntity));
resourceArrayList.add(resourceEditEntity);
}
}
}
return resourceArrayList;
}
public static List<Class<?>> getAllClassByPackageName(String packageName) {
// 获取当前包下以及子包下所以的类
List<Class<?>> returnClassList = getClasses(packageName);
return returnClassList;
}
/**
* 从包package中获取所有的Class
*
* @param packageName
* @return
*/
private static List<Class<?>> getClasses(String packageName) {
// 第一个class类的集合
List<Class<?>> classes = new ArrayList<Class<?>>();
// 是否循环迭代
boolean recursive = true;
// 获取包的名字 并进行替换
String packageDirName = packageName.replace('.', '/');
// 定义一个枚举的集合 并进行循环来处理这个目录下的things
Enumeration<URL> dirs;
try {
dirs = Thread.currentThread().getContextClassLoader().getResources(packageDirName);
// 循环迭代下去
while (dirs.hasMoreElements()) {
// 获取下一个元素
URL url = dirs.nextElement();
// 得到协议的名称
String protocol = url.getProtocol();
//System.out.println(url.getFile());
// 如果是以文件的形式保存在服务器上
if ("file".equals(protocol)) {
// 获取包的物理路径
String filePath = URLDecoder.decode(url.getFile(), "UTF-8");
// 以文件的方式扫描整个包下的文件 并添加到集合中
findAndAddClassesInPackageByFile(packageName, filePath, recursive, classes);
} else if ("jar".equals(protocol)) {
// 如果是jar包文件
// 定义一个JarFile
JarFile jar;
try {
// 获取jar
jar = ((JarURLConnection) url.openConnection()).getJarFile();
// 从此jar包 得到一个枚举类
Enumeration<JarEntry> entries = jar.entries();
// 同样的进行循环迭代
while (entries.hasMoreElements()) {
// 获取jar里的一个实体 可以是目录 和一些jar包里的其他文件 如META-INF等文件
JarEntry entry = entries.nextElement();
String name = entry.getName();
// 如果是以/开头的
if (name.charAt(0) == '/') {
// 获取后面的字符串
name = name.substring(1);
}
// 如果前半部分和定义的包名相同
if (name.startsWith(packageDirName)) {
int idx = name.lastIndexOf('/');
// 如果以"/"结尾 是一个包
if (idx != -1) {
// 获取包名 把"/"替换成"."
packageName = name.substring(0, idx).replace('/', '.');
}
// 如果可以迭代下去 并且是一个包
if ((idx != -1) || recursive) {
// 如果是一个.class文件 而且不是目录
if (name.endsWith(".class") && !entry.isDirectory()) {
// 去掉后面的".class" 获取真正的类名
String className = name.substring(packageName.length() + 1, name.length() - 6);
try {
// 添加到classes
classes.add(Class.forName(packageName + '.' + className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return classes;
}
/**
* 以文件的形式来获取包下的所有Class
*
* @param packageName
* @param packagePath
* @param recursive
* @param classes
*/
private static void findAndAddClassesInPackageByFile(String packageName, String packagePath, final boolean recursive, List<Class<?>> classes) {
// 获取此包的目录 建立一个File
File dir = new File(packagePath);
// 如果不存在或者 也不是目录就直接返回
if (!dir.exists() || !dir.isDirectory()) {
return;
}
// 如果存在 就获取包下的所有文件 包括目录
File[] dirFiles = dir.listFiles(new FileFilter() {
// 自定义过滤规则 如果可以循环(包含子目录) 或则是以.class结尾的文件(编译好的java类文件)
public boolean accept(File file) {
return (recursive && file.isDirectory()) || (file.getName().endsWith(".class"));
}
});
assert dirFiles != null;
// 循环所有文件
for (File file : dirFiles) {
// 如果是目录 则继续扫描
if (file.isDirectory()) {
findAndAddClassesInPackageByFile(packageName + "." + file.getName(), file.getAbsolutePath(), recursive, classes);
} else {
// 如果是java类文件 去掉后面的.class 只留下类名
String className = file.getName().substring(0, file.getName().length() - 6);
try {
// 添加到集合中去
classes.add(Class.forName(packageName + '.' + className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
......@@ -42,6 +42,9 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
@Override
public void excuteTask(ITask task) throws AppException {
userService.refreshUser();
log.info("同步用户");
UserPdu userPdu = new UserPdu();
userPdu.setPage(1);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.base.system.user.dao.ibatis.UserDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="UserEntity" id="UserEntity-Map">
<result property="id" column="id" />
<id property="id" column="id" />
<result property="loginName" column="loginName" />
<result property="loginPwd" column="loginPwd" />
<result property="loginPwd1" column="loginPwd1" />
<result property="loginPwd2" column="loginPwd2" />
<result property="loginPwd3" column="loginPwd3" />
<result property="loginLimitAddress" column="loginLimitAddress" />
<result property="realName" column="realName" />
<result property="mobile" column="mobile" />
......@@ -18,109 +15,96 @@
<result property="email" column="email" />
<result property="qq" column="qq" />
<result property="userType" column="userType" />
<result property="siteId" column="siteId" />
<result property="siteIds" column="siteIds" />
<result property="areaCodes" column="areaCodes" />
<result property="status" column="status" />
<result property="customerId" column="customerId" />
<result property="createTime" column="createTime" />
<result property="createUserId" column="createUserId" />
<result property="createUserName" column="createUserName" />
<result property="lastLoginTime" column="lastLoginTime" />
<result property="lastLoginAddress" column="lastLoginAddress" />
<result property="lastModPwdTime" column="lastModPwdTime" />
<result property="lastModPwdAddr" column="lastModPwdAddr" />
</resultMap>
<!-- 表所有列 -->
<sql id="_columns">
<trim suffixOverrides="," suffix="">
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
a.id as id,
a.id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginName') or colPickMode == 1 and data.containsKey('loginName')))">
a.loginName as loginName,
a.loginName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd') or colPickMode == 1 and data.containsKey('loginPwd')))">
a.loginPwd as loginPwd,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd1') or colPickMode == 1 and data.containsKey('loginPwd1')))">
a.loginPwd1 as loginPwd1,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd2') or colPickMode == 1 and data.containsKey('loginPwd2')))">
a.loginPwd2 as loginPwd2,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd3') or colPickMode == 1 and data.containsKey('loginPwd3')))">
a.loginPwd3 as loginPwd3,
a.loginPwd,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginLimitAddress') or colPickMode == 1 and data.containsKey('loginLimitAddress')))">
a.loginLimitAddress as loginLimitAddress,
a.loginLimitAddress,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('realName') or colPickMode == 1 and data.containsKey('realName')))">
a.realName as realName,
a.realName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('mobile') or colPickMode == 1 and data.containsKey('mobile')))">
a.mobile as mobile,
a.mobile,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('phone') or colPickMode == 1 and data.containsKey('phone')))">
a.phone as phone,
a.phone,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('email') or colPickMode == 1 and data.containsKey('email')))">
a.email as email,
a.email,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('qq') or colPickMode == 1 and data.containsKey('qq')))">
a.qq as qq,
a.qq,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('userType') or colPickMode == 1 and data.containsKey('userType')))">
a.userType as userType,
a.userType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteId') or colPickMode == 1 and data.containsKey('siteId')))">
a.siteId as siteId,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteIds') or colPickMode == 1 and data.containsKey('siteIds')))">
a.siteIds,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('status') or colPickMode == 1 and data.containsKey('status')))">
a.status as status,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('areaCodes') or colPickMode == 1 and data.containsKey('areaCodes')))">
a.areaCodes,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('customerId') or colPickMode == 1 and data.containsKey('customerId')))">
a.customerId as customerId,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('status') or colPickMode == 1 and data.containsKey('status')))">
a.status,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.createTime as createTime,
a.createTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.createUserId as createUserId,
a.createUserId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserName') or colPickMode == 1 and data.containsKey('createUserName')))">
a.createUserName as createUserName,
a.createUserName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastLoginTime') or colPickMode == 1 and data.containsKey('lastLoginTime')))">
a.lastLoginTime as lastLoginTime,
a.lastLoginTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastLoginAddress') or colPickMode == 1 and data.containsKey('lastLoginAddress')))">
a.lastLoginAddress as lastLoginAddress,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastModPwdTime') or colPickMode == 1 and data.containsKey('lastModPwdTime')))">
a.lastModPwdTime as lastModPwdTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastModPwdAddr') or colPickMode == 1 and data.containsKey('lastModPwdAddr')))">
a.lastModPwdAddr as lastModPwdAddr,
a.lastLoginAddress,
</if>
</trim>
</sql>
<!-- 新增 -->
<insert id="insert" parameterType="UserEntity" keyProperty="id">
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="UserEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_user
(loginName,loginPwd,loginPwd1,loginPwd2,loginPwd3,loginLimitAddress,realName,mobile,phone,email,qq,userType,siteId,status,customerId,createTime,createUserId,createUserName,lastLoginTime,lastLoginAddress,lastModPwdTime,lastModPwdAddr)
(loginName,loginPwd,loginLimitAddress,realName,mobile,phone,email,qq,userType,siteIds,areaCodes,status,createTime,createUserId,createUserName,lastLoginTime,lastLoginAddress)
VALUES
(#{loginName},#{loginPwd},#{loginPwd1},#{loginPwd2},#{loginPwd3},#{loginLimitAddress},#{realName},#{mobile},#{phone},#{email},#{qq},#{userType},#{siteId},#{status},#{customerId},#{createTime},#{createUserId},#{createUserName},#{lastLoginTime},#{lastLoginAddress},#{lastModPwdTime},#{lastModPwdAddr})
(#{loginName},#{loginPwd},#{loginLimitAddress},#{realName},#{mobile},#{phone},#{email},#{qq},#{userType},#{siteIds},#{areaCodes},#{status},#{createTime},#{createUserId},#{createUserName},#{lastLoginTime},#{lastLoginAddress})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_user
(loginName,loginPwd,loginPwd1,loginPwd2,loginPwd3,loginLimitAddress,realName,mobile,phone,email,qq,userType,siteId,status,customerId,createTime,createUserId,createUserName,lastLoginTime,lastLoginAddress,lastModPwdTime,lastModPwdAddr)
(loginName,loginPwd,loginLimitAddress,realName,mobile,phone,email,qq,userType,siteIds,areaCodes,status,createTime,createUserId,createUserName,lastLoginTime,lastLoginAddress)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.loginName},#{item.loginPwd},#{item.loginPwd1},#{item.loginPwd2},#{item.loginPwd3},#{item.loginLimitAddress},#{item.realName},#{item.mobile},#{item.phone},#{item.email},#{item.qq},#{item.userType},#{item.siteId},#{item.status},#{item.customerId},#{item.createTime},#{item.createUserId},#{item.createUserName},#{item.lastLoginTime},#{item.lastLoginAddress},#{item.lastModPwdTime},#{item.lastModPwdAddr})
(#{item.loginName},#{item.loginPwd},#{item.loginLimitAddress},#{item.realName},#{item.mobile},#{item.phone},#{item.email},#{item.qq},#{item.userType},#{item.siteIds},#{item.areaCodes},#{item.status},#{item.createTime},#{item.createUserId},#{item.createUserName},#{item.lastLoginTime},#{item.lastLoginAddress})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_user as a
......@@ -132,15 +116,6 @@
<if test="(colPickMode==0 and data.containsKey('loginPwd')) or (colPickMode==1 and !data.containsKey('loginPwd'))">
a.loginPwd=#{data.loginPwd},
</if>
<if test="(colPickMode==0 and data.containsKey('loginPwd1')) or (colPickMode==1 and !data.containsKey('loginPwd1'))">
a.loginPwd1=#{data.loginPwd1},
</if>
<if test="(colPickMode==0 and data.containsKey('loginPwd2')) or (colPickMode==1 and !data.containsKey('loginPwd2'))">
a.loginPwd2=#{data.loginPwd2},
</if>
<if test="(colPickMode==0 and data.containsKey('loginPwd3')) or (colPickMode==1 and !data.containsKey('loginPwd3'))">
a.loginPwd3=#{data.loginPwd3},
</if>
<if test="(colPickMode==0 and data.containsKey('loginLimitAddress')) or (colPickMode==1 and !data.containsKey('loginLimitAddress'))">
a.loginLimitAddress=#{data.loginLimitAddress},
</if>
......@@ -165,11 +140,11 @@
<if test="(colPickMode==0 and data.containsKey('userTypeIncrement')) or (colPickMode==1 and !data.containsKey('userTypeIncrement'))">
a.userType=ifnull(a.userType,0) + #{data.userTypeIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('siteId')) or (colPickMode==1 and !data.containsKey('siteId'))">
a.siteId=#{data.siteId},
<if test="(colPickMode==0 and data.containsKey('siteIds')) or (colPickMode==1 and !data.containsKey('siteIds'))">
a.siteIds=#{data.siteIds},
</if>
<if test="(colPickMode==0 and data.containsKey('siteIdIncrement')) or (colPickMode==1 and !data.containsKey('siteIdIncrement'))">
a.siteId=ifnull(a.siteId,0) + #{data.siteIdIncrement},
<if test="(colPickMode==0 and data.containsKey('areaCodes')) or (colPickMode==1 and !data.containsKey('areaCodes'))">
a.areaCodes=#{data.areaCodes},
</if>
<if test="(colPickMode==0 and data.containsKey('status')) or (colPickMode==1 and !data.containsKey('status'))">
a.status=#{data.status},
......@@ -177,12 +152,6 @@
<if test="(colPickMode==0 and data.containsKey('statusIncrement')) or (colPickMode==1 and !data.containsKey('statusIncrement'))">
a.status=ifnull(a.status,0) + #{data.statusIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('customerId')) or (colPickMode==1 and !data.containsKey('customerId'))">
a.customerId=#{data.customerId},
</if>
<if test="(colPickMode==0 and data.containsKey('customerIdIncrement')) or (colPickMode==1 and !data.containsKey('customerIdIncrement'))">
a.customerId=ifnull(a.customerId,0) + #{data.customerIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime},
</if>
......@@ -201,12 +170,6 @@
<if test="(colPickMode==0 and data.containsKey('lastLoginAddress')) or (colPickMode==1 and !data.containsKey('lastLoginAddress'))">
a.lastLoginAddress=#{data.lastLoginAddress},
</if>
<if test="(colPickMode==0 and data.containsKey('lastModPwdTime')) or (colPickMode==1 and !data.containsKey('lastModPwdTime'))">
a.lastModPwdTime=#{data.lastModPwdTime},
</if>
<if test="(colPickMode==0 and data.containsKey('lastModPwdAddr')) or (colPickMode==1 and !data.containsKey('lastModPwdAddr'))">
a.lastModPwdAddr=#{data.lastModPwdAddr},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
......@@ -219,8 +182,6 @@
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_user as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="loginName=(case" suffix="ELSE loginName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginName')) or (colPickMode==1 and !item.containsKey('loginName'))">
......@@ -228,7 +189,6 @@
</if>
</foreach>
</trim>
<trim prefix="loginPwd=(case" suffix="ELSE loginPwd end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginPwd')) or (colPickMode==1 and !item.containsKey('loginPwd'))">
......@@ -236,31 +196,6 @@
</if>
</foreach>
</trim>
<trim prefix="loginPwd1=(case" suffix="ELSE loginPwd1 end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginPwd1')) or (colPickMode==1 and !item.containsKey('loginPwd1'))">
when a.id=#{item.id} then #{item.loginPwd1}
</if>
</foreach>
</trim>
<trim prefix="loginPwd2=(case" suffix="ELSE loginPwd2 end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginPwd2')) or (colPickMode==1 and !item.containsKey('loginPwd2'))">
when a.id=#{item.id} then #{item.loginPwd2}
</if>
</foreach>
</trim>
<trim prefix="loginPwd3=(case" suffix="ELSE loginPwd3 end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginPwd3')) or (colPickMode==1 and !item.containsKey('loginPwd3'))">
when a.id=#{item.id} then #{item.loginPwd3}
</if>
</foreach>
</trim>
<trim prefix="loginLimitAddress=(case" suffix="ELSE loginLimitAddress end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginLimitAddress')) or (colPickMode==1 and !item.containsKey('loginLimitAddress'))">
......@@ -268,7 +203,6 @@
</if>
</foreach>
</trim>
<trim prefix="realName=(case" suffix="ELSE realName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('realName')) or (colPickMode==1 and !item.containsKey('realName'))">
......@@ -276,7 +210,6 @@
</if>
</foreach>
</trim>
<trim prefix="mobile=(case" suffix="ELSE mobile end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('mobile')) or (colPickMode==1 and !item.containsKey('mobile'))">
......@@ -284,7 +217,6 @@
</if>
</foreach>
</trim>
<trim prefix="phone=(case" suffix="ELSE phone end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('phone')) or (colPickMode==1 and !item.containsKey('phone'))">
......@@ -292,7 +224,6 @@
</if>
</foreach>
</trim>
<trim prefix="email=(case" suffix="ELSE email end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('email')) or (colPickMode==1 and !item.containsKey('email'))">
......@@ -300,7 +231,6 @@
</if>
</foreach>
</trim>
<trim prefix="qq=(case" suffix="ELSE qq end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('qq')) or (colPickMode==1 and !item.containsKey('qq'))">
......@@ -308,7 +238,6 @@
</if>
</foreach>
</trim>
<trim prefix="userType=(case" suffix="ELSE userType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
......@@ -321,20 +250,20 @@
</choose>
</foreach>
</trim>
<trim prefix="siteId=(case" suffix="ELSE siteId end),">
<trim prefix="siteIds=(case" suffix="ELSE siteIds end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('siteId')) or (colPickMode==1 and !item.containsKey('siteId'))">
when a.id=#{item.id} then #{item.siteId}
</when>
<when test="(colPickMode==0 and item.containsKey('siteIdIncrement')) or (colPickMode==1 and !item.containsKey('siteIdIncrement'))">
when a.id=#{item.id} then ifnull(a.siteId,0) + #{item.siteIdIncrement}
</when>
</choose>
<if test="(colPickMode==0 and item.containsKey('siteIds')) or (colPickMode==1 and !item.containsKey('siteIds'))">
when a.id=#{item.id} then #{item.siteIds}
</if>
</foreach>
</trim>
<trim prefix="areaCodes=(case" suffix="ELSE areaCodes end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('areaCodes')) or (colPickMode==1 and !item.containsKey('areaCodes'))">
when a.id=#{item.id} then #{item.areaCodes}
</if>
</foreach>
</trim>
<trim prefix="status=(case" suffix="ELSE status end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
......@@ -347,20 +276,6 @@
</choose>
</foreach>
</trim>
<trim prefix="customerId=(case" suffix="ELSE customerId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('customerId')) or (colPickMode==1 and !item.containsKey('customerId'))">
when a.id=#{item.id} then #{item.customerId}
</when>
<when test="(colPickMode==0 and item.containsKey('customerIdIncrement')) or (colPickMode==1 and !item.containsKey('customerIdIncrement'))">
when a.id=#{item.id} then ifnull(a.customerId,0) + #{item.customerIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="createTime=(case" suffix="ELSE createTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
......@@ -368,7 +283,6 @@
</if>
</foreach>
</trim>
<trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
......@@ -381,7 +295,6 @@
</choose>
</foreach>
</trim>
<trim prefix="createUserName=(case" suffix="ELSE createUserName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('createUserName')) or (colPickMode==1 and !item.containsKey('createUserName'))">
......@@ -389,7 +302,6 @@
</if>
</foreach>
</trim>
<trim prefix="lastLoginTime=(case" suffix="ELSE lastLoginTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('lastLoginTime')) or (colPickMode==1 and !item.containsKey('lastLoginTime'))">
......@@ -397,7 +309,6 @@
</if>
</foreach>
</trim>
<trim prefix="lastLoginAddress=(case" suffix="ELSE lastLoginAddress end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('lastLoginAddress')) or (colPickMode==1 and !item.containsKey('lastLoginAddress'))">
......@@ -405,22 +316,6 @@
</if>
</foreach>
</trim>
<trim prefix="lastModPwdTime=(case" suffix="ELSE lastModPwdTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('lastModPwdTime')) or (colPickMode==1 and !item.containsKey('lastModPwdTime'))">
when a.id=#{item.id} then #{item.lastModPwdTime}
</if>
</foreach>
</trim>
<trim prefix="lastModPwdAddr=(case" suffix="ELSE lastModPwdAddr end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('lastModPwdAddr')) or (colPickMode==1 and !item.containsKey('lastModPwdAddr'))">
when a.id=#{item.id} then #{item.lastModPwdAddr}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
......@@ -466,6 +361,9 @@
</trim>
<include refid="_orderCols_"/>
</select>
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
......@@ -514,7 +412,6 @@
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
......@@ -572,51 +469,6 @@
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginPwd1')">
<if test="conditionParamRef.loginPwd1 != null and conditionParamRef.loginPwd1 != ''">
${_conditionType_} a.loginPwd1 like #{${_conditionParam_}.loginPwd1}
</if>
<if test="conditionParamRef.loginPwd1 == null">
${_conditionType_} a.loginPwd1 is null
</if>
</if>
<if test="conditionParamRef.containsKey('loginPwd1List')">
${_conditionType_} a.loginPwd1 in
<foreach collection="conditionParamRef.loginPwd1List" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginPwd2')">
<if test="conditionParamRef.loginPwd2 != null and conditionParamRef.loginPwd2 != ''">
${_conditionType_} a.loginPwd2 like #{${_conditionParam_}.loginPwd2}
</if>
<if test="conditionParamRef.loginPwd2 == null">
${_conditionType_} a.loginPwd2 is null
</if>
</if>
<if test="conditionParamRef.containsKey('loginPwd2List')">
${_conditionType_} a.loginPwd2 in
<foreach collection="conditionParamRef.loginPwd2List" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginPwd3')">
<if test="conditionParamRef.loginPwd3 != null and conditionParamRef.loginPwd3 != ''">
${_conditionType_} a.loginPwd3 like #{${_conditionParam_}.loginPwd3}
</if>
<if test="conditionParamRef.loginPwd3 == null">
${_conditionType_} a.loginPwd3 is null
</if>
</if>
<if test="conditionParamRef.containsKey('loginPwd3List')">
${_conditionType_} a.loginPwd3 in
<foreach collection="conditionParamRef.loginPwd3List" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginLimitAddress')">
<if test="conditionParamRef.loginLimitAddress != null and conditionParamRef.loginLimitAddress != ''">
${_conditionType_} a.loginLimitAddress like #{${_conditionParam_}.loginLimitAddress}
......@@ -727,27 +579,36 @@
${_conditionType_} a.userType <![CDATA[ <= ]]> #{${_conditionParam_}.userTypeEnd}
</if>
<if test="conditionParamRef.containsKey('siteId')">
<if test="conditionParamRef.siteId != null ">
${_conditionType_} a.siteId = #{${_conditionParam_}.siteId}
<if test="conditionParamRef.containsKey('siteIds')">
<if test="conditionParamRef.siteIds != null and conditionParamRef.siteIds != ''">
${_conditionType_} a.siteIds like #{${_conditionParam_}.siteIds}
</if>
<if test="conditionParamRef.siteId == null">
${_conditionType_} a.siteId is null
<if test="conditionParamRef.siteIds == null">
${_conditionType_} a.siteIds is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteIdList')">
${_conditionType_} a.siteId in
<foreach collection="conditionParamRef.siteIdList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('siteIdsList')">
${_conditionType_} a.siteIds in
<foreach collection="conditionParamRef.siteIdsList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteIdStart') and conditionParamRef.siteIdStart != null">
${_conditionType_} a.siteId <![CDATA[ >= ]]> #{${_conditionParam_}.siteIdStart}
<if test="conditionParamRef.containsKey('areaCodes')">
<if test="conditionParamRef.areaCodes != null and conditionParamRef.areaCodes != ''">
${_conditionType_} a.areaCodes like #{${_conditionParam_}.areaCodes}
</if>
<if test="conditionParamRef.containsKey('siteIdEnd') and conditionParamRef.siteIdEnd != null">
${_conditionType_} a.siteId <![CDATA[ <= ]]> #{${_conditionParam_}.siteIdEnd}
<if test="conditionParamRef.areaCodes == null">
${_conditionType_} a.areaCodes is null
</if>
</if>
<if test="conditionParamRef.containsKey('areaCodesList')">
${_conditionType_} a.areaCodes in
<foreach collection="conditionParamRef.areaCodesList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('status')">
<if test="conditionParamRef.status != null ">
${_conditionType_} a.status = #{${_conditionParam_}.status}
......@@ -769,27 +630,6 @@
${_conditionType_} a.status <![CDATA[ <= ]]> #{${_conditionParam_}.statusEnd}
</if>
<if test="conditionParamRef.containsKey('customerId')">
<if test="conditionParamRef.customerId != null ">
${_conditionType_} a.customerId = #{${_conditionParam_}.customerId}
</if>
<if test="conditionParamRef.customerId == null">
${_conditionType_} a.customerId is null
</if>
</if>
<if test="conditionParamRef.containsKey('customerIdList')">
${_conditionType_} a.customerId in
<foreach collection="conditionParamRef.customerIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('customerIdStart') and conditionParamRef.customerIdStart != null">
${_conditionType_} a.customerId <![CDATA[ >= ]]> #{${_conditionParam_}.customerIdStart}
</if>
<if test="conditionParamRef.containsKey('customerIdEnd') and conditionParamRef.customerIdEnd != null">
${_conditionType_} a.customerId <![CDATA[ <= ]]> #{${_conditionParam_}.customerIdEnd}
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
......@@ -871,36 +711,6 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('lastModPwdTime')">
<if test="conditionParamRef.lastModPwdTime != null ">
${_conditionType_} a.lastModPwdTime = #{${_conditionParam_}.lastModPwdTime}
</if>
<if test="conditionParamRef.lastModPwdTime == null">
${_conditionType_} a.lastModPwdTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('lastModPwdTimeStart') and conditionParamRef.lastModPwdTimeStart != null and conditionParamRef.lastModPwdTimeStart!=''">
${_conditionType_} a.lastModPwdTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.lastModPwdTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('lastModPwdTimeEnd') and conditionParamRef.lastModPwdTimeEnd != null and conditionParamRef.lastModPwdTimeEnd!=''">
${_conditionType_} a.lastModPwdTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.lastModPwdTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('lastModPwdAddr')">
<if test="conditionParamRef.lastModPwdAddr != null and conditionParamRef.lastModPwdAddr != ''">
${_conditionType_} a.lastModPwdAddr like #{${_conditionParam_}.lastModPwdAddr}
</if>
<if test="conditionParamRef.lastModPwdAddr == null">
${_conditionType_} a.lastModPwdAddr is null
</if>
</if>
<if test="conditionParamRef.containsKey('lastModPwdAddrList')">
${_conditionType_} a.lastModPwdAddr in
<foreach collection="conditionParamRef.lastModPwdAddrList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
......@@ -929,21 +739,6 @@
<if test='orderCol.loginPwd != null and "DESC".equalsIgnoreCase(orderCol.loginPwd)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('loginPwd1')">
a.loginPwd1
<if test='orderCol.loginPwd1 != null and "DESC".equalsIgnoreCase(orderCol.loginPwd1)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('loginPwd2')">
a.loginPwd2
<if test='orderCol.loginPwd2 != null and "DESC".equalsIgnoreCase(orderCol.loginPwd2)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('loginPwd3')">
a.loginPwd3
<if test='orderCol.loginPwd3 != null and "DESC".equalsIgnoreCase(orderCol.loginPwd3)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('loginLimitAddress')">
a.loginLimitAddress
<if test='orderCol.loginLimitAddress != null and "DESC".equalsIgnoreCase(orderCol.loginLimitAddress)'>DESC</if>
......@@ -979,9 +774,14 @@
<if test='orderCol.userType != null and "DESC".equalsIgnoreCase(orderCol.userType)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteId')">
a.siteId
<if test='orderCol.siteId != null and "DESC".equalsIgnoreCase(orderCol.siteId)'>DESC</if>
<if test="orderCol.containsKey('siteIds')">
a.siteIds
<if test='orderCol.siteIds != null and "DESC".equalsIgnoreCase(orderCol.siteIds)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('areaCodes')">
a.areaCodes
<if test='orderCol.areaCodes != null and "DESC".equalsIgnoreCase(orderCol.areaCodes)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('status')">
......@@ -989,11 +789,6 @@
<if test='orderCol.status != null and "DESC".equalsIgnoreCase(orderCol.status)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('customerId')">
a.customerId
<if test='orderCol.customerId != null and "DESC".equalsIgnoreCase(orderCol.customerId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
......@@ -1019,16 +814,6 @@
<if test='orderCol.lastLoginAddress != null and "DESC".equalsIgnoreCase(orderCol.lastLoginAddress)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('lastModPwdTime')">
a.lastModPwdTime
<if test='orderCol.lastModPwdTime != null and "DESC".equalsIgnoreCase(orderCol.lastModPwdTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('lastModPwdAddr')">
a.lastModPwdAddr
<if test='orderCol.lastModPwdAddr != null and "DESC".equalsIgnoreCase(orderCol.lastModPwdAddr)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
......
......@@ -85,6 +85,12 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.12</version>
</dependency>
</dependencies>
<build>
......
package com.mortals.xhx.feign.selfsystem;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
/**
* 自助服务系统 Feign接口
*
* @author zxfei
* @date 2022-10-26
*/
@FeignClient(name = "sst-manager", path = "/sst", fallbackFactory = SelfSystemFeignFallbackFactory.class)
public interface ISelfSystemFeign extends IFeign {
/**
* 用户刷新通知
*
* @param
* @return
*/
@PostMapping(value = "/user/refreshUser")
Rest<Void> refreshUser();
}
@Slf4j
@Component
class SelfSystemFeignFallbackFactory implements FallbackFactory<ISelfSystemFeign> {
@Override
public ISelfSystemFeign create(Throwable t) {
return new ISelfSystemFeign() {
/**
* @return
*/
@Override
public Rest<Void> refreshUser() {
return Rest.fail("暂时无法通知设备,请稍后再试!");
}
};
}
}
package com.mortals.xhx.feign.smartoffice;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
/**
* 服务系统 Feign接口
*
* @author zxfei
* @date 2022-10-26
*/
@FeignClient(name = "smart-office-manager", path = "/office", fallbackFactory = SmartSystemFeignFallbackFactory.class)
public interface ISmartSystemFeign extends IFeign {
/**
* 用户刷新通知
*
* @param
* @return
*/
@PostMapping(value = "/user/refreshUser")
Rest<Void> refreshUser();
}
@Slf4j
@Component
class SmartSystemFeignFallbackFactory implements FallbackFactory<ISmartSystemFeign> {
@Override
public ISmartSystemFeign create(Throwable t) {
return new ISmartSystemFeign() {
/**
* @return
*/
@Override
public Rest<Void> refreshUser() {
return Rest.fail("暂时无法通知设备,请稍后再试!");
}
};
}
}
......@@ -193,11 +193,6 @@
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>
<!--Token生成与解析-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
......
......@@ -4,13 +4,20 @@ import com.alibaba.druid.support.http.ResourceServlet;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.service.IAuthTokenService;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.IUser;
import com.mortals.framework.util.AESUtil;
import com.mortals.framework.utils.ServletUtils;
import com.mortals.framework.web.interceptor.BaseInterceptor;
import com.mortals.xhx.base.framework.config.InterceptorConfig;
import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.utils.MenuEncodeUtil;
import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.ParameterResolutionDelegate;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.web.method.HandlerMethod;
......@@ -19,6 +26,7 @@ import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.util.Set;
/**
* 用户权限验证,基于token
......@@ -33,6 +41,12 @@ public class AuthUserInterceptor extends BaseInterceptor {
private InterceptorConfig config;
@Autowired
private IAuthTokenService authTokenService;
@Autowired
private ICacheService cacheService;
@Autowired
private ResourceService resourceService;
@Autowired
private UserService userService;
@Override
public int getOrder() {
......@@ -44,7 +58,7 @@ public class AuthUserInterceptor extends BaseInterceptor {
throws Exception {
JSONObject ret = new JSONObject();
try {
if(handler instanceof HandlerMethod){
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
UnAuth annotation = method.getAnnotation(UnAuth.class);
......@@ -52,7 +66,7 @@ public class AuthUserInterceptor extends BaseInterceptor {
//取消校验
return true;
}
}else if(handler instanceof ResourceHttpRequestHandler){
} else if (handler instanceof ResourceHttpRequestHandler) {
return true;
}
String uri = request.getServletPath();
......@@ -63,16 +77,16 @@ public class AuthUserInterceptor extends BaseInterceptor {
if (!auth) {
//不存在时候 如果是管理员也不做拦截
IUser loginUser = authTokenService.getLoginUser(request);
if(ObjectUtils.isEmpty(loginUser)){
if (ObjectUtils.isEmpty(loginUser)) {
ret.put("code", 401);
ret.put("msg", "用户未登录或登录失效,请重新登录");
ServletUtils.renderString(response, JSONObject.toJSONString(ret));
return false;
// }else if(loginUser.isAdmin()||loginUser.getUserType()==1){
}else if(loginUser.isAdmin()){
} else if (loginUser.isAdmin()) {
return super.preHandle(request, response, handler);
} else {
ret.put("code", -1);
ret.put("code", 405);
ret.put("msg", "用户无该操作权限!");
ServletUtils.renderString(response, JSONObject.toJSONString(ret));
return false;
......@@ -80,7 +94,7 @@ public class AuthUserInterceptor extends BaseInterceptor {
}
}
} catch (Exception e) {
log.error("权限校验拦截请求处理异常-->" + e.getMessage(),e);
log.error("权限校验拦截请求处理异常-->" + e.getMessage(), e);
writeJsonResponse(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "用户权限校验异常");
return false;
}
......@@ -92,7 +106,17 @@ public class AuthUserInterceptor extends BaseInterceptor {
int code = requestUrl.hashCode() & (Integer.MAX_VALUE - 1);
IUser loginUser = authTokenService.getLoginUser(request);
if (ObjectUtils.isEmpty(loginUser)) return false;
String menuUrl = loginUser.getMenuUrl();
UserEntity userCache = userService.getExtCache(loginUser.getLoginName());
if (ObjectUtils.isEmpty(userCache)) return false;
String menuUrl = cacheService.hget(RedisKey.KEY_USER_MENU_CACHE, userCache.getId().toString(), String.class);
if (ObjectUtils.isEmpty(menuUrl)) {
Set<String> urls = resourceService.findUrlSetByUserId(loginUser.getId());
menuUrl = MenuEncodeUtil.generateMenuUrlCode(urls);
cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, loginUser.getId().toString(), menuUrl);
}
//String menuUrl = loginUser.getMenuUrl();
if (ObjectUtils.isEmpty(menuUrl)) return false;
menuUrl = AESUtil.decrypt(menuUrl, securityKey);
String codes = "," + menuUrl + ",";
......@@ -104,5 +128,4 @@ public class AuthUserInterceptor extends BaseInterceptor {
}
}
......@@ -113,7 +113,175 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), menuUrlCode);
}
userEntity.setMenuUrl(menuUrlCode);
return userEntity;
/*return new IUser() {
*//**
* @return
*//*
@Override
public Long getId() {
return userEntity.getId();
}
*//**
* @return
*//*
@Override
public Long getDeptId() {
return userEntity.getDeptId();
}
*//**
* @return
*//*
@Override
public String getDeptName() {
return userEntity.getDeptName();
}
*//**
* @return
*//*
@Override
public Long getCustomerId() {
return userEntity.getCustomerId();
}
*//**
* @return
*//*
@Override
public Long getSiteId() {
return userEntity.getSiteId();
}
*//**
* @return
*//*
@Override
public String getSiteIds() {
return userEntity.getSiteIds();
}
*//**
* @return
*//*
@Override
public String getAreaCodes() {
return userEntity.getAreaCodes();
}
*//**
* @return
*//*
@Override
public Long getCustomerJoinId() {
return userEntity.getCustomerJoinId();
}
*//**
* @return
*//*
@Override
public String getCustomerNum() {
return userEntity.getCustomerNum();
}
*//**
* @return
*//*
@Override
public String getLoginName() {
return userEntity.getLoginName();
}
*//**
* @return
*//*
@Override
public String getRealName() {
return userEntity.getRealName();
}
*//**
* @return
*//*
@Override
public boolean isAdmin() {
return userEntity.isAdmin();
}
*//**
* @return
*//*
@Override
public boolean isSystemUser() {
return userEntity.isSystemUser();
}
*//**
* @return
*//*
@Override
public boolean isManager() {
return userEntity.isManager();
}
*//**
* @return
*//*
@Override
public Integer getUserType() {
return userEntity.getUserType();
}
*//**
* @return
*//*
@Override
public String getToken() {
return userEntity.getToken();
}
*//**
* @return
*//*
@Override
public Long getLoginTime() {
return userEntity.getLoginTime();
}
*//**
* @return
*//*
@Override
public Long getExpireTime() {
return userEntity.getExpireTime();
}
*//**
* @param expireTime
*//*
@Override
public void setExpireTime(Long expireTime) {
}
*//**
* @return
*//*
@Override
public String getMenuUrl() {
return userEntity.getMenuUrl();
}
};*/
// return userEntity;
/* if (StringUtils.isNotEmpty(userStr)) {
JSONObject userObj = JSON.parseObject(userStr);
Long userId = userObj.getLongValue("id");
......@@ -313,7 +481,7 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
*/
public void refreshToken(IUser user) {
//user.setLoginTime(System.currentTimeMillis());
user.setExpireTime(user.getLoginTime() == null ? System.currentTimeMillis() : user.getLoginTime() + expireTime * MILLIS_MINUTE*1000);
user.setExpireTime(user.getLoginTime() == null ? System.currentTimeMillis() : user.getLoginTime() + expireTime * MILLIS_MINUTE * 1000);
// 根据uuid将user缓存
String userKey = getTokenKey(user.getToken());
//设置有效时间 单位秒
......
......@@ -9,7 +9,9 @@
package com.mortals.xhx.base.system.resource.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
......@@ -63,4 +65,8 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @param userType
*/
List<ResourceEntity> findAll(int userType);
Rest<String> refreshResourceUrl(String packageName, Context context);
}
\ No newline at end of file
......@@ -8,6 +8,7 @@
package com.mortals.xhx.base.system.resource.service.impl;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService;
......@@ -19,6 +20,7 @@ import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import com.mortals.xhx.base.system.resource.model.ResourceQuery;
import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.utils.ControllerScanUtil;
import com.mortals.xhx.module.role.model.RoleAuthEntity;
import com.mortals.xhx.module.role.model.RoleAuthQuery;
import com.mortals.xhx.module.role.service.RoleAuthService;
......@@ -26,10 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode;
......@@ -51,7 +51,6 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
@Autowired
private RoleAuthService roleAuthService;
@Override
public List<ResourceEntity> findAllEnable() throws AppException {
ResourceQuery params = new ResourceQuery();
......@@ -89,6 +88,74 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
return dao.getAll(userType);
}
@Override
public Rest<String> refreshResourceUrl(String packageName, Context context) {
List<Class<?>> classList = ControllerScanUtil.getAllClassByPackageName(packageName);
//System.out.println(classList); //获取到了所有的类
List<ResourceEntity> newResourcelist = ControllerScanUtil.getAnnotationInfo(classList).stream().filter(f->!ObjectUtils.isEmpty(f.getUrl())).collect(Collectors.toList());
Map<String, List<ResourceEntity>> localResourceMap = this.find(new ResourceQuery()).stream().collect(Collectors.groupingBy(x -> x.getName()));
Map<String, List<ResourceEntity>> newResourceMap = newResourcelist.stream().collect(Collectors.groupingBy(x -> x.getName()));
//更新 与新增 新加的;
newResourceMap.entrySet().forEach(item -> {
List<ResourceEntity> resourceEntities = item.getValue();
if (ObjectUtils.isEmpty(resourceEntities)) return;
if (resourceEntities.size() == 1) {
ResourceEntity resourceEntity = resourceEntities.get(0);
saveUpdateResourceEntity(context, localResourceMap, resourceEntity);
} else if (resourceEntities.size() > 1) {
//原始扫描 有多个资源列表针对一个名称的
for (ResourceEntity resourceEntity : resourceEntities) {
saveUpdateResourceEntity(context, localResourceMap, resourceEntity);
}
}
});
return Rest.ok();
}
private void saveUpdateResourceEntity(Context context, Map<String, List<ResourceEntity>> localResourceMap, ResourceEntity resourceEntity) {
//查找 本地是否已经存在了
List<ResourceEntity> tempResourceList = localResourceMap.getOrDefault(resourceEntity.getName(), new ArrayList<>());
if (tempResourceList.size() == 0) {
//新增 resource;
resourceEntity.setCreateUserId(this.getContextUserId(context));
resourceEntity.setCreateTime(new Date());
this.save(resourceEntity, context);
} else if (tempResourceList.size() == 1) {
//更新
ResourceEntity tempResource = tempResourceList.get(0);
Set<String> setUrl = Arrays.stream(resourceEntity.getUrl().split(",")).collect(Collectors.toSet());
Arrays.stream(tempResource.getUrl().split(",")).forEach(i -> {
setUrl.add(i);
});
tempResource.setUrl(setUrl.stream().collect(Collectors.joining(",")));
this.update(tempResource, context);
} else if (tempResourceList.size() > 1) {
//找到多个同名的 资源配置
for (ResourceEntity tempResource : tempResourceList) {
//模糊匹配到路径有一个存在的
Set<String> setUrl = Arrays.stream(resourceEntity.getUrl().split(",")).collect(Collectors.toSet());
String[] splitUrl = tempResource.getUrl().split(",");
Boolean bool = false;
for (int i = 0; i < splitUrl.length; i++) {
if (setUrl.contains(splitUrl[i])) {
bool = true;
break;
}
}
if (bool) {
//匹配到了,更新当前这个资源
Arrays.stream(tempResource.getUrl().split(",")).forEach(i -> {
setUrl.add(i);
});
tempResource.setUrl(setUrl.stream().collect(Collectors.joining(",")));
this.update(tempResource, context);
}
}
}
}
@Override
protected void updateAfter(ResourceEntity entity, Context context) throws AppException {
......@@ -115,12 +182,14 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
}
private void updateUserMenuUrlCache() {
//更新用户菜单
cacheService.del(RedisKey.KEY_USER_MENU_CACHE);
/* //更新用户菜单
Set<String> hkeys = cacheService.hkeys(RedisKey.KEY_USER_MENU_CACHE);
for (String userId : hkeys) {
Set<String> urls = this.findUrlSetByUserId(DataUtil.converStr2Long(userId, 0L));
String menuUrlCode = generateMenuUrlCode(urls);
cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userId, menuUrlCode);
}
}*/
}
}
\ No newline at end of file
......@@ -2,8 +2,11 @@ package com.mortals.xhx.base.system.resource.web;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.Rest;
import com.mortals.framework.common.code.UserType;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
......@@ -13,6 +16,7 @@ import com.mortals.xhx.common.code.SourceType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
......@@ -27,9 +31,9 @@ import java.util.Map;
@Slf4j
@RestController
@RequestMapping("resource")
public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService,ResourceEntity,Long> {
public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService, ResourceEntity, Long> {
public ResourceController(){
public ResourceController() {
super.setModuleDesc("资源信息");
}
......@@ -60,4 +64,30 @@ public class ResourceController extends BaseCRUDJsonBodyMappingController<Resour
return ret.toJSONString();
}
@Override
protected void doListBefore(ResourceEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context);
}
/**
* 资源路径刷新
*/
@PostMapping(value = "refreshUrl")
@UnAuth
public Rest<String> refreshUrl(@RequestParam(name = "packageName", defaultValue = "com.mortals.xhx") String packageName) {
log.info("刷新资源路径,packageName", packageName);
String busiDesc = this.getModuleDesc() + "资源路径刷新";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
try {
this.service.refreshResourceUrl(packageName, getContext());
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error(busiDesc, e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
}
\ No newline at end of file
package com.mortals.xhx.common.utils;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.stream.Collectors;
public class ControllerScanUtil {
/**
* 查看类路径
*/
public static final String[] ULR_VIEW = {"view", "info", "list", "get", "find", "export", "download",
"index", "bill"};
public static final String[] WHITE_URL = {"login", "test","file","securitycode"};
public static void main(String[] args) {
List<Class<?>> classList = getAllClassByPackageName("com.mortals.xhx");
//System.out.println(classList); //获取到了所有的类
getAnnotationInfo(classList);
}
public static List<ResourceEntity> getAnnotationInfo(List<Class<?>> clsList) {
List<ResourceEntity> resourceArrayList = new ArrayList<>();
if (clsList != null && clsList.size() > 0) {
for (Class<?> cls : clsList) {
boolean exits = cls.isAnnotationPresent(RestController.class);
if (!exits) {
continue;
}
//白名单地址的 也不需要
ResourceEntity resourceViewEntity = new ResourceEntity();
resourceViewEntity.initAttrValue();
ResourceEntity resourceEditEntity = new ResourceEntity();
resourceEditEntity.initAttrValue();
resourceEditEntity.setSourceType(1);
Method substringMethod = null;
String result = "";
try {
String packName = cls.getPackage().getName();
if (StrUtil.contains(packName, "system")) {
//系统管理-xx管理-
substringMethod = cls.getMethod("getModuleDesc");
result = (String) substringMethod.invoke(cls.newInstance());
resourceViewEntity.setName("系统管理-" + result + "管理-查看");
resourceEditEntity.setName("系统管理-" + result + "管理-维护");
} else {
substringMethod = cls.getMethod("getModuleDesc");
result = (String) substringMethod.invoke(cls.newInstance());
resourceViewEntity.setName(result + "-查看");
resourceEditEntity.setName(result + "-维护");
}
} catch (Exception e) {
}
RequestMapping requestMappingCls = cls.getAnnotation(RequestMapping.class);
String prefix = "";
if (requestMappingCls != null) {
prefix = "/" + requestMappingCls.value()[0];
boolean b = false;
for (String s : WHITE_URL) {
if (StrUtil.contains(requestMappingCls.value()[0].toLowerCase(), s)) {
b = true;
break;
}
}
if (b) {
continue;
}
}
if (ObjectUtils.isEmpty(result)) {
if (requestMappingCls != null) {
result = StrUtil.removeSuffix(StrUtil.removePrefix(requestMappingCls.value()[0].toUpperCase(), "/"), "/") + "接口模块";
}
resourceViewEntity.setName(result + "-查看");
resourceEditEntity.setName(result + "-维护");
}
Set<String> urlSet = new HashSet<>();
//获取类中的所有的方法
Method[] methods = cls.getDeclaredMethods();
if (methods != null && methods.length > 0) {
for (Method method : methods) {
boolean unAuth = method.isAnnotationPresent(UnAuth.class);
if (unAuth) {
continue;
}
boolean mExits = method.isAnnotationPresent(RequestMapping.class);
if (mExits) {
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
String url = prefix + "/" + requestMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits1 = method.isAnnotationPresent(GetMapping.class);
if (mExits1) {
GetMapping getMapping = method.getAnnotation(GetMapping.class);
String url = prefix + "/" + getMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits2 = method.isAnnotationPresent(PostMapping.class);
if (mExits2) {
PostMapping postMapping = method.getAnnotation(PostMapping.class);
String url = prefix + "/" + postMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
}
}
//获取超类中的方法
Method[] superMethods = cls.getSuperclass().getDeclaredMethods();
if (superMethods != null && superMethods.length > 0) {
for (Method method : superMethods) {
boolean unAuth = method.isAnnotationPresent(UnAuth.class);
if (unAuth) {
continue;
}
boolean mExits = method.isAnnotationPresent(RequestMapping.class);
if (mExits) {
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
String url = prefix + "/" + requestMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits1 = method.isAnnotationPresent(GetMapping.class);
if (mExits1) {
GetMapping getMapping = method.getAnnotation(GetMapping.class);
String url = prefix + "/" + getMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
boolean mExits2 = method.isAnnotationPresent(PostMapping.class);
if (mExits2) {
PostMapping postMapping = method.getAnnotation(PostMapping.class);
String url = prefix + "/" + postMapping.value()[0];
url = url.replaceAll("/+", "/");
urlSet.add(url);
}
}
}
if (!ObjectUtils.isEmpty(urlSet)) {
Set<String> UrlViewSet = new HashSet<>();
Set<String> UrlEditSet = new HashSet<>();
for (String url : urlSet) {
String str = StrUtil.subAfter(url, "/", true);
boolean bool = false;
for (String checkStr : ULR_VIEW) {
boolean contains = StrUtil.contains(str.toLowerCase(), checkStr);
if (contains) {
UrlViewSet.add(url);
bool = true;
break;
}
}
if (!bool) {
UrlEditSet.add(url);
}
}
resourceViewEntity.setUrl(UrlViewSet.stream().collect(Collectors.joining(",")));
System.out.println(JSONObject.toJSONString(resourceViewEntity));
resourceArrayList.add(resourceViewEntity);
resourceEditEntity.setUrl(UrlEditSet.stream().collect(Collectors.joining(",")));
System.out.println(JSONObject.toJSONString(resourceEditEntity));
resourceArrayList.add(resourceEditEntity);
}
}
}
return resourceArrayList;
}
public static List<Class<?>> getAllClassByPackageName(String packageName) {
// 获取当前包下以及子包下所以的类
List<Class<?>> returnClassList = getClasses(packageName);
return returnClassList;
}
/**
* 从包package中获取所有的Class
*
* @param packageName
* @return
*/
private static List<Class<?>> getClasses(String packageName) {
// 第一个class类的集合
List<Class<?>> classes = new ArrayList<Class<?>>();
// 是否循环迭代
boolean recursive = true;
// 获取包的名字 并进行替换
String packageDirName = packageName.replace('.', '/');
// 定义一个枚举的集合 并进行循环来处理这个目录下的things
Enumeration<URL> dirs;
try {
dirs = Thread.currentThread().getContextClassLoader().getResources(packageDirName);
// 循环迭代下去
while (dirs.hasMoreElements()) {
// 获取下一个元素
URL url = dirs.nextElement();
// 得到协议的名称
String protocol = url.getProtocol();
//System.out.println(url.getFile());
// 如果是以文件的形式保存在服务器上
if ("file".equals(protocol)) {
// 获取包的物理路径
String filePath = URLDecoder.decode(url.getFile(), "UTF-8");
// 以文件的方式扫描整个包下的文件 并添加到集合中
findAndAddClassesInPackageByFile(packageName, filePath, recursive, classes);
} else if ("jar".equals(protocol)) {
// 如果是jar包文件
// 定义一个JarFile
JarFile jar;
try {
// 获取jar
jar = ((JarURLConnection) url.openConnection()).getJarFile();
// 从此jar包 得到一个枚举类
Enumeration<JarEntry> entries = jar.entries();
// 同样的进行循环迭代
while (entries.hasMoreElements()) {
// 获取jar里的一个实体 可以是目录 和一些jar包里的其他文件 如META-INF等文件
JarEntry entry = entries.nextElement();
String name = entry.getName();
// 如果是以/开头的
if (name.charAt(0) == '/') {
// 获取后面的字符串
name = name.substring(1);
}
// 如果前半部分和定义的包名相同
if (name.startsWith(packageDirName)) {
int idx = name.lastIndexOf('/');
// 如果以"/"结尾 是一个包
if (idx != -1) {
// 获取包名 把"/"替换成"."
packageName = name.substring(0, idx).replace('/', '.');
}
// 如果可以迭代下去 并且是一个包
if ((idx != -1) || recursive) {
// 如果是一个.class文件 而且不是目录
if (name.endsWith(".class") && !entry.isDirectory()) {
// 去掉后面的".class" 获取真正的类名
String className = name.substring(packageName.length() + 1, name.length() - 6);
try {
// 添加到classes
classes.add(Class.forName(packageName + '.' + className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return classes;
}
/**
* 以文件的形式来获取包下的所有Class
*
* @param packageName
* @param packagePath
* @param recursive
* @param classes
*/
private static void findAndAddClassesInPackageByFile(String packageName, String packagePath, final boolean recursive, List<Class<?>> classes) {
// 获取此包的目录 建立一个File
File dir = new File(packagePath);
// 如果不存在或者 也不是目录就直接返回
if (!dir.exists() || !dir.isDirectory()) {
return;
}
// 如果存在 就获取包下的所有文件 包括目录
File[] dirFiles = dir.listFiles(new FileFilter() {
// 自定义过滤规则 如果可以循环(包含子目录) 或则是以.class结尾的文件(编译好的java类文件)
public boolean accept(File file) {
return (recursive && file.isDirectory()) || (file.getName().endsWith(".class"));
}
});
assert dirFiles != null;
// 循环所有文件
for (File file : dirFiles) {
// 如果是目录 则继续扫描
if (file.isDirectory()) {
findAndAddClassesInPackageByFile(packageName + "." + file.getName(), file.getAbsolutePath(), recursive, classes);
} else {
// 如果是java类文件 去掉后面的.class 只留下类名
String className = file.getName().substring(0, file.getName().length() - 6);
try {
// 添加到集合中去
classes.add(Class.forName(packageName + '.' + className));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}
......@@ -2,8 +2,10 @@ package com.mortals.xhx.common.utils;
import com.mortals.xhx.feign.area.IApiAreaFeign;
import com.mortals.xhx.feign.device.IDeviceFeign;
import com.mortals.xhx.feign.selfsystem.ISelfSystemFeign;
import com.mortals.xhx.feign.skin.ISkinFillFeign;
import com.mortals.xhx.feign.skin.ISkinSampleFeign;
import com.mortals.xhx.feign.smartoffice.ISmartSystemFeign;
import com.mortals.xhx.utils.SpringUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -16,25 +18,26 @@ import lombok.extern.slf4j.Slf4j;
* @description:
**/
@Slf4j
@AllArgsConstructor
public class SendSubSystemTask implements Runnable {
private IApiAreaFeign apiAreaFeign;
private IDeviceFeign deviceFeign;
private ISkinSampleFeign skinSampleFeign;
private ISkinFillFeign skinFillFeign;
private ISelfSystemFeign selfSystemFeign;
private ISmartSystemFeign smartSystemFeign;
public SendSubSystemTask() {
apiAreaFeign= SpringUtils.getBean(IApiAreaFeign.class);
deviceFeign= SpringUtils.getBean(IDeviceFeign.class);
skinSampleFeign= SpringUtils.getBean(ISkinSampleFeign.class);
skinFillFeign= SpringUtils.getBean(ISkinFillFeign.class);
apiAreaFeign = SpringUtils.getBean(IApiAreaFeign.class);
deviceFeign = SpringUtils.getBean(IDeviceFeign.class);
skinSampleFeign = SpringUtils.getBean(ISkinSampleFeign.class);
skinFillFeign = SpringUtils.getBean(ISkinFillFeign.class);
selfSystemFeign = SpringUtils.getBean(ISelfSystemFeign.class);
smartSystemFeign = SpringUtils.getBean(ISmartSystemFeign.class);
}
@Override
public void run() {
String resp = null;
try {
Thread.sleep(2000);
apiAreaFeign.refreshUser();
......@@ -44,9 +47,12 @@ public class SendSubSystemTask implements Runnable {
skinSampleFeign.refreshUser();
Thread.sleep(2000);
skinFillFeign.refreshUser();
Thread.sleep(2000);
selfSystemFeign.refreshUser();
Thread.sleep(2000);
smartSystemFeign.refreshUser();
} catch (Exception e) {
log.error("异常:", e);
log.error("通知异常:", e);
}
}
}
......@@ -29,8 +29,6 @@ public class AreaController extends BaseCRUDJsonBodyMappingController<AreaServic
@Autowired
private ParamService paramService;
@Autowired
private IAuthTokenService authTokenService;
public AreaController() {
super.setModuleDesc("区域");
......
......@@ -24,7 +24,7 @@ import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 产品接口
* 产品接口日志
*
* @author zxfei
* @date 2023-07-18
......@@ -35,7 +35,7 @@ public class ProductInterfaceLogController extends BaseCRUDJsonBodyMappingContro
public ProductInterfaceLogController(){
super.setModuleDesc( "产品接口");
super.setModuleDesc( "产品接口日志");
}
@Override
......
......@@ -111,6 +111,12 @@ public class UserEntity extends UserVo implements IUser {
*/
private Date lockTime;
/**
* 菜单栏
*/
private String menuUrl;
public UserEntity(){}
/**
......@@ -250,11 +256,20 @@ public class UserEntity extends UserVo implements IUser {
return userType;
}
public void setMenuUrl(String menuUrl) {
this.menuUrl = menuUrl;
}
/**
* @return
*/
@Override
public String getMenuUrl() {
return null;
return menuUrl ;
}
/**
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType
......
......@@ -12,4 +12,10 @@ public class UserEntityExt extends UserEntity {
private List<String> areaCodeList;
/**
* 菜单栏
*/
private String menuUrl;
}
......@@ -57,10 +57,6 @@ public class UserVo extends BaseEntityLong {
private String oldPwd;
private String newPwd;
/**
* 菜单栏
*/
private String menuUrl;
public static void main(String[] args) {
......
......@@ -191,6 +191,17 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
}
}
/**
* @param ids
* @param context
* @param result
* @throws AppException
*/
@Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
super.removeAfter(ids, context, result);
noticeSubSystemRefresh();
}
public UserEntity findByLoginName(String loginName) {
UserQuery params = new UserQuery();
......
......@@ -21,7 +21,6 @@ import com.mortals.xhx.module.role.service.RoleUserService;
import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.model.UserEntityExt;
import com.mortals.xhx.module.user.service.UserService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
......@@ -40,8 +39,6 @@ import static com.mortals.framework.ap.SysConstains.MESSAGE_INFO;
* @author zxfei
* @date 2022-05-25
*/
@Api(value = "用户信息控制器", tags = {"用户信息管理"})
@RestController
@RequestMapping("user")
public class UserController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> {
......
......@@ -53,7 +53,7 @@ public class UserModelCollectController extends BaseCRUDJsonBodyMappingControlle
}
@PostMapping({"get"})
@PostMapping("get")
public String getCollect(@RequestBody UserModelCollectEntity query) {
Map<String, Object> model = new HashMap();
......
###角色信息列表
POST {{baseUrl}}/role/list
Authorization: {{authToken}}
Content-Type: application/json
{
......
......@@ -41,6 +41,12 @@ Content-Type: application/json
{}
###controoler 测试
POST {{baseUrl}}/resource/refreshUrl
Accept: application/json
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment