Commit e28c882f authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 68dedd4d 3c413d6a
...@@ -194,10 +194,11 @@ export default { ...@@ -194,10 +194,11 @@ export default {
.preview-btn { .preview-btn {
border-top: 1px solid #ccc; border-top: 1px solid #ccc;
height: 100px; height: 100px;
padding: 0px 10px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
flex-shrink: 0; flex-shrink: 0;
} }
} }
</style> </style>
\ No newline at end of file
...@@ -429,8 +429,8 @@ export default { ...@@ -429,8 +429,8 @@ export default {
if (code === 1) { if (code === 1) {
this.formData.previewImagePath = res.data.url; this.formData.previewImagePath = res.data.url;
let result = await skinSave({ let result = await skinSave({
...this.curProduct,
...this.formData, ...this.formData,
...this.curProduct,
}); });
let { code, msg } = result.data; let { code, msg } = result.data;
if (code === 1) { if (code === 1) {
......
...@@ -9,7 +9,9 @@ ...@@ -9,7 +9,9 @@
package com.mortals.xhx.base.system.resource.service; package com.mortals.xhx.base.system.resource.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.model.ResourceEntity;
...@@ -31,7 +33,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> { ...@@ -31,7 +33,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
public List<ResourceEntity> findAllEnable() throws AppException; List<ResourceEntity> findAllEnable() throws AppException;
/** /**
* 根据用户查询可用资源 * 根据用户查询可用资源
...@@ -39,7 +41,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> { ...@@ -39,7 +41,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return * @return
* @throws AppException * @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> { ...@@ -47,7 +49,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return 字符串,多个以逗号分隔 * @return 字符串,多个以逗号分隔
* @throws AppException * @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> { ...@@ -55,7 +57,7 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
public Set<String> findUrlSetByUserId(Long userId) throws AppException; Set<String> findUrlSetByUserId(Long userId) throws AppException;
/** /**
* 获取所有资源,不分页 * 获取所有资源,不分页
...@@ -63,5 +65,8 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> { ...@@ -63,5 +65,8 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @param userType * @param userType
*/ */
List<ResourceEntity> findAll(int userType); List<ResourceEntity> findAll(int userType);
Rest<String> refreshResourceUrl(String packageName, Context context);
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
package com.mortals.xhx.base.system.resource.service.impl; 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.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
...@@ -18,19 +19,17 @@ import com.mortals.xhx.base.system.resource.dao.ResourceDao; ...@@ -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.ResourceEntity;
import com.mortals.xhx.base.system.resource.model.ResourceQuery; import com.mortals.xhx.base.system.resource.model.ResourceQuery;
import com.mortals.xhx.base.system.resource.service.ResourceService; 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.RoleAuthEntity;
import com.mortals.xhx.base.system.role.model.RoleAuthQuery; import com.mortals.xhx.base.system.role.model.RoleAuthQuery;
import com.mortals.xhx.base.system.role.service.RoleAuthService; import com.mortals.xhx.base.system.role.service.RoleAuthService;
import com.mortals.xhx.common.key.RedisKey; import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.utils.ControllerScanUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.Arrays; import java.util.*;
import java.util.HashSet; import java.util.stream.Collectors;
import java.util.List;
import java.util.Set;
import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode; import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode;
...@@ -39,6 +38,7 @@ 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>Description: ResourceServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p> * <p>Copyright: Copyright &reg; </p>
* <p>Company: </p> * <p>Company: </p>
*
* @author * @author
* @version 1.0.0 * @version 1.0.0
*/ */
...@@ -88,6 +88,74 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re ...@@ -88,6 +88,74 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
return dao.getAll(userType); 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 @Override
protected void updateAfter(ResourceEntity entity, Context context) throws AppException { protected void updateAfter(ResourceEntity entity, Context context) throws AppException {
......
package com.mortals.xhx.base.system.resource.web; package com.mortals.xhx.base.system.resource.web;
import java.util.HashMap; import com.alibaba.fastjson.JSONObject;
import java.util.Map; import com.mortals.framework.annotation.UnAuth;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.common.IBaseEnum; import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.Rest;
import com.mortals.framework.common.code.UserType; 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.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 lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject; import java.util.HashMap;
import com.mortals.framework.model.Context; import java.util.Map;
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;
/** /**
* 资源信息 * 资源信息
...@@ -32,37 +31,63 @@ import com.mortals.xhx.common.code.SourceType; ...@@ -32,37 +31,63 @@ import com.mortals.xhx.common.code.SourceType;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("resource") @RequestMapping("resource")
public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService,ResourceEntity,Long> { public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService, ResourceEntity, Long> {
public ResourceController() {
super.setModuleDesc("资源信息");
}
@Override
protected void init(Map<String, Object> model, Context context) {
Map<String, Object> statsus = new HashMap<String, Object>();
statsus.put("authType", AuthType.getEnumMap());
statsus.put("sourceType", SourceType.getEnumMap());
if (getCurUser().isAdmin()) {
statsus.put("userType", IBaseEnum.getEnumMap(UserType.class));
} else {
statsus.put("userType", UserType.findByValue(getCurUser().getUserType()));
}
model.put(KEY_RESULT_DICT, statsus);
}
/**
* 获取所有资源
*
* @return
*/
@PostMapping("allResources")
public String allResources(int userType) {
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "所有的customer以及user");
ret.put(KEY_RESULT_DATA, service.findAll(userType));
return ret.toJSONString();
}
@Override
protected void doListBefore(ResourceEntity query, Map<String, Object> model, Context context) throws AppException {
public ResourceController(){ super.doListBefore(query, model, context);
super.setModuleDesc("资源信息"); }
}
@Override /**
protected void init(Map<String, Object> model, Context context) { * 资源路径刷新
Map<String, Object> statsus = new HashMap<String, Object>(); */
statsus.put("authType", AuthType.getEnumMap()); @PostMapping(value = "refreshUrl")
statsus.put("sourceType", SourceType.getEnumMap()); @UnAuth
if (getCurUser().isAdmin()) { public Rest<String> refreshUrl(@RequestParam(name = "packageName", defaultValue = "com.mortals.xhx") String packageName) {
statsus.put("userType", IBaseEnum.getEnumMap(UserType.class)); log.info("刷新资源路径,packageName", packageName);
} else { String busiDesc = this.getModuleDesc() + "资源路径刷新";
statsus.put("userType", UserType.findByValue(getCurUser().getUserType())); Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
} try {
model.put(KEY_RESULT_DICT, statsus); this.service.refreshResourceUrl(packageName, getContext());
} recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error(busiDesc, e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
/**
* 获取所有资源
*
* @return
*/
@PostMapping("allResources")
public String allResources(int userType) {
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "所有的customer以及user");
ret.put(KEY_RESULT_DATA, service.findAll(userType));
return ret.toJSONString();
}
} }
\ No newline at end of file
package com.mortals.xhx.base.system.user.model; 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.ap.SysConstains;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IUser; 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 * @author zxfei
*/ * @date 2022-07-05
public class UserEntity extends UserEntityExt implements IUser { */
private static final long serialVersionUID = 1632643908537L;
public class UserEntity extends UserVo implements IUser {
private static final long serialVersionUID = 1L;
/** /**
* 登录名 * 登录名
*/ */
private String loginName; private String loginName;
/** /**
* 登录密码,使用md5双次加密 * 登录密码,使用md5双次加密
*/ */
private String loginPwd; private String loginPwd;
/** /**
* 最近一次使用密码,使用md5双次加密 * 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
*/ */
private String loginPwd1;
/**
* 最近二次使用密码,使用md5双次加密
*/
private String loginPwd2;
/**
* 最近三次使用密码,使用md5双次加密
*/
private String loginPwd3;
/**
* 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
*/
private String loginLimitAddress; private String loginLimitAddress;
/** /**
* 用户名 * 用户名
*/ */
private String realName; private String realName;
/** /**
* 用户手机号 * 用户手机号
*/ */
private String mobile; private String mobile;
/** /**
* 用户联系电话 * 用户联系电话
*/ */
private String phone; private String phone;
/** /**
* 用户邮箱 * 用户邮箱
*/ */
private String email; private String email;
/** /**
* QQ号码 * QQ号码
*/ */
private String qq; private String qq;
/** /**
* 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 用户类型(0.系统用户,1.普通用户,2.工作人员)
*/ */
private Integer userType; private Integer userType;
/** /**
* 站点id * 所属站点id,多个逗号分隔
*/ */
private Long siteId;
private String siteIds; 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 String createUserName;
/** /**
* 最后一次登录时间 * 最后一次登录时间
*/ */
private Date lastLoginTime; private Date lastLoginTime;
/** /**
* 最后一次登录地址 * 最后一次登录地址
*/ */
private String lastLoginAddress; private String lastLoginAddress;
/**
* 最后修改密码时间
*/
private Date lastModPwdTime;
/**
* 最后修改密码地址
*/
private String lastModPwdAddr;
public UserEntity(){
}
public UserEntity(){}
/** /**
* 获取 登录名 * 获取 登录名
* @return loginName * @return String
*/ */
public String getLoginName() { public String getLoginName(){
return this.loginName; return loginName;
} }
/** /**
* 设置 登录名 * 设置 登录名
* @param loginName * @param loginName
*/ */
public void setLoginName(String loginName) { public void setLoginName(String loginName){
this.loginName = loginName; this.loginName = loginName;
} }
/** /**
* 获取 登录密码,使用md5双次加密 * 获取 登录密码,使用md5双次加密
* @return loginPwd * @return String
*/ */
public String getLoginPwd() { public String getLoginPwd(){
return this.loginPwd; return loginPwd;
} }
/** /**
* 设置 登录密码,使用md5双次加密 * 设置 登录密码,使用md5双次加密
* @param loginPwd * @param loginPwd
*/ */
public void setLoginPwd(String loginPwd) { public void setLoginPwd(String loginPwd){
this.loginPwd = loginPwd; this.loginPwd = loginPwd;
} }
/** /**
* 获取 最近一次使用密码,使用md5双次加密 * 获取 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @return loginPwd1 * @return String
*/ */
public String getLoginPwd1() { public String getLoginLimitAddress(){
return this.loginPwd1; return loginLimitAddress;
} }
/** /**
* 设置 最近一次使用密码,使用md5双次加密 * 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginPwd1 * @param loginLimitAddress
*/ */
public void setLoginPwd1(String loginPwd1) { public void setLoginLimitAddress(String loginLimitAddress){
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
*/
public String getLoginLimitAddress() {
return this.loginLimitAddress;
}
/**
* 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginLimitAddress
*/
public void setLoginLimitAddress(String loginLimitAddress) {
this.loginLimitAddress = loginLimitAddress; this.loginLimitAddress = loginLimitAddress;
} }
/** /**
* 获取 用户名 * 获取 用户名
* @return realName * @return String
*/ */
public String getRealName() { public String getRealName(){
return this.realName; return realName;
} }
@Override @Override
...@@ -230,156 +134,122 @@ public class UserEntity extends UserEntityExt implements IUser { ...@@ -230,156 +134,122 @@ public class UserEntity extends UserEntityExt implements IUser {
return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID; return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID;
} }
@Override @Override
public boolean isSystemUser() { public boolean isSystemUser() {
return userType != null && userType.intValue() == 0; return userType != null && userType.intValue() == 0;
} }
@Override @Override
public boolean isManager() { public boolean isManager() {
return false; return false;
} }
/** /**
* 设置 用户名 * 设置 用户名
* @param realName * @param realName
*/ */
public void setRealName(String realName) { public void setRealName(String realName){
this.realName = realName; this.realName = realName;
} }
/** /**
* 获取 用户手机号 * 获取 用户手机号
* @return mobile * @return String
*/ */
public String getMobile() { public String getMobile(){
return this.mobile; return mobile;
} }
/** /**
* 设置 用户手机号 * 设置 用户手机号
* @param mobile * @param mobile
*/ */
public void setMobile(String mobile) { public void setMobile(String mobile){
this.mobile = mobile; this.mobile = mobile;
} }
/** /**
* 获取 用户联系电话 * 获取 用户联系电话
* @return phone * @return String
*/ */
public String getPhone() { public String getPhone(){
return this.phone; return phone;
} }
/** /**
* 设置 用户联系电话 * 设置 用户联系电话
* @param phone * @param phone
*/ */
public void setPhone(String phone) { public void setPhone(String phone){
this.phone = phone; this.phone = phone;
} }
/** /**
* 获取 用户邮箱 * 获取 用户邮箱
* @return email * @return String
*/ */
public String getEmail() { public String getEmail(){
return this.email; return email;
} }
/** /**
* 设置 用户邮箱 * 设置 用户邮箱
* @param email * @param email
*/ */
public void setEmail(String email) { public void setEmail(String email){
this.email = email; this.email = email;
} }
/** /**
* 获取 QQ号码 * 获取 QQ号码
* @return qq * @return String
*/ */
public String getQq() { public String getQq(){
return this.qq; return qq;
} }
/** /**
* 设置 QQ号码 * 设置 QQ号码
* @param qq * @param qq
*/ */
public void setQq(String qq) { public void setQq(String qq){
this.qq = qq; this.qq = qq;
} }
/** /**
* 获取 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 获取 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userType * @return Integer
*/ */
public Integer getUserType() { public Integer getUserType(){
return this.userType; return userType;
} }
/** /**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType * @param userType
*/ */
public void setUserType(Integer userType) { public void setUserType(Integer userType){
this.userType = userType; this.userType = userType;
} }
/**
* 获取 站点id
* @return siteId
*/
public Long getSiteId() {
return this.siteId;
}
@Override @Override
public String getSiteIds() { public Long getDeptId() {
return this.siteIds; return null;
}
public void setSiteIds(String siteIds) {
this.siteIds = siteIds;
} }
/** @Override
* 设置 站点id public String getDeptName() {
* @param siteId return null;
*/
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 @Override
public Long getDeptId() { public Long getCustomerId() {
return null; return null;
} }
@Override @Override
public String getDeptName() { public Long getSiteId() {
return null; return null;
} }
/** /**
* 获取 客户ID * 获取 所属站点id,多个逗号分隔
* @return customerId * @return String
*/ */
public Long getCustomerId() { public String getSiteIds(){
return this.customerId; return siteIds;
} }
@Override @Override
public Long getCustomerJoinId() { public Long getCustomerJoinId() {
return null; return null;
...@@ -391,123 +261,96 @@ public class UserEntity extends UserEntityExt implements IUser { ...@@ -391,123 +261,96 @@ public class UserEntity extends UserEntityExt implements IUser {
} }
/** /**
* 设置 客户ID * 设置 所属站点id,多个逗号分隔
* @param customerId * @param siteIds
*/ */
public void setCustomerId(Long customerId) { public void setSiteIds(String siteIds){
this.customerId = customerId; this.siteIds = siteIds;
} }
/** /**
* 获取 创建时间 * 获取 所属区域code,多个逗号分隔
* @return createTime * @return String
*/ */
public Date getCreateTime() { public String getAreaCodes(){
return this.createTime; return areaCodes;
} }
/** /**
* 设置 创建时间 * 设置 所属区域code,多个逗号分隔
* @param createTime * @param areaCodes
*/ */
public void setCreateTime(Date createTime) { public void setAreaCodes(String areaCodes){
this.createTime = createTime; this.areaCodes = areaCodes;
} }
/** /**
* 获取 创建用户 * 获取 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return createUserId * @return Integer
*/ */
public Long getCreateUserId() { public Integer getStatus(){
return this.createUserId; return status;
} }
/** /**
* 设置 创建用户 * 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param createUserId * @param status
*/ */
public void setCreateUserId(Long createUserId) { public void setStatus(Integer status){
this.createUserId = createUserId; this.status = status;
} }
/** /**
* 获取 创建用户名称 * 获取 创建用户名称
* @return createUserName * @return String
*/ */
public String getCreateUserName() { public String getCreateUserName(){
return this.createUserName; return createUserName;
} }
/** /**
* 设置 创建用户名称 * 设置 创建用户名称
* @param createUserName * @param createUserName
*/ */
public void setCreateUserName(String createUserName) { public void setCreateUserName(String createUserName){
this.createUserName = createUserName; this.createUserName = createUserName;
} }
/** /**
* 获取 最后一次登录时间 * 获取 最后一次登录时间
* @return lastLoginTime * @return Date
*/ */
public Date getLastLoginTime() { public Date getLastLoginTime(){
return this.lastLoginTime; return lastLoginTime;
} }
/** /**
* 设置 最后一次登录时间 * 设置 最后一次登录时间
* @param lastLoginTime * @param lastLoginTime
*/ */
public void setLastLoginTime(Date lastLoginTime) { public void setLastLoginTime(Date lastLoginTime){
this.lastLoginTime = lastLoginTime; this.lastLoginTime = lastLoginTime;
} }
/** /**
* 获取 最后一次登录地址 * 获取 最后一次登录地址
* @return lastLoginAddress * @return String
*/ */
public String getLastLoginAddress() { public String getLastLoginAddress(){
return this.lastLoginAddress; return lastLoginAddress;
} }
/** /**
* 设置 最后一次登录地址 * 设置 最后一次登录地址
* @param lastLoginAddress * @param lastLoginAddress
*/ */
public void setLastLoginAddress(String lastLoginAddress) { public void setLastLoginAddress(String lastLoginAddress){
this.lastLoginAddress = 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 @Override
public int hashCode() { 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 @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj == null) if (obj == null) return false;
return false;
if (obj instanceof UserEntity) { if (obj instanceof UserEntity) {
UserEntity tmp = (UserEntity) obj; UserEntity tmp = (UserEntity) obj;
if (this.getId().longValue() == tmp.getId().longValue()) { if (this.getId() == tmp.getId()) {
return true; return true;
} }
} }
...@@ -516,56 +359,54 @@ public class UserEntity extends UserEntityExt implements IUser { ...@@ -516,56 +359,54 @@ public class UserEntity extends UserEntityExt implements IUser {
public String toString(){ public String toString(){
StringBuilder sb = new StringBuilder(""); StringBuilder sb = new StringBuilder("");
sb sb.append(",loginName:").append(getLoginName());
.append(",id:").append(getId()) sb.append(",loginPwd:").append(getLoginPwd());
.append(",loginName:").append(getLoginName()) sb.append(",loginLimitAddress:").append(getLoginLimitAddress());
.append(",loginPwd:").append(getLoginPwd()) sb.append(",realName:").append(getRealName());
.append(",loginPwd1:").append(getLoginPwd1()) sb.append(",mobile:").append(getMobile());
.append(",loginPwd2:").append(getLoginPwd2()) sb.append(",phone:").append(getPhone());
.append(",loginPwd3:").append(getLoginPwd3()) sb.append(",email:").append(getEmail());
.append(",loginLimitAddress:").append(getLoginLimitAddress()) sb.append(",qq:").append(getQq());
.append(",realName:").append(getRealName()) sb.append(",userType:").append(getUserType());
.append(",mobile:").append(getMobile()) sb.append(",siteIds:").append(getSiteIds());
.append(",phone:").append(getPhone()) sb.append(",areaCodes:").append(getAreaCodes());
.append(",email:").append(getEmail()) sb.append(",status:").append(getStatus());
.append(",qq:").append(getQq()) sb.append(",createUserName:").append(getCreateUserName());
.append(",userType:").append(getUserType()) sb.append(",lastLoginTime:").append(getLastLoginTime());
.append(",siteId:").append(getSiteId()) sb.append(",lastLoginAddress:").append(getLastLoginAddress());
.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())
;
return sb.toString(); return sb.toString();
} }
public void initAttrValue(){ public void initAttrValue(){
this.loginName = null;
this.loginPwd = null; this.loginName = "";
this.loginPwd1 = null;
this.loginPwd2 = null; this.loginPwd = "";
this.loginPwd3 = null;
this.loginLimitAddress = null; this.loginLimitAddress = "";
this.realName = null;
this.mobile = null; this.realName = "";
this.phone = null;
this.email = null; this.mobile = "";
this.qq = null;
this.userType = null; this.phone = "";
this.siteId = null;
this.status = 1; this.email = "";
this.customerId = null;
this.createTime = null; this.qq = "";
this.createUserId = null;
this.createUserName = null; this.userType = null;
this.lastLoginTime = null;
this.lastLoginAddress = null; this.siteIds = "";
this.lastModPwdTime = null;
this.lastModPwdAddr = null; this.areaCodes = "";
this.status = 1;
this.createUserName = "";
this.lastLoginTime = null;
this.lastLoginAddress = "";
} }
} }
\ No newline at end of file
package com.mortals.xhx.base.system.user.model; 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 * @author zxfei
*/ * @date 2022-07-06
public class UserQuery extends UserEntity{ */
private static final long serialVersionUID = 1632643908887L; public class UserQuery extends UserEntity {
/** 开始 用户ID,主键,自增长 */ /** 开始 用户ID,主键,自增长 */
private Long idStart; private Long idStart;
...@@ -19,25 +18,15 @@ public class UserQuery extends UserEntity{ ...@@ -19,25 +18,15 @@ public class UserQuery extends UserEntity{
/** 增加 用户ID,主键,自增长 */ /** 增加 用户ID,主键,自增长 */
private Long idIncrement; private Long idIncrement;
/** 用户ID,主键,自增长 */ /** 用户ID,主键,自增长列表 */
private List <Long> idList; private List <Long> idList;
/** 登录名 */ /** 登录名 */
private List<String> loginNameList; private List<String> loginNameList;
/** 登录密码,使用md5双次加密 */ /** 登录密码,使用md5双次加密 */
private List<String> loginPwdList; private List<String> loginPwdList;
/** 最近一次使用密码,使用md5双次加密 */
private List<String> loginPwd1List;
/** 最近二次使用密码,使用md5双次加密 */
private List<String> loginPwd2List;
/** 最近三次使用密码,使用md5双次加密 */
private List<String> loginPwd3List;
/** 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录 */ /** 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录 */
private List<String> loginLimitAddressList; private List<String> loginLimitAddressList;
...@@ -56,58 +45,42 @@ public class UserQuery extends UserEntity{ ...@@ -56,58 +45,42 @@ public class UserQuery extends UserEntity{
/** QQ号码 */ /** QQ号码 */
private List<String> qqList; private List<String> qqList;
/** 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */ /** 开始 用户类型(0.系统用户,1.普通用户,2.工作人员) */
private Integer userTypeStart; private Integer userTypeStart;
/** 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */ /** 结束 用户类型(0.系统用户,1.普通用户,2.工作人员) */
private Integer userTypeEnd; private Integer userTypeEnd;
/** 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */ /** 增加 用户类型(0.系统用户,1.普通用户,2.工作人员) */
private Integer userTypeIncrement; private Integer userTypeIncrement;
/** 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 */ /** 用户类型(0.系统用户,1.普通用户,2.工作人员)列表 */
private List <Integer> userTypeList; private List <Integer> userTypeList;
/** 开始 站点id */
private Long siteIdStart;
/** 结束 站点id */ /** 所属站点id,多个逗号分隔 */
private Long siteIdEnd; private List<String> siteIdsList;
/** 增加 站点id */ /** 所属区域code,多个逗号分隔 */
private Long siteIdIncrement; private List<String> areaCodesList;
/** 站点id */ /** 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) */
private List <Long> siteIdList;
/** 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */
private Integer statusStart; private Integer statusStart;
/** 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */ /** 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) */
private Integer statusEnd; private Integer statusEnd;
/** 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */ /** 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) */
private Integer statusIncrement; private Integer statusIncrement;
/** 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 */ /** 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)列表 */
private List <Integer> statusList; 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 createTimeStart;
/** 结束 创建时间 */ /** 结束 创建时间 */
private String createTimeEnd; private String createTimeEnd;
/** 开始 创建用户 */ /** 开始 创建用户 */
private Long createUserIdStart; private Long createUserIdStart;
...@@ -117,12 +90,12 @@ public class UserQuery extends UserEntity{ ...@@ -117,12 +90,12 @@ public class UserQuery extends UserEntity{
/** 增加 创建用户 */ /** 增加 创建用户 */
private Long createUserIdIncrement; private Long createUserIdIncrement;
/** 创建用户 */ /** 创建用户列表 */
private List <Long> createUserIdList; private List <Long> createUserIdList;
/** 创建用户名称 */ /** 创建用户名称 */
private List<String> createUserNameList; private List<String> createUserNameList;
/** 开始 最后一次登录时间 */ /** 开始 最后一次登录时间 */
private String lastLoginTimeStart; private String lastLoginTimeStart;
...@@ -131,14 +104,6 @@ public class UserQuery extends UserEntity{ ...@@ -131,14 +104,6 @@ public class UserQuery extends UserEntity{
/** 最后一次登录地址 */ /** 最后一次登录地址 */
private List<String> lastLoginAddressList; 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) */ /** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<UserQuery> orConditionList; private List<UserQuery> orConditionList;
...@@ -146,1308 +111,946 @@ public class UserQuery extends UserEntity{ ...@@ -146,1308 +111,946 @@ public class UserQuery extends UserEntity{
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */ /** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<UserQuery> andConditionList; private List<UserQuery> andConditionList;
public UserQuery(){}
public UserQuery(){
}
/** /**
* 获取 开始 用户ID,主键,自增长 * 获取 开始 用户ID,主键,自增长
* @return idStart * @return idStart
*/ */
public Long getIdStart(){ public Long getIdStart(){
return this.idStart; return this.idStart;
} }
/** /**
* 设置 开始 用户ID,主键,自增长 * 设置 开始 用户ID,主键,自增长
* @param idStart * @param idStart
*/ */
public void setIdStart(Long idStart){ public void setIdStart(Long idStart){
this.idStart = idStart; this.idStart = idStart;
} }
/** /**
* 获取 结束 用户ID,主键,自增长 * 获取 结束 用户ID,主键,自增长
* @return idEnd * @return $idEnd
*/ */
public Long getIdEnd(){ public Long getIdEnd(){
return this.idEnd; return this.idEnd;
} }
/** /**
* 设置 结束 用户ID,主键,自增长 * 设置 结束 用户ID,主键,自增长
* @param idEnd * @param idEnd
*/ */
public void setIdEnd(Long idEnd){ public void setIdEnd(Long idEnd){
this.idEnd = idEnd; this.idEnd = idEnd;
} }
/** /**
* 获取 增加 用户ID,主键,自增长 * 获取 增加 用户ID,主键,自增长
* @return idIncrement * @return idIncrement
*/ */
public Long getIdIncrement(){ public Long getIdIncrement(){
return this.idIncrement; return this.idIncrement;
} }
/** /**
* 设置 增加 用户ID,主键,自增长 * 设置 增加 用户ID,主键,自增长
* @param idIncrement * @param idIncrement
*/ */
public void setIdIncrement(Long idIncrement){ public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement; this.idIncrement = idIncrement;
} }
/** /**
* 获取 用户ID,主键,自增长 * 获取 用户ID,主键,自增长
* @return idList * @return idList
*/ */
public List<Long> getIdList(){ public List<Long> getIdList(){
return this.idList; return this.idList;
} }
/** /**
* 设置 用户ID,主键,自增长 * 设置 用户ID,主键,自增长
* @param idList * @param idList
*/ */
public void setIdList(List<Long> idList){ public void setIdList(List<Long> idList){
this.idList = idList; this.idList = idList;
} }
/** /**
* 获取 登录名 * 获取 登录名
* @return loginNameList * @return loginNameList
*/ */
public List<String> getLoginNameList(){ public List<String> getLoginNameList(){
return this.loginNameList; return this.loginNameList;
} }
/** /**
* 设置 登录名 * 设置 登录名
* @param loginNameList * @param loginNameList
*/ */
public void setLoginNameList(List<String> loginNameList){ public void setLoginNameList(List<String> loginNameList){
this.loginNameList = loginNameList; this.loginNameList = loginNameList;
} }
/** /**
* 获取 登录密码,使用md5双次加密 * 获取 登录密码,使用md5双次加密
* @return loginPwdList * @return loginPwdList
*/ */
public List<String> getLoginPwdList(){ public List<String> getLoginPwdList(){
return this.loginPwdList; return this.loginPwdList;
} }
/** /**
* 设置 登录密码,使用md5双次加密 * 设置 登录密码,使用md5双次加密
* @param loginPwdList * @param loginPwdList
*/ */
public void setLoginPwdList(List<String> loginPwdList){ public void setLoginPwdList(List<String> loginPwdList){
this.loginPwdList = loginPwdList; this.loginPwdList = loginPwdList;
} }
/** /**
* 获取 最近一次使用密码,使用md5双次加密 * 获取 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @return loginPwd1List * @return loginLimitAddressList
*/ */
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
*/
public List<String> getLoginLimitAddressList(){ public List<String> getLoginLimitAddressList(){
return this.loginLimitAddressList; return this.loginLimitAddressList;
} }
/** /**
* 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录 * 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginLimitAddressList * @param loginLimitAddressList
*/ */
public void setLoginLimitAddressList(List<String> loginLimitAddressList){ public void setLoginLimitAddressList(List<String> loginLimitAddressList){
this.loginLimitAddressList = loginLimitAddressList; this.loginLimitAddressList = loginLimitAddressList;
} }
/** /**
* 获取 用户名 * 获取 用户名
* @return realNameList * @return realNameList
*/ */
public List<String> getRealNameList(){ public List<String> getRealNameList(){
return this.realNameList; return this.realNameList;
} }
/** /**
* 设置 用户名 * 设置 用户名
* @param realNameList * @param realNameList
*/ */
public void setRealNameList(List<String> realNameList){ public void setRealNameList(List<String> realNameList){
this.realNameList = realNameList; this.realNameList = realNameList;
} }
/** /**
* 获取 用户手机号 * 获取 用户手机号
* @return mobileList * @return mobileList
*/ */
public List<String> getMobileList(){ public List<String> getMobileList(){
return this.mobileList; return this.mobileList;
} }
/** /**
* 设置 用户手机号 * 设置 用户手机号
* @param mobileList * @param mobileList
*/ */
public void setMobileList(List<String> mobileList){ public void setMobileList(List<String> mobileList){
this.mobileList = mobileList; this.mobileList = mobileList;
} }
/** /**
* 获取 用户联系电话 * 获取 用户联系电话
* @return phoneList * @return phoneList
*/ */
public List<String> getPhoneList(){ public List<String> getPhoneList(){
return this.phoneList; return this.phoneList;
} }
/** /**
* 设置 用户联系电话 * 设置 用户联系电话
* @param phoneList * @param phoneList
*/ */
public void setPhoneList(List<String> phoneList){ public void setPhoneList(List<String> phoneList){
this.phoneList = phoneList; this.phoneList = phoneList;
} }
/** /**
* 获取 用户邮箱 * 获取 用户邮箱
* @return emailList * @return emailList
*/ */
public List<String> getEmailList(){ public List<String> getEmailList(){
return this.emailList; return this.emailList;
} }
/** /**
* 设置 用户邮箱 * 设置 用户邮箱
* @param emailList * @param emailList
*/ */
public void setEmailList(List<String> emailList){ public void setEmailList(List<String> emailList){
this.emailList = emailList; this.emailList = emailList;
} }
/** /**
* 获取 QQ号码 * 获取 QQ号码
* @return qqList * @return qqList
*/ */
public List<String> getQqList(){ public List<String> getQqList(){
return this.qqList; return this.qqList;
} }
/** /**
* 设置 QQ号码 * 设置 QQ号码
* @param qqList * @param qqList
*/ */
public void setQqList(List<String> qqList){ public void setQqList(List<String> qqList){
this.qqList = qqList; this.qqList = qqList;
} }
/** /**
* 获取 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 获取 开始 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userTypeStart * @return userTypeStart
*/ */
public Integer getUserTypeStart(){ public Integer getUserTypeStart(){
return this.userTypeStart; return this.userTypeStart;
} }
/** /**
* 设置 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 开始 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeStart * @param userTypeStart
*/ */
public void setUserTypeStart(Integer userTypeStart){ public void setUserTypeStart(Integer userTypeStart){
this.userTypeStart = userTypeStart; this.userTypeStart = userTypeStart;
} }
/** /**
* 获取 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 获取 结束 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userTypeEnd * @return $userTypeEnd
*/ */
public Integer getUserTypeEnd(){ public Integer getUserTypeEnd(){
return this.userTypeEnd; return this.userTypeEnd;
} }
/** /**
* 设置 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 结束 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeEnd * @param userTypeEnd
*/ */
public void setUserTypeEnd(Integer userTypeEnd){ public void setUserTypeEnd(Integer userTypeEnd){
this.userTypeEnd = userTypeEnd; this.userTypeEnd = userTypeEnd;
} }
/** /**
* 获取 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 获取 增加 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userTypeIncrement * @return userTypeIncrement
*/ */
public Integer getUserTypeIncrement(){ public Integer getUserTypeIncrement(){
return this.userTypeIncrement; return this.userTypeIncrement;
} }
/** /**
* 设置 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 增加 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeIncrement * @param userTypeIncrement
*/ */
public void setUserTypeIncrement(Integer userTypeIncrement){ public void setUserTypeIncrement(Integer userTypeIncrement){
this.userTypeIncrement = userTypeIncrement; this.userTypeIncrement = userTypeIncrement;
} }
/** /**
* 获取 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 获取 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @return userTypeList * @return userTypeList
*/ */
public List<Integer> getUserTypeList(){ public List<Integer> getUserTypeList(){
return this.userTypeList; return this.userTypeList;
} }
/** /**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeList * @param userTypeList
*/ */
public void setUserTypeList(List<Integer> userTypeList){ public void setUserTypeList(List<Integer> userTypeList){
this.userTypeList = 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 * 获取 所属站点id,多个逗号分隔
* @return siteIdEnd * @return siteIdsList
*/ */
public Long getSiteIdEnd(){ public List<String> getSiteIdsList(){
return this.siteIdEnd; return this.siteIdsList;
} }
/** /**
* 设置 结束 站点id * 设置 所属站点id,多个逗号分隔
* @param siteIdEnd * @param siteIdsList
*/ */
public void setSiteIdEnd(Long siteIdEnd){ public void setSiteIdsList(List<String> siteIdsList){
this.siteIdEnd = siteIdEnd; this.siteIdsList = siteIdsList;
} }
/** /**
* 获取 增加 站点id * 获取 所属区域code,多个逗号分隔
* @return siteIdIncrement * @return areaCodesList
*/ */
public Long getSiteIdIncrement(){ public List<String> getAreaCodesList(){
return this.siteIdIncrement; return this.areaCodesList;
} }
/** /**
* 设置 增加 站点id * 设置 所属区域code,多个逗号分隔
* @param siteIdIncrement * @param areaCodesList
*/ */
public void setSiteIdIncrement(Long siteIdIncrement){ public void setAreaCodesList(List<String> areaCodesList){
this.siteIdIncrement = siteIdIncrement; this.areaCodesList = areaCodesList;
} }
/**
* 获取 站点id
* @return siteIdList
*/
public List<Long> getSiteIdList(){
return this.siteIdList;
}
/**
* 设置 站点id
* @param siteIdList
*/
public void setSiteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
}
/** /**
* 获取 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 获取 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return statusStart * @return statusStart
*/ */
public Integer getStatusStart(){ public Integer getStatusStart(){
return this.statusStart; return this.statusStart;
} }
/** /**
* 设置 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusStart * @param statusStart
*/ */
public void setStatusStart(Integer statusStart){ public void setStatusStart(Integer statusStart){
this.statusStart = statusStart; this.statusStart = statusStart;
} }
/** /**
* 获取 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 获取 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return statusEnd * @return $statusEnd
*/ */
public Integer getStatusEnd(){ public Integer getStatusEnd(){
return this.statusEnd; return this.statusEnd;
} }
/** /**
* 设置 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusEnd * @param statusEnd
*/ */
public void setStatusEnd(Integer statusEnd){ public void setStatusEnd(Integer statusEnd){
this.statusEnd = statusEnd; this.statusEnd = statusEnd;
} }
/** /**
* 获取 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 获取 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return statusIncrement * @return statusIncrement
*/ */
public Integer getStatusIncrement(){ public Integer getStatusIncrement(){
return this.statusIncrement; return this.statusIncrement;
} }
/** /**
* 设置 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusIncrement * @param statusIncrement
*/ */
public void setStatusIncrement(Integer statusIncrement){ public void setStatusIncrement(Integer statusIncrement){
this.statusIncrement = statusIncrement; this.statusIncrement = statusIncrement;
} }
/** /**
* 获取 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 获取 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @return statusList * @return statusList
*/ */
public List<Integer> getStatusList(){ public List<Integer> getStatusList(){
return this.statusList; return this.statusList;
} }
/** /**
* 设置 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param statusList * @param statusList
*/ */
public void setStatusList(List<Integer> statusList){ public void setStatusList(List<Integer> statusList){
this.statusList = 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 * @return createTimeStart
*/ */
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
*/
public String getCreateTimeStart(){ public String getCreateTimeStart(){
return this.createTimeStart; return this.createTimeStart;
} }
/** /**
* 设置 开始 创建时间 * 设置 开始 创建时间
* @param createTimeStart * @param createTimeStart
*/ */
public void setCreateTimeStart(String createTimeStart){ public void setCreateTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart; this.createTimeStart = createTimeStart;
} }
/** /**
* 获取 结束 创建时间 * 获取 结束 创建时间
* @return createTimeEnd * @return createTimeEnd
*/ */
public String getCreateTimeEnd(){ public String getCreateTimeEnd(){
return this.createTimeEnd; return this.createTimeEnd;
} }
/** /**
* 设置 结束 创建时间 * 设置 结束 创建时间
* @param createTimeEnd * @param createTimeEnd
*/ */
public void setCreateTimeEnd(String createTimeEnd){ public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd; this.createTimeEnd = createTimeEnd;
} }
/** /**
* 获取 开始 创建用户 * 获取 开始 创建用户
* @return createUserIdStart * @return createUserIdStart
*/ */
public Long getCreateUserIdStart(){ public Long getCreateUserIdStart(){
return this.createUserIdStart; return this.createUserIdStart;
} }
/** /**
* 设置 开始 创建用户 * 设置 开始 创建用户
* @param createUserIdStart * @param createUserIdStart
*/ */
public void setCreateUserIdStart(Long createUserIdStart){ public void setCreateUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart; this.createUserIdStart = createUserIdStart;
} }
/** /**
* 获取 结束 创建用户 * 获取 结束 创建用户
* @return createUserIdEnd * @return $createUserIdEnd
*/ */
public Long getCreateUserIdEnd(){ public Long getCreateUserIdEnd(){
return this.createUserIdEnd; return this.createUserIdEnd;
} }
/** /**
* 设置 结束 创建用户 * 设置 结束 创建用户
* @param createUserIdEnd * @param createUserIdEnd
*/ */
public void setCreateUserIdEnd(Long createUserIdEnd){ public void setCreateUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd; this.createUserIdEnd = createUserIdEnd;
} }
/** /**
* 获取 增加 创建用户 * 获取 增加 创建用户
* @return createUserIdIncrement * @return createUserIdIncrement
*/ */
public Long getCreateUserIdIncrement(){ public Long getCreateUserIdIncrement(){
return this.createUserIdIncrement; return this.createUserIdIncrement;
} }
/** /**
* 设置 增加 创建用户 * 设置 增加 创建用户
* @param createUserIdIncrement * @param createUserIdIncrement
*/ */
public void setCreateUserIdIncrement(Long createUserIdIncrement){ public void setCreateUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement; this.createUserIdIncrement = createUserIdIncrement;
} }
/** /**
* 获取 创建用户 * 获取 创建用户
* @return createUserIdList * @return createUserIdList
*/ */
public List<Long> getCreateUserIdList(){ public List<Long> getCreateUserIdList(){
return this.createUserIdList; return this.createUserIdList;
} }
/** /**
* 设置 创建用户 * 设置 创建用户
* @param createUserIdList * @param createUserIdList
*/ */
public void setCreateUserIdList(List<Long> createUserIdList){ public void setCreateUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList; this.createUserIdList = createUserIdList;
} }
/** /**
* 获取 创建用户名称 * 获取 创建用户名称
* @return createUserNameList * @return createUserNameList
*/ */
public List<String> getCreateUserNameList(){ public List<String> getCreateUserNameList(){
return this.createUserNameList; return this.createUserNameList;
} }
/** /**
* 设置 创建用户名称 * 设置 创建用户名称
* @param createUserNameList * @param createUserNameList
*/ */
public void setCreateUserNameList(List<String> createUserNameList){ public void setCreateUserNameList(List<String> createUserNameList){
this.createUserNameList = createUserNameList; this.createUserNameList = createUserNameList;
} }
/** /**
* 获取 开始 最后一次登录时间 * 获取 开始 最后一次登录时间
* @return lastLoginTimeStart * @return lastLoginTimeStart
*/ */
public String getLastLoginTimeStart(){ public String getLastLoginTimeStart(){
return this.lastLoginTimeStart; return this.lastLoginTimeStart;
} }
/** /**
* 设置 开始 最后一次登录时间 * 设置 开始 最后一次登录时间
* @param lastLoginTimeStart * @param lastLoginTimeStart
*/ */
public void setLastLoginTimeStart(String lastLoginTimeStart){ public void setLastLoginTimeStart(String lastLoginTimeStart){
this.lastLoginTimeStart = lastLoginTimeStart; this.lastLoginTimeStart = lastLoginTimeStart;
} }
/** /**
* 获取 结束 最后一次登录时间 * 获取 结束 最后一次登录时间
* @return lastLoginTimeEnd * @return lastLoginTimeEnd
*/ */
public String getLastLoginTimeEnd(){ public String getLastLoginTimeEnd(){
return this.lastLoginTimeEnd; return this.lastLoginTimeEnd;
} }
/** /**
* 设置 结束 最后一次登录时间 * 设置 结束 最后一次登录时间
* @param lastLoginTimeEnd * @param lastLoginTimeEnd
*/ */
public void setLastLoginTimeEnd(String lastLoginTimeEnd){ public void setLastLoginTimeEnd(String lastLoginTimeEnd){
this.lastLoginTimeEnd = lastLoginTimeEnd; this.lastLoginTimeEnd = lastLoginTimeEnd;
} }
/** /**
* 获取 最后一次登录地址 * 获取 最后一次登录地址
* @return lastLoginAddressList * @return lastLoginAddressList
*/ */
public List<String> getLastLoginAddressList(){ public List<String> getLastLoginAddressList(){
return this.lastLoginAddressList; return this.lastLoginAddressList;
} }
/** /**
* 设置 最后一次登录地址 * 设置 最后一次登录地址
* @param lastLoginAddressList * @param lastLoginAddressList
*/ */
public void setLastLoginAddressList(List<String> lastLoginAddressList){ public void setLastLoginAddressList(List<String> lastLoginAddressList){
this.lastLoginAddressList = lastLoginAddressList; this.lastLoginAddressList = lastLoginAddressList;
} }
/** /**
* 获取 开始 最后修改密码时间 * 设置 用户ID,主键,自增长
* @return lastModPwdTimeStart * @param id
*/ */
public String getLastModPwdTimeStart(){ public UserQuery id(Long id){
return this.lastModPwdTimeStart; setId(id);
} return this;
/**
* 设置 开始 最后修改密码时间
* @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;
} }
/** /**
* 设置 最后修改密码地址 * 设置 开始 用户ID,主键,自增长
* @param lastModPwdAddrList * @param idStart
*/ */
public void setLastModPwdAddrList(List<String> lastModPwdAddrList){
this.lastModPwdAddrList = lastModPwdAddrList;
}
/**
* 设置 用户ID,主键,自增长
* @param id
*/
public UserQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 用户ID,主键,自增长
* @param idStart
*/
public UserQuery idStart(Long idStart){ public UserQuery idStart(Long idStart){
this.idStart = idStart; this.idStart = idStart;
return this; return this;
} }
/** /**
* 设置 结束 用户ID,主键,自增长 * 设置 结束 用户ID,主键,自增长
* @param idEnd * @param idEnd
*/ */
public UserQuery idEnd(Long idEnd){ public UserQuery idEnd(Long idEnd){
this.idEnd = idEnd; this.idEnd = idEnd;
return this; return this;
} }
/** /**
* 设置 增加 用户ID,主键,自增长 * 设置 增加 用户ID,主键,自增长
* @param idIncrement * @param idIncrement
*/ */
public UserQuery idIncrement(Long idIncrement){ public UserQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement; this.idIncrement = idIncrement;
return this; return this;
} }
/** /**
* 设置 用户ID,主键,自增长 * 设置 用户ID,主键,自增长
* @param idList * @param idList
*/ */
public UserQuery idList(List<Long> idList){ public UserQuery idList(List<Long> idList){
this.idList = idList; this.idList = idList;
return this; return this;
} }
/**
* 设置 登录名
* @param loginName /**
*/ * 设置 登录名
* @param loginName
*/
public UserQuery loginName(String loginName){ public UserQuery loginName(String loginName){
setLoginName(loginName); setLoginName(loginName);
return this; return this;
} }
/** /**
* 设置 登录名 * 设置 登录名
* @param loginNameList * @param loginNameList
*/ */
public UserQuery loginNameList(List<String> loginNameList){ public UserQuery loginNameList(List<String> loginNameList){
this.loginNameList = loginNameList; this.loginNameList = loginNameList;
return this; return this;
} }
/**
* 设置 登录密码,使用md5双次加密
* @param loginPwd /**
*/ * 设置 登录密码,使用md5双次加密
* @param loginPwd
*/
public UserQuery loginPwd(String loginPwd){ public UserQuery loginPwd(String loginPwd){
setLoginPwd(loginPwd); setLoginPwd(loginPwd);
return this; return this;
} }
/** /**
* 设置 登录密码,使用md5双次加密 * 设置 登录密码,使用md5双次加密
* @param loginPwdList * @param loginPwdList
*/ */
public UserQuery loginPwdList(List<String> loginPwdList){ public UserQuery loginPwdList(List<String> loginPwdList){
this.loginPwdList = loginPwdList; this.loginPwdList = loginPwdList;
return this; 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双次加密 * 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginPwd3List * @param loginLimitAddress
*/ */
public UserQuery loginPwd3List(List<String> loginPwd3List){
this.loginPwd3List = loginPwd3List;
return this;
}
/**
* 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginLimitAddress
*/
public UserQuery loginLimitAddress(String loginLimitAddress){ public UserQuery loginLimitAddress(String loginLimitAddress){
setLoginLimitAddress(loginLimitAddress); setLoginLimitAddress(loginLimitAddress);
return this; return this;
} }
/** /**
* 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录 * 设置 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
* @param loginLimitAddressList * @param loginLimitAddressList
*/ */
public UserQuery loginLimitAddressList(List<String> loginLimitAddressList){ public UserQuery loginLimitAddressList(List<String> loginLimitAddressList){
this.loginLimitAddressList = loginLimitAddressList; this.loginLimitAddressList = loginLimitAddressList;
return this; return this;
} }
/**
* 设置 用户名
* @param realName /**
*/ * 设置 用户名
* @param realName
*/
public UserQuery realName(String realName){ public UserQuery realName(String realName){
setRealName(realName); setRealName(realName);
return this; return this;
} }
/** /**
* 设置 用户名 * 设置 用户名
* @param realNameList * @param realNameList
*/ */
public UserQuery realNameList(List<String> realNameList){ public UserQuery realNameList(List<String> realNameList){
this.realNameList = realNameList; this.realNameList = realNameList;
return this; return this;
} }
/**
* 设置 用户手机号
* @param mobile /**
*/ * 设置 用户手机号
* @param mobile
*/
public UserQuery mobile(String mobile){ public UserQuery mobile(String mobile){
setMobile(mobile); setMobile(mobile);
return this; return this;
} }
/** /**
* 设置 用户手机号 * 设置 用户手机号
* @param mobileList * @param mobileList
*/ */
public UserQuery mobileList(List<String> mobileList){ public UserQuery mobileList(List<String> mobileList){
this.mobileList = mobileList; this.mobileList = mobileList;
return this; return this;
} }
/**
* 设置 用户联系电话
* @param phone /**
*/ * 设置 用户联系电话
* @param phone
*/
public UserQuery phone(String phone){ public UserQuery phone(String phone){
setPhone(phone); setPhone(phone);
return this; return this;
} }
/** /**
* 设置 用户联系电话 * 设置 用户联系电话
* @param phoneList * @param phoneList
*/ */
public UserQuery phoneList(List<String> phoneList){ public UserQuery phoneList(List<String> phoneList){
this.phoneList = phoneList; this.phoneList = phoneList;
return this; return this;
} }
/**
* 设置 用户邮箱
* @param email /**
*/ * 设置 用户邮箱
* @param email
*/
public UserQuery email(String email){ public UserQuery email(String email){
setEmail(email); setEmail(email);
return this; return this;
} }
/** /**
* 设置 用户邮箱 * 设置 用户邮箱
* @param emailList * @param emailList
*/ */
public UserQuery emailList(List<String> emailList){ public UserQuery emailList(List<String> emailList){
this.emailList = emailList; this.emailList = emailList;
return this; return this;
} }
/**
* 设置 QQ号码
* @param qq /**
*/ * 设置 QQ号码
* @param qq
*/
public UserQuery qq(String qq){ public UserQuery qq(String qq){
setQq(qq); setQq(qq);
return this; return this;
} }
/** /**
* 设置 QQ号码 * 设置 QQ号码
* @param qqList * @param qqList
*/ */
public UserQuery qqList(List<String> qqList){ public UserQuery qqList(List<String> qqList){
this.qqList = qqList; this.qqList = qqList;
return this; return this;
} }
/** /**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType * @param userType
*/ */
public UserQuery userType(Integer userType){ public UserQuery userType(Integer userType){
setUserType(userType); setUserType(userType);
return this; return this;
} }
/** /**
* 设置 开始 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 开始 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeStart * @param userTypeStart
*/ */
public UserQuery userTypeStart(Integer userTypeStart){ public UserQuery userTypeStart(Integer userTypeStart){
this.userTypeStart = userTypeStart; this.userTypeStart = userTypeStart;
return this; return this;
} }
/** /**
* 设置 结束 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 结束 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeEnd * @param userTypeEnd
*/ */
public UserQuery userTypeEnd(Integer userTypeEnd){ public UserQuery userTypeEnd(Integer userTypeEnd){
this.userTypeEnd = userTypeEnd; this.userTypeEnd = userTypeEnd;
return this; return this;
} }
/** /**
* 设置 增加 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 增加 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeIncrement * @param userTypeIncrement
*/ */
public UserQuery userTypeIncrement(Integer userTypeIncrement){ public UserQuery userTypeIncrement(Integer userTypeIncrement){
this.userTypeIncrement = userTypeIncrement; this.userTypeIncrement = userTypeIncrement;
return this; return this;
} }
/** /**
* 设置 用户类型,0:系统用户 1:普通用户 2:工作人员,默认2 * 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userTypeList * @param userTypeList
*/ */
public UserQuery userTypeList(List<Integer> userTypeList){ public UserQuery userTypeList(List<Integer> userTypeList){
this.userTypeList = userTypeList; this.userTypeList = userTypeList;
return this; return this;
}
/**
* 设置 站点id
* @param siteId
*/
public UserQuery siteId(Long siteId){
setSiteId(siteId);
return this;
}
/**
* 设置 开始 站点id
* @param siteIdStart
*/
public UserQuery siteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
return this;
}
/**
* 设置 结束 站点id
* @param siteIdEnd
*/
public UserQuery siteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
return this;
}
/**
* 设置 增加 站点id
* @param siteIdIncrement
*/
public UserQuery siteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
return this;
}
/**
* 设置 站点id
* @param siteIdList
*/
public UserQuery siteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
return this;
}
/**
* 设置 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1
* @param status
*/
public UserQuery status(Integer status){
setStatus(status);
return this;
} }
/** /**
* 设置 开始 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 所属站点id,多个逗号分隔
* @param statusStart * @param siteIds
*/ */
public UserQuery statusStart(Integer statusStart){ public UserQuery siteIds(String siteIds){
this.statusStart = statusStart; setSiteIds(siteIds);
return this; return this;
} }
/** /**
* 设置 结束 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 所属站点id,多个逗号分隔
* @param statusEnd * @param siteIdsList
*/ */
public UserQuery statusEnd(Integer statusEnd){ public UserQuery siteIdsList(List<String> siteIdsList){
this.statusEnd = statusEnd; this.siteIdsList = siteIdsList;
return this; return this;
} }
/** /**
* 设置 增加 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 所属区域code,多个逗号分隔
* @param statusIncrement * @param areaCodes
*/ */
public UserQuery statusIncrement(Integer statusIncrement){ public UserQuery areaCodes(String areaCodes){
this.statusIncrement = statusIncrement; setAreaCodes(areaCodes);
return this; return this;
} }
/** /**
* 设置 用户状态,0:停用,1:正常,2:冻结,3:销户,4:离职,默认1 * 设置 所属区域code,多个逗号分隔
* @param statusList * @param areaCodesList
*/ */
public UserQuery statusList(List<Integer> statusList){ public UserQuery areaCodesList(List<String> areaCodesList){
this.statusList = statusList; this.areaCodesList = areaCodesList;
return this; return this;
} }
/** /**
* 设置 客户ID * 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param customerId * @param status
*/ */
public UserQuery customerId(Long customerId){ public UserQuery status(Integer status){
setCustomerId(customerId); setStatus(status);
return this; return this;
}
/**
* 设置 开始 客户ID
* @param customerIdStart
*/
public UserQuery customerIdStart(Long customerIdStart){
this.customerIdStart = customerIdStart;
return this;
} }
/** /**
* 设置 结束 客户ID * 设置 开始 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param customerIdEnd * @param statusStart
*/ */
public UserQuery customerIdEnd(Long customerIdEnd){ public UserQuery statusStart(Integer statusStart){
this.customerIdEnd = customerIdEnd; this.statusStart = statusStart;
return this; return this;
} }
/** /**
* 设置 增加 客户ID * 设置 结束 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param customerIdIncrement * @param statusEnd
*/ */
public UserQuery customerIdIncrement(Long customerIdIncrement){ public UserQuery statusEnd(Integer statusEnd){
this.customerIdIncrement = customerIdIncrement; this.statusEnd = statusEnd;
return this; return this;
} }
/** /**
* 设置 客户ID * 设置 增加 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param customerIdList * @param statusIncrement
*/ */
public UserQuery customerIdList(List<Long> customerIdList){ public UserQuery statusIncrement(Integer statusIncrement){
this.customerIdList = customerIdList; this.statusIncrement = statusIncrement;
return this; return this;
} }
/** /**
* 设置 开始 创建时间 * 设置 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
* @param createTimeStart * @param statusList
*/ */
public UserQuery createTimeStart(String createTimeStart){ public UserQuery statusList(List<Integer> statusList){
this.createTimeStart = createTimeStart; this.statusList = statusList;
return this; return this;
} }
/** /**
* 设置 结束 创建时间 * 设置 创建用户
* @param createTimeEnd * @param createUserId
*/ */
public UserQuery createTimeEnd(String createTimeEnd){ public UserQuery createUserId(Long createUserId){
this.createTimeEnd = createTimeEnd; setCreateUserId(createUserId);
return this; return this;
} }
/** /**
* 设置 创建用户 * 设置 开始 创建用户
* @param createUserId * @param createUserIdStart
*/ */
public UserQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public UserQuery createUserIdStart(Long createUserIdStart){ public UserQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart; this.createUserIdStart = createUserIdStart;
return this; return this;
} }
/** /**
* 设置 结束 创建用户 * 设置 结束 创建用户
* @param createUserIdEnd * @param createUserIdEnd
*/ */
public UserQuery createUserIdEnd(Long createUserIdEnd){ public UserQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd; this.createUserIdEnd = createUserIdEnd;
return this; return this;
} }
/** /**
* 设置 增加 创建用户 * 设置 增加 创建用户
* @param createUserIdIncrement * @param createUserIdIncrement
*/ */
public UserQuery createUserIdIncrement(Long createUserIdIncrement){ public UserQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement; this.createUserIdIncrement = createUserIdIncrement;
return this; return this;
} }
/** /**
* 设置 创建用户 * 设置 创建用户
* @param createUserIdList * @param createUserIdList
*/ */
public UserQuery createUserIdList(List<Long> createUserIdList){ public UserQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList; this.createUserIdList = createUserIdList;
return this; return this;
} }
/**
* 设置 创建用户名称
* @param createUserName /**
*/ * 设置 创建用户名称
* @param createUserName
*/
public UserQuery createUserName(String createUserName){ public UserQuery createUserName(String createUserName){
setCreateUserName(createUserName); setCreateUserName(createUserName);
return this; return this;
} }
/** /**
* 设置 创建用户名称 * 设置 创建用户名称
* @param createUserNameList * @param createUserNameList
*/ */
public UserQuery createUserNameList(List<String> createUserNameList){ public UserQuery createUserNameList(List<String> createUserNameList){
this.createUserNameList = createUserNameList; this.createUserNameList = createUserNameList;
return this; return this;
} }
/**
* 设置 开始 最后一次登录时间
* @param lastLoginTimeStart
*/
public UserQuery lastLoginTimeStart(String lastLoginTimeStart){
this.lastLoginTimeStart = lastLoginTimeStart;
return this;
}
/** /**
* 设置 结束 最后一次登录时间 * 设置 最后一次登录地址
* @param lastLoginTimeEnd * @param lastLoginAddress
*/ */
public UserQuery lastLoginTimeEnd(String lastLoginTimeEnd){
this.lastLoginTimeEnd = lastLoginTimeEnd;
return this;
}
/**
* 设置 最后一次登录地址
* @param lastLoginAddress
*/
public UserQuery lastLoginAddress(String lastLoginAddress){ public UserQuery lastLoginAddress(String lastLoginAddress){
setLastLoginAddress(lastLoginAddress); setLastLoginAddress(lastLoginAddress);
return this; return this;
} }
/** /**
* 设置 最后一次登录地址 * 设置 最后一次登录地址
* @param lastLoginAddressList * @param lastLoginAddressList
*/ */
public UserQuery lastLoginAddressList(List<String> lastLoginAddressList){ public UserQuery lastLoginAddressList(List<String> lastLoginAddressList){
this.lastLoginAddressList = lastLoginAddressList; this.lastLoginAddressList = lastLoginAddressList;
return this; return this;
} }
/** /**
* 设置 开始 最后修改密码时间 * 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param lastModPwdTimeStart * @return orConditionList
*/ */
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
*/
public List<UserQuery> getOrConditionList(){ public List<UserQuery> getOrConditionList(){
return this.orConditionList; return this.orConditionList;
} }
/** /**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) * 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList * @param orConditionList
*/ */
public void setOrConditionList(List<UserQuery> orConditionList){ public void setOrConditionList(List<UserQuery> orConditionList){
this.orConditionList = orConditionList; this.orConditionList = orConditionList;
} }
/** /**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) * 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList * @return andConditionList
*/ */
public List<UserQuery> getAndConditionList(){ public List<UserQuery> getAndConditionList(){
return this.andConditionList; return this.andConditionList;
} }
/** /**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) * 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList * @param andConditionList
*/ */
public void setAndConditionList(List<UserQuery> andConditionList){ public void setAndConditionList(List<UserQuery> andConditionList){
this.andConditionList = andConditionList; this.andConditionList = andConditionList;
} }
......
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.framework.model.BaseEntityLong;
import com.mortals.xhx.module.model.model.ModelEntity; import com.mortals.xhx.module.model.model.ModelEntity;
...@@ -7,15 +8,20 @@ import lombok.Data; ...@@ -7,15 +8,20 @@ import lombok.Data;
import java.util.List; import java.util.List;
/** /**
* Description:User * 用户信息业务视图对象
* date: 2021-9-26 16:11:48 *
* @author zxfei
* @date 2022-07-05
*/ */
@Data @Data
public class UserEntityExt extends BaseEntityLong { public class UserVo extends BaseEntityLong {
/** /**
* 站点名称 * 站点名称
*/ */
private String siteName; private String siteName;
private String roleIds;
/** /**
* 唯一标识 * 唯一标识
*/ */
...@@ -35,12 +41,9 @@ public class UserEntityExt extends BaseEntityLong { ...@@ -35,12 +41,9 @@ public class UserEntityExt extends BaseEntityLong {
*/ */
private Long expireTime; private Long expireTime;
private String oldPassword;
private String newPassword;
private String siteIds;
private List<ModelEntity> modleList; private List<ModelEntity> modleList;
/**
* 所属区域code,多个逗号分隔
*/
private String areaCodes;
} }
\ No newline at end of file
/** /**
* 文件:UserService.java * 文件:UserService.java
* 版本:1.0.0 * 版本:1.0.0
* 日期: * 日期:
* Copyright &reg; * Copyright &reg;
* All right reserved. * All right reserved.
*/ */
package com.mortals.xhx.base.system.user.service; package com.mortals.xhx.base.system.user.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.framework.service.ICRUDCacheService; import com.mortals.framework.service.ICRUDCacheService;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.menu.model.MenuEntity; 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.base.system.user.model.UserEntity;
import com.mortals.xhx.common.pdu.user.UserPdu; import com.mortals.xhx.common.pdu.user.UserPdu;
...@@ -25,11 +27,11 @@ import java.util.Set; ...@@ -25,11 +27,11 @@ import java.util.Set;
* <p>Description: UserService service接口 </p> * <p>Description: UserService service接口 </p>
* <p>Copyright: Copyright &reg; </p> * <p>Copyright: Copyright &reg; </p>
* <p>Company: </p> * <p>Company: </p>
* @author * @author
* @version 1.0.0 * @version 1.0.0
*/ */
public interface UserService extends ICRUDCacheService<UserEntity,Long> { public interface UserService extends ICRUDCacheService<UserEntity, Long> {
/** /**
* 用户登录 * 用户登录
* *
...@@ -39,7 +41,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -39,7 +41,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
UserEntity doLogin(String loginName, String password, String loginIp) throws AppException; UserEntity doLogin(String loginName, String password, String loginIp) throws AppException;
/** /**
* 校验用户名与密码是否正确 * 校验用户名与密码是否正确
...@@ -49,7 +51,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -49,7 +51,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
UserEntity doCheckUser(String loginName, String password) throws AppException; UserEntity doCheckUser(String loginName, String password) throws AppException;
/** /**
* 检查用户是否存在 * 检查用户是否存在
...@@ -58,7 +60,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -58,7 +60,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @param userId 密码 * @param userId 密码
* @return * @return
*/ */
boolean existUser(String loginName, Long userId) throws AppException; boolean existUser(String loginName, Long userId) throws AppException;
/** /**
* 通过登录用户获取菜单功能权限 * 通过登录用户获取菜单功能权限
...@@ -66,7 +68,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -66,7 +68,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @param user * @param user
* @return * @return
*/ */
List<MenuEntity> findOutlookBarList(IUser user); List<MenuEntity> findOutlookBarList(IUser user);
/** /**
* 查询用户所有有权限的菜单ID * 查询用户所有有权限的菜单ID
...@@ -74,7 +76,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -74,7 +76,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @param userEntity * @param userEntity
* @return * @return
*/ */
Set<Long> findAllAuthIds(UserEntity userEntity) throws AppException; Set<Long> findAllAuthIds(UserEntity userEntity) throws AppException;
/** /**
* 查询用户记录 * 查询用户记录
...@@ -86,7 +88,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -86,7 +88,7 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
Result<UserEntity> find(Long platformId, UserEntity params, int currPage, int prePageResult) throws AppException; Result<UserEntity> find(Long platformId, UserEntity params, int currPage, int prePageResult) throws AppException;
/** /**
* 为客户创建用户 * 为客户创建用户
...@@ -101,8 +103,8 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -101,8 +103,8 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
UserEntity createUser(IUser currUser, Long customerId, String customerName, String loginName, String password, UserEntity createUser(IUser currUser, Long customerId, String customerName, String loginName, String password,
String userName, String mobile) throws AppException; String userName, String mobile) throws AppException;
/** /**
* 用户修改密码 * 用户修改密码
...@@ -113,11 +115,14 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> { ...@@ -113,11 +115,14 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
* @return * @return
* @throws AppException * @throws AppException
*/ */
boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException; boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException;
void updateWidthDao(UserEntity userEntity); void updateWidthDao(UserEntity userEntity);
void updateUserList(List<UserPdu> list); 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; ...@@ -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.menu.service.MenuService;
import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.model.ResourceEntity;
import com.mortals.xhx.base.system.resource.service.ResourceService; 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.dao.UserDao;
import com.mortals.xhx.base.system.user.model.UserEntity; 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.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService; 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.RespData;
import com.mortals.xhx.common.pdu.user.UserPdu; import com.mortals.xhx.common.pdu.user.UserPdu;
import com.mortals.xhx.common.utils.BeanUtil; import com.mortals.xhx.common.utils.BeanUtil;
...@@ -43,8 +46,10 @@ import com.mortals.xhx.module.site.service.SiteService; ...@@ -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.WorkmanEntity;
import com.mortals.xhx.module.workman.model.WorkmanQuery; import com.mortals.xhx.module.workman.model.WorkmanQuery;
import com.mortals.xhx.module.workman.service.WorkmanService; import com.mortals.xhx.module.workman.service.WorkmanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -61,12 +66,22 @@ import java.util.stream.Collectors; ...@@ -61,12 +66,22 @@ import java.util.stream.Collectors;
* @version 1.0.0 * @version 1.0.0
*/ */
@Service("userService") @Service("userService")
@Slf4j
public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserEntity, Long> implements UserService { public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserEntity, Long> implements UserService {
@Autowired @Autowired
private MenuService menuService; private MenuService menuService;
@Autowired @Autowired
private ResourceService resourceService; private ResourceService resourceService;
@Autowired
private RoleUserService roleUserService;
@Autowired
private SiteService siteService;
@Lazy
@Autowired
private IUserFeign userFeign;
/** /**
* @param data * @param data
* @return * @return
...@@ -241,7 +256,6 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE ...@@ -241,7 +256,6 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
entity.initAttrValue(); entity.initAttrValue();
entity.setLoginName(loginName); entity.setLoginName(loginName);
entity.setRealName(userName); entity.setRealName(userName);
entity.setCustomerId(customerId);
entity.setLoginPwd(password); entity.setLoginPwd(password);
entity.setMobile(mobile); entity.setMobile(mobile);
entity.setUserType(UserType.CUSTOMER.getValue()); entity.setUserType(UserType.CUSTOMER.getValue());
...@@ -287,10 +301,7 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE ...@@ -287,10 +301,7 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
} }
try { try {
sysUser.setLoginPwd(SecurityUtil.md5DoubleEncoding(newPwd)); sysUser.setLoginPwd(SecurityUtil.md5DoubleEncoding(newPwd));
sysUser.setLoginPwd3(sysUser.getLoginPwd2());
sysUser.setLoginPwd2(sysUser.getLoginPwd1());
sysUser.setLoginPwd1(sysUser.getLoginPwd());
sysUser.setLastModPwdTime(new Date());
} catch (Exception e) { } catch (Exception e) {
throw new AppException("密码转换异常!", e); throw new AppException("密码转换异常!", e);
} }
...@@ -306,16 +317,17 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE ...@@ -306,16 +317,17 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
@Override @Override
public void updateUserList(List<UserPdu> list) { public void updateUserList(List<UserPdu> list) {
//更新本地用户信息,并且更新用户站点树 //todo 将站点分组后 分组同步更新 //更新本地用户信息,并且更新用户站点树 //todo 将站点分组后 分组同步更新
List<String> loginNames = list.parallelStream().map(user -> user.getLoginName()).collect(Collectors.toList()); /* List<String> loginNames = list.parallelStream().map(user -> user.getLoginName()).collect(Collectors.toList());
UserQuery userQuery = new UserQuery(); UserQuery userQuery = new UserQuery();
userQuery.setLoginNameList(loginNames); userQuery.setLoginNameList(loginNames);
List<UserEntity> existUsers = this.find(userQuery); List<UserEntity> existUsers = this.find(userQuery);*/
List<UserEntity> existUsers = list.parallelStream().map(item -> this.getExtCache(item.getLoginName())).filter(f -> f != null).collect(Collectors.toList());
Map<String, UserEntity> existUserMap = existUsers.parallelStream().collect(Collectors.toMap(x -> x.getLoginName(), y -> y, (o, n) -> n)); Map<String, UserEntity> existUserMap = existUsers.parallelStream().collect(Collectors.toMap(x -> x.getLoginName(), y -> y, (o, n) -> n));
//分组查找存在的与不存在的用户 //分组查找存在的与不存在的用户
Map<Boolean, List<UserPdu>> collect = list.parallelStream().collect(Collectors.partitioningBy(x -> existUserMap.containsKey(x.getLoginName()))); Map<Boolean, List<UserPdu>> collect = list.parallelStream().collect(Collectors.partitioningBy(x -> existUserMap.containsKey(x.getLoginName())));
List<UserPdu> userPdusUpdate = collect.get(true);//更新 List<UserPdu> userPdusUpdate = collect.get(true);//更新
List<UserEntity> userEntityUpdate = new ArrayList<>();
List<UserPdu> userPdusSave = collect.get(false);//新增 List<UserPdu> userPdusSave = collect.get(false);//新增
List<UserEntity> userEntitySave = new ArrayList<>(); List<UserEntity> userEntitySave = new ArrayList<>();
...@@ -335,20 +347,16 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE ...@@ -335,20 +347,16 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
UserEntity userEntity = new UserEntity(); UserEntity userEntity = new UserEntity();
BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd", "loginName", "userType", "status", "lastLoginTime", "lastLoginAddress"}); BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd", "loginName", "userType", "status", "lastLoginTime", "lastLoginAddress"});
userEntity.setId(existUserMap.get(user.getLoginName()).getId()); userEntity.setId(existUserMap.get(user.getLoginName()).getId());
this.updateWidthDao(userEntity); // this.updateWidthDao(userEntity);
if (!ObjectUtils.isEmpty(userEntity.getSiteIds())) { if (!ObjectUtils.isEmpty(userEntity.getSiteIds())) {
userEntitySave.add(userEntity); userEntitySave.add(userEntity);
} }
} }
//分组刷新节点 新增 //分组刷新节点 新增
Map<String, List<UserEntity>> saveSitesCollect = userEntitySave.stream().collect(Collectors.groupingBy(x -> x.getSiteIds())); 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())); // Map<String, List<UserEntity>> updateSitesCollect = userEntityUpdate.stream().collect(Collectors.groupingBy(x -> x.getSiteIds()));
saveSitesCollect.entrySet().stream().forEach(item -> { saveSitesCollect.entrySet().stream().forEach(item -> {
String siteIds = item.getKey();
List<UserEntity> userEntities = item.getValue(); List<UserEntity> userEntities = item.getValue();
if (!ObjectUtils.isEmpty(userEntities)) { if (!ObjectUtils.isEmpty(userEntities)) {
Context context = new Context(); Context context = new Context();
...@@ -357,45 +365,103 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE ...@@ -357,45 +365,103 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
} }
}); });
/* siteService.updateAllSiteTree(null);
//如果用户未有所属站点 则不更新
for (UserPdu user : list) { /* //单独更新全站点
UserEntity tempUser = this.selectOne(new UserQuery().loginName(user.getLoginName())); UserEntity userEntity = new UserEntity();
if (ObjectUtils.isEmpty(tempUser)) { userEntity.initAttrValue();
//新增 userEntity.setId(0L);
UserEntity entity = new UserEntity(); Context contextTemp = new Context();
entity.initAttrValue(); contextTemp.setUser(userEntity);
BeanUtils.copyProperties(user, entity, BeanUtil.getNullPropertyNames(user)); SyncTreeSiteThread syncTreeSiteThread = new SyncTreeSiteThread(contextTemp);
this.save(entity); ThreadPool.getInstance().execute(syncTreeSiteThread);
if (!ObjectUtils.isEmpty(entity.getSiteIds())) {
Context context = new Context(); userEntity = new UserEntity();
context.setUser(entity); userEntity.initAttrValue();
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context)); userEntity.setId(1L);
contextTemp = new Context();
contextTemp.setUser(userEntity);
syncTreeSiteThread = new SyncTreeSiteThread(contextTemp);
ThreadPool.getInstance().execute(syncTreeSiteThread);
*/
}
@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();
userEntity.initAttrValue();
BeanUtils.copyProperties(newUser, userEntity, new String[]{ "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());
item.setId(item.getId());
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.getUpdateUserId() == 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);
});
} }
} else { //差集删除
//更新 Set<String> collectSet = newUserList.parallelStream().map(x -> x.getLoginName()).collect(Collectors.toSet());
UserEntity userEntity = new UserEntity(); Long[] removeUserIds = this.getCacheList().parallelStream().filter(f -> !collectSet.contains(f.getLoginName())).map(i -> i.getId()).distinct().toArray(Long[]::new);
BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd", "loginName", "userType", "status", "lastLoginTime", "lastLoginAddress"}); if (!ObjectUtils.isEmpty(removeUserIds)) {
userEntity.setId(tempUser.getId()); log.info("需要删除的本地用户数量:{}", removeUserIds.length);
this.updateWidthDao(userEntity); this.remove(removeUserIds, null);
if (!ObjectUtils.isEmpty(userEntity.getSiteIds())) {
Context context = new Context();
context.setUser(userEntity);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
} }
this.updateUserList(userPduList);
} }
}*/ }
return Rest.ok();
} }
@Override @Override
protected void findAfter(UserEntity params, PageInfo pageInfo, Context context, List<UserEntity> list) throws AppException { public UserDao getUserDao() {
super.findAfter(params, pageInfo, context, list); return this.getDao();
// list.stream().peek(item->{
// if(!ObjectUtils.isEmpty(item.getSiteId())&&item.getSiteId()!=0L){
// item.setSiteName(siteService.get(item.getSiteId()).getSiteName());
// }
// }).count();
} }
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
......
...@@ -2,7 +2,9 @@ package com.mortals.xhx.base.system.user.web; ...@@ -2,7 +2,9 @@ package com.mortals.xhx.base.system.user.web;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.IBaseEnum; import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.Rest;
import com.mortals.framework.common.code.UserType; import com.mortals.framework.common.code.UserType;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
...@@ -16,10 +18,7 @@ import io.jsonwebtoken.Claims; ...@@ -16,10 +18,7 @@ import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -37,11 +36,7 @@ import java.util.Map; ...@@ -37,11 +36,7 @@ import java.util.Map;
@RequestMapping("user") @RequestMapping("user")
public class UserController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> { public class UserController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> {
@Autowired
private UserService userService;
public UserController() { public UserController() {
super.setFormClass(UserForm.class);
super.setModuleDesc("用户信息"); super.setModuleDesc("用户信息");
} }
...@@ -63,26 +58,6 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -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 @Override
protected void saveBefore(UserEntity entity, Map<String, Object> model, Context context) throws AppException { protected void saveBefore(UserEntity entity, Map<String, Object> model, Context context) throws AppException {
if (service.existUser(entity.getLoginName(), entity.getId())) { if (service.existUser(entity.getLoginName(), entity.getId())) {
...@@ -108,6 +83,15 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -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) { public static void main(String[] args) {
String token = "eyJhbGciOiJIUzI1NiJ9.eyJsb2dpbl91c2VyX2tleSI6IjIzNGE5NDA5ZDVhOTQ3MWNhMzdkYjZkYmMwY2JjZTc5In0.MWyQW40HYDxyUz7PJRf_nRsFPWx3Hr811Ime984nixs"; 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();
}
}
}
}
}
package com.mortals.xhx.daemon.applicationservice; package com.mortals.xhx.daemon.applicationservice;
import com.mortals.framework.common.Rest;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.ThreadPool; import com.mortals.framework.util.ThreadPool;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.user.UserPdu;
import com.mortals.xhx.common.utils.SendTaskThreadPool; import com.mortals.xhx.common.utils.SendTaskThreadPool;
import com.mortals.xhx.feign.user.IUserFeign;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.mortals.framework.springcloud.service.IApplicationService; import com.mortals.framework.springcloud.service.IApplicationService;
import org.springframework.util.ObjectUtils;
import java.util.List;
@Component @Component
...@@ -15,10 +28,33 @@ public class DemoStartService implements IApplicationService { ...@@ -15,10 +28,33 @@ public class DemoStartService implements IApplicationService {
private static Log logger = LogFactory.getLog(DemoStartService.class); private static Log logger = LogFactory.getLog(DemoStartService.class);
@Autowired
private ICacheService cacheService;
@Autowired
private IUserFeign userFeign;
@Autowired
private UserService userService;
@Override @Override
public void start() { public void start() {
ThreadPool.getInstance().init(10); // ThreadPool.getInstance().init(10);
logger.info("开始服务..[配置已加载完成,但部分框架还未初始化,比如:Kafka]"); logger.info("开始服务..[配置已加载完成,但部分框架还未初始化,比如:Kafka]");
/* Rest<String> rest = userFeign.synchSiteAuth();
if (rest.getCode().equals(YesNoEnum.YES.getValue())) {
UserPdu userPdu = new UserPdu();
userPdu.setPage(1);
userPdu.setSize(-1);
Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu);
if(!ObjectUtils.isEmpty(list.getData().getData())){
//初始化更新门户用户站点树
cacheService.del(Constant.USER_SITE_TREE);
userService.updateUserList(list.getData().getData());
}
}*/
} }
@Override @Override
......
...@@ -40,14 +40,19 @@ public class DemoStartedService implements IApplicationStartedService { ...@@ -40,14 +40,19 @@ public class DemoStartedService implements IApplicationStartedService {
private UserService userService; private UserService userService;
@Autowired @Autowired
private ICacheService cacheService; private ICacheService cacheService;
@Autowired
private SiteService siteService;
@Override @Override
public void start() { public void start() {
ThreadPool.getInstance().init(10);
logger.info("开始服务..[初始化用户站点树]"); logger.info("开始服务..[初始化用户站点树]");
//删除redis 中的 站点树 //删除redis 中的 站点树
cacheService.del(USER_SITE_TREE); cacheService.del(USER_SITE_TREE);
UserEntity userEntity = new UserEntity(); siteService.updateAllSiteTree(null);
/* UserEntity userEntity = new UserEntity();
userEntity.initAttrValue(); userEntity.initAttrValue();
userEntity.setId(0L); userEntity.setId(0L);
Context contextTemp = new Context(); Context contextTemp = new Context();
...@@ -61,8 +66,7 @@ public class DemoStartedService implements IApplicationStartedService { ...@@ -61,8 +66,7 @@ public class DemoStartedService implements IApplicationStartedService {
contextTemp = new Context(); contextTemp = new Context();
contextTemp.setUser(userEntity); contextTemp.setUser(userEntity);
syncTreeSiteThread = new SyncTreeSiteThread(contextTemp); syncTreeSiteThread = new SyncTreeSiteThread(contextTemp);
ThreadPool.getInstance().execute(syncTreeSiteThread); ThreadPool.getInstance().execute(syncTreeSiteThread);*/
} }
......
...@@ -41,14 +41,13 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -41,14 +41,13 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
@Override @Override
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
userService.refreshUser();
log.info("同步用户"); log.info("同步用户");
UserPdu userPdu = new UserPdu(); /* UserPdu userPdu = new UserPdu();
userPdu.setPage(1); userPdu.setPage(1);
userPdu.setSize(-1); userPdu.setSize(-1);
Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu); Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu);
userService.updateUserList(list.getData().getData());*/
userService.updateUserList(list.getData().getData());
//resourceService.updateUserList(); //resourceService.updateUserList();
......
...@@ -69,7 +69,15 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService, ...@@ -69,7 +69,15 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
super.init(model, context); super.init(model, context);
} }
/**
* @param query
* @return
*/
@Override
@UnAuth
public Rest<Object> list(@RequestBody AppEntity query) {
return super.list(query);
}
/** /**
* @param query * @param query
......
...@@ -3,6 +3,8 @@ package com.mortals.xhx.module.app.web; ...@@ -3,6 +3,8 @@ package com.mortals.xhx.module.app.web;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
...@@ -54,6 +56,17 @@ public class AppDatasetController extends BaseCRUDJsonBodyMappingController<AppD ...@@ -54,6 +56,17 @@ public class AppDatasetController extends BaseCRUDJsonBodyMappingController<AppD
super.setModuleDesc("自助终端应用数据集"); super.setModuleDesc("自助终端应用数据集");
} }
/**
* @param query
* @return
*/
@Override
@UnAuth
public Rest<Object> list(@RequestBody AppDatasetEntity query) {
return super.list(query);
}
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
super.init(model, context); super.init(model, context);
......
package com.mortals.xhx.module.app.web; package com.mortals.xhx.module.app.web;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.AppFieldTypeEnum; import com.mortals.xhx.common.code.AppFieldTypeEnum;
...@@ -52,5 +54,13 @@ public class AppInfoFieldController extends BaseCRUDJsonBodyMappingController<Ap ...@@ -52,5 +54,13 @@ public class AppInfoFieldController extends BaseCRUDJsonBodyMappingController<Ap
super.init(model, context); super.init(model, context);
} }
/**
* @param query
* @return
*/
@Override
@UnAuth
public Rest<Object> list(@RequestBody AppInfoFieldEntity query) {
return super.list(query);
}
} }
\ No newline at end of file
package com.mortals.xhx.module.app.web; package com.mortals.xhx.module.app.web;
import cn.hutool.core.net.url.UrlBuilder; import cn.hutool.core.net.url.UrlBuilder;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.ap.GlobalSysInfo; import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -64,6 +65,16 @@ public class AppVersionController extends BaseCRUDJsonBodyMappingController<AppV ...@@ -64,6 +65,16 @@ public class AppVersionController extends BaseCRUDJsonBodyMappingController<AppV
} }
/**
* @param query
* @return
*/
@Override
@UnAuth
public Rest<Object> list(@RequestBody AppVersionEntity query) {
return super.list(query);
}
@Override @Override
protected void doListBefore(AppVersionEntity query, Map<String, Object> model, Context context) throws AppException { protected void doListBefore(AppVersionEntity query, Map<String, Object> model, Context context) throws AppException {
List<OrderCol> orderColList = new ArrayList<>(); List<OrderCol> orderColList = new ArrayList<>();
......
...@@ -67,4 +67,6 @@ public interface SiteService extends ICRUDCacheService<SiteEntity, Long> { ...@@ -67,4 +67,6 @@ public interface SiteService extends ICRUDCacheService<SiteEntity, Long> {
Rest<String> syncMatterBySiteId(SiteEntity siteEntity, Context context); Rest<String> syncMatterBySiteId(SiteEntity siteEntity, Context context);
void deleteBysiteIdAndSource(Long siteId, Integer source, Context context); void deleteBysiteIdAndSource(Long siteId, Integer source, Context context);
void updateAllSiteTree(Context context);
} }
\ No newline at end of file
...@@ -16,6 +16,8 @@ import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; ...@@ -16,6 +16,8 @@ import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
import com.mortals.framework.util.HttpUtil; import com.mortals.framework.util.HttpUtil;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.framework.util.ThreadPool;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.AreaLevelDxTypeEnum; import com.mortals.xhx.common.code.AreaLevelDxTypeEnum;
import com.mortals.xhx.common.code.AreaLevelEnum; import com.mortals.xhx.common.code.AreaLevelEnum;
...@@ -25,6 +27,7 @@ import com.mortals.xhx.common.pdu.RespData; ...@@ -25,6 +27,7 @@ import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.device.DevicePdu; import com.mortals.xhx.common.pdu.device.DevicePdu;
import com.mortals.xhx.common.pdu.user.UserPdu; import com.mortals.xhx.common.pdu.user.UserPdu;
import com.mortals.xhx.common.utils.MatterHtmlParseUtil; import com.mortals.xhx.common.utils.MatterHtmlParseUtil;
import com.mortals.xhx.common.utils.SyncTreeSiteThread;
import com.mortals.xhx.feign.device.IDeviceFeign; import com.mortals.xhx.feign.device.IDeviceFeign;
import com.mortals.xhx.feign.user.IUserFeign; import com.mortals.xhx.feign.user.IUserFeign;
import com.mortals.xhx.module.area.model.AreaEntity; import com.mortals.xhx.module.area.model.AreaEntity;
...@@ -191,14 +194,19 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -191,14 +194,19 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
super.saveAfter(entity, context); super.saveAfter(entity, context);
//刷新站点树 //刷新站点树
//ThreadPool.getInstance().execute(new SyncTreeSiteThread(this,context)); //ThreadPool.getInstance().execute(new SyncTreeSiteThread(this,context));
Rest<String> rest = userFeign.synchSiteAuth(); /* Rest<String> rest = userFeign.synchSiteAuth();
if (rest.getCode().equals(YesNoEnum.YES.getValue())) { if (rest.getCode().equals(YesNoEnum.YES.getValue())) {
UserPdu userPdu = new UserPdu(); UserPdu userPdu = new UserPdu();
userPdu.setPage(1); userPdu.setPage(1);
userPdu.setSize(-1); userPdu.setSize(-1);
Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu); Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu);
userService.updateUserList(list.getData().getData()); userService.updateUserList(list.getData().getData());
} }*/
this.updateAllSiteTree(context);
//新加的站点 只需要更新全树
//更新同步部门相关 //更新同步部门相关
deptService.syncDeptBySiteId(entity, context); deptService.syncDeptBySiteId(entity, context);
...@@ -239,7 +247,7 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -239,7 +247,7 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
} }
} }
//查詢指定的站點ids //查詢指定的站點ids
// log.info(String.format("siteQuery==>%s", JSON.toJSONString(siteQuery))); // log.info(String.format("siteQuery==>%s", JSON.toJSONString(siteQuery)));
siteList = this.find(siteQuery); siteList = this.find(siteQuery);
} }
//如果是管理员 默认全部站点 //如果是管理员 默认全部站点
...@@ -340,16 +348,16 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -340,16 +348,16 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
@Override @Override
protected void updateAfter(SiteEntity entity, Context context) throws AppException { protected void updateAfter(SiteEntity entity, Context context) throws AppException {
super.updateAfter(entity,context); super.updateAfter(entity, context);
//刷新站点树 //刷新站点树
Rest<String> rest = userFeign.synchSiteAuth(); /* Rest<String> rest = userFeign.synchSiteAuth();
if (rest.getCode().equals(YesNoEnum.YES.getValue())) { if (rest.getCode().equals(YesNoEnum.YES.getValue())) {
UserPdu userPdu = new UserPdu(); UserPdu userPdu = new UserPdu();
userPdu.setPage(1); userPdu.setPage(1);
userPdu.setSize(-1); userPdu.setSize(-1);
Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu); Rest<RespData<List<UserPdu>>> list = userFeign.list(userPdu);
userService.updateUserList(list.getData().getData()); userService.updateUserList(list.getData().getData());
} }*/
if (refresh) { if (refresh) {
//通知设备更新站点信息 //通知设备更新站点信息
DevicePdu devicePdu = new DevicePdu(); DevicePdu devicePdu = new DevicePdu();
...@@ -384,8 +392,8 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -384,8 +392,8 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
if (!ObjectUtils.isEmpty(collect)) { if (!ObjectUtils.isEmpty(collect)) {
return collect; return collect;
} else { } else {
//反全站点树 //反全站点树 如果没有全站点树,则临时构建 admin 为全站点树
return getSiteTreeSelects("0"); return getSiteTreeSelects("1");
} }
//如果所属站点为空返回全节点树 //如果所属站点为空返回全节点树
...@@ -815,6 +823,28 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -815,6 +823,28 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
this.dao.delete(condition); this.dao.delete(condition);
} }
/**
* @param context
*/
@Override
public void updateAllSiteTree(Context context) {
UserEntity userEntity = new UserEntity();
userEntity.initAttrValue();
userEntity.setId(0L);
Context contextTemp = new Context();
contextTemp.setUser(userEntity);
SyncTreeSiteThread syncTreeSiteThread = new SyncTreeSiteThread(contextTemp);
ThreadPool.getInstance().execute(syncTreeSiteThread);
userEntity = new UserEntity();
userEntity.initAttrValue();
userEntity.setId(1L);
contextTemp = new Context();
contextTemp.setUser(userEntity);
syncTreeSiteThread = new SyncTreeSiteThread(contextTemp);
ThreadPool.getInstance().execute(syncTreeSiteThread);
}
public List<MatterEntity> subList(List<MatterEntity> firstList, List<MatterEntity> secondList) { public List<MatterEntity> subList(List<MatterEntity> firstList, List<MatterEntity> secondList) {
Set<String> secondSet = secondList.parallelStream().map(e -> e.getMatterNo()).collect(Collectors.toSet()); Set<String> secondSet = secondList.parallelStream().map(e -> e.getMatterNo()).collect(Collectors.toSet());
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!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"> <mapper namespace="com.mortals.xhx.base.system.user.dao.ibatis.UserDaoImpl">
<!-- 字段和属性映射 --> <!-- 字段和属性映射 -->
<resultMap type="UserEntity" id="UserEntity-Map"> <resultMap type="UserEntity" id="UserEntity-Map">
<result property="id" column="id" /> <id property="id" column="id" />
<result property="loginName" column="loginName" /> <result property="loginName" column="loginName" />
<result property="loginPwd" column="loginPwd" /> <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="loginLimitAddress" column="loginLimitAddress" />
<result property="realName" column="realName" /> <result property="realName" column="realName" />
<result property="mobile" column="mobile" /> <result property="mobile" column="mobile" />
...@@ -18,109 +15,96 @@ ...@@ -18,109 +15,96 @@
<result property="email" column="email" /> <result property="email" column="email" />
<result property="qq" column="qq" /> <result property="qq" column="qq" />
<result property="userType" column="userType" /> <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="status" column="status" />
<result property="customerId" column="customerId" />
<result property="createTime" column="createTime" /> <result property="createTime" column="createTime" />
<result property="createUserId" column="createUserId" /> <result property="createUserId" column="createUserId" />
<result property="createUserName" column="createUserName" /> <result property="createUserName" column="createUserName" />
<result property="lastLoginTime" column="lastLoginTime" /> <result property="lastLoginTime" column="lastLoginTime" />
<result property="lastLoginAddress" column="lastLoginAddress" /> <result property="lastLoginAddress" column="lastLoginAddress" />
<result property="lastModPwdTime" column="lastModPwdTime" />
<result property="lastModPwdAddr" column="lastModPwdAddr" />
</resultMap> </resultMap>
<!-- 表所有列 --> <!-- 表所有列 -->
<sql id="_columns"> <sql id="_columns">
<trim suffixOverrides="," suffix=""> <trim suffixOverrides="," suffix="">
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))"> <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>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginName') or colPickMode == 1 and data.containsKey('loginName')))"> <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>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd') or colPickMode == 1 and data.containsKey('loginPwd')))"> <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, a.loginPwd,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd1') or colPickMode == 1 and data.containsKey('loginPwd1')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginLimitAddress') or colPickMode == 1 and data.containsKey('loginLimitAddress')))">
a.loginPwd1 as loginPwd1, a.loginLimitAddress,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd2') or colPickMode == 1 and data.containsKey('loginPwd2')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('realName') or colPickMode == 1 and data.containsKey('realName')))">
a.loginPwd2 as loginPwd2, a.realName,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginPwd3') or colPickMode == 1 and data.containsKey('loginPwd3')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('mobile') or colPickMode == 1 and data.containsKey('mobile')))">
a.loginPwd3 as loginPwd3, a.mobile,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('loginLimitAddress') or colPickMode == 1 and data.containsKey('loginLimitAddress')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('phone') or colPickMode == 1 and data.containsKey('phone')))">
a.loginLimitAddress as loginLimitAddress, a.phone,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('realName') or colPickMode == 1 and data.containsKey('realName')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('email') or colPickMode == 1 and data.containsKey('email')))">
a.realName as realName, a.email,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('mobile') or colPickMode == 1 and data.containsKey('mobile')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('qq') or colPickMode == 1 and data.containsKey('qq')))">
a.mobile as mobile, a.qq,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('phone') or colPickMode == 1 and data.containsKey('phone')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('userType') or colPickMode == 1 and data.containsKey('userType')))">
a.phone as phone, a.userType,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('email') or colPickMode == 1 and data.containsKey('email')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteIds') or colPickMode == 1 and data.containsKey('siteIds')))">
a.email as email, a.siteIds,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('qq') or colPickMode == 1 and data.containsKey('qq')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('areaCodes') or colPickMode == 1 and data.containsKey('areaCodes')))">
a.qq as qq, a.areaCodes,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('userType') or colPickMode == 1 and data.containsKey('userType')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('status') or colPickMode == 1 and data.containsKey('status')))">
a.userType as userType, a.status,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteId') or colPickMode == 1 and data.containsKey('siteId')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.siteId as siteId, a.createTime,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('status') or colPickMode == 1 and data.containsKey('status')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.status as status, a.createUserId,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('customerId') or colPickMode == 1 and data.containsKey('customerId')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserName') or colPickMode == 1 and data.containsKey('createUserName')))">
a.customerId as customerId, a.createUserName,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastLoginTime') or colPickMode == 1 and data.containsKey('lastLoginTime')))">
a.createTime as createTime, a.lastLoginTime,
</if> </if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))"> <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('lastLoginAddress') or colPickMode == 1 and data.containsKey('lastLoginAddress')))">
a.createUserId as createUserId, a.lastLoginAddress,
</if> </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,
</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,
</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,
</if>
</trim> </trim>
</sql> </sql>
<!-- 新增 --> <!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="UserEntity" keyProperty="id"> <insert id="insert" parameterType="UserEntity" >
insert into mortals_xhx_user 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) (id,loginName,loginPwd,loginLimitAddress,realName,mobile,phone,email,qq,userType,siteIds,areaCodes,status,createTime,createUserId,createUserName,lastLoginTime,lastLoginAddress)
VALUES VALUES
(#{loginName},#{loginPwd},#{loginPwd1},#{loginPwd2},#{loginPwd3},#{loginLimitAddress},#{realName},#{mobile},#{phone},#{email},#{qq},#{userType},#{siteId},#{status},#{customerId},#{createTime},#{createUserId},#{createUserName},#{lastLoginTime},#{lastLoginAddress},#{lastModPwdTime},#{lastModPwdAddr}) (#{id},#{loginName},#{loginPwd},#{loginLimitAddress},#{realName},#{mobile},#{phone},#{email},#{qq},#{userType},#{siteIds},#{areaCodes},#{status},#{createTime},#{createUserId},#{createUserName},#{lastLoginTime},#{lastLoginAddress})
</insert> </insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_user
(id,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.id},#{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>
<!-- 批量新增 -->
<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)
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})
</foreach>
</insert>
<!-- 根据ParamDto更新 --> <!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto"> <update id="update" parameterType="paramDto">
update mortals_xhx_user as a update mortals_xhx_user as a
...@@ -132,15 +116,6 @@ ...@@ -132,15 +116,6 @@
<if test="(colPickMode==0 and data.containsKey('loginPwd')) or (colPickMode==1 and !data.containsKey('loginPwd'))"> <if test="(colPickMode==0 and data.containsKey('loginPwd')) or (colPickMode==1 and !data.containsKey('loginPwd'))">
a.loginPwd=#{data.loginPwd}, a.loginPwd=#{data.loginPwd},
</if> </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'))"> <if test="(colPickMode==0 and data.containsKey('loginLimitAddress')) or (colPickMode==1 and !data.containsKey('loginLimitAddress'))">
a.loginLimitAddress=#{data.loginLimitAddress}, a.loginLimitAddress=#{data.loginLimitAddress},
</if> </if>
...@@ -165,11 +140,11 @@ ...@@ -165,11 +140,11 @@
<if test="(colPickMode==0 and data.containsKey('userTypeIncrement')) or (colPickMode==1 and !data.containsKey('userTypeIncrement'))"> <if test="(colPickMode==0 and data.containsKey('userTypeIncrement')) or (colPickMode==1 and !data.containsKey('userTypeIncrement'))">
a.userType=ifnull(a.userType,0) + #{data.userTypeIncrement}, a.userType=ifnull(a.userType,0) + #{data.userTypeIncrement},
</if> </if>
<if test="(colPickMode==0 and data.containsKey('siteId')) or (colPickMode==1 and !data.containsKey('siteId'))"> <if test="(colPickMode==0 and data.containsKey('siteIds')) or (colPickMode==1 and !data.containsKey('siteIds'))">
a.siteId=#{data.siteId}, a.siteIds=#{data.siteIds},
</if> </if>
<if test="(colPickMode==0 and data.containsKey('siteIdIncrement')) or (colPickMode==1 and !data.containsKey('siteIdIncrement'))"> <if test="(colPickMode==0 and data.containsKey('areaCodes')) or (colPickMode==1 and !data.containsKey('areaCodes'))">
a.siteId=ifnull(a.siteId,0) + #{data.siteIdIncrement}, a.areaCodes=#{data.areaCodes},
</if> </if>
<if test="(colPickMode==0 and data.containsKey('status')) or (colPickMode==1 and !data.containsKey('status'))"> <if test="(colPickMode==0 and data.containsKey('status')) or (colPickMode==1 and !data.containsKey('status'))">
a.status=#{data.status}, a.status=#{data.status},
...@@ -177,12 +152,6 @@ ...@@ -177,12 +152,6 @@
<if test="(colPickMode==0 and data.containsKey('statusIncrement')) or (colPickMode==1 and !data.containsKey('statusIncrement'))"> <if test="(colPickMode==0 and data.containsKey('statusIncrement')) or (colPickMode==1 and !data.containsKey('statusIncrement'))">
a.status=ifnull(a.status,0) + #{data.statusIncrement}, a.status=ifnull(a.status,0) + #{data.statusIncrement},
</if> </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'))"> <if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime}, a.createTime=#{data.createTime},
</if> </if>
...@@ -201,12 +170,6 @@ ...@@ -201,12 +170,6 @@
<if test="(colPickMode==0 and data.containsKey('lastLoginAddress')) or (colPickMode==1 and !data.containsKey('lastLoginAddress'))"> <if test="(colPickMode==0 and data.containsKey('lastLoginAddress')) or (colPickMode==1 and !data.containsKey('lastLoginAddress'))">
a.lastLoginAddress=#{data.lastLoginAddress}, a.lastLoginAddress=#{data.lastLoginAddress},
</if> </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>
<trim suffixOverrides="where" suffix=""> <trim suffixOverrides="where" suffix="">
where where
...@@ -219,208 +182,140 @@ ...@@ -219,208 +182,140 @@
<update id="updateBatch" parameterType="paramDto"> <update id="updateBatch" parameterType="paramDto">
update mortals_xhx_user as a update mortals_xhx_user as a
<trim prefix="set" suffixOverrides=","> <trim prefix="set" suffixOverrides=",">
<trim prefix="loginName=(case" suffix="ELSE loginName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<trim prefix="loginName=(case" suffix="ELSE loginName end),"> <if test="(colPickMode==0 and item.containsKey('loginName')) or (colPickMode==1 and !item.containsKey('loginName'))">
<foreach collection="data.dataList" item="item" index="index" separator="" > when a.id=#{item.id} then #{item.loginName}
<if test="(colPickMode==0 and item.containsKey('loginName')) or (colPickMode==1 and !item.containsKey('loginName'))"> </if>
when a.id=#{item.id} then #{item.loginName} </foreach>
</if> </trim>
</foreach> <trim prefix="loginPwd=(case" suffix="ELSE loginPwd end),">
</trim> <foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginPwd')) or (colPickMode==1 and !item.containsKey('loginPwd'))">
<trim prefix="loginPwd=(case" suffix="ELSE loginPwd end),"> when a.id=#{item.id} then #{item.loginPwd}
<foreach collection="data.dataList" item="item" index="index" separator="" > </if>
<if test="(colPickMode==0 and item.containsKey('loginPwd')) or (colPickMode==1 and !item.containsKey('loginPwd'))"> </foreach>
when a.id=#{item.id} then #{item.loginPwd} </trim>
</if> <trim prefix="loginLimitAddress=(case" suffix="ELSE loginLimitAddress end),">
</foreach> <foreach collection="data.dataList" item="item" index="index" separator="" >
</trim> <if test="(colPickMode==0 and item.containsKey('loginLimitAddress')) or (colPickMode==1 and !item.containsKey('loginLimitAddress'))">
when a.id=#{item.id} then #{item.loginLimitAddress}
<trim prefix="loginPwd1=(case" suffix="ELSE loginPwd1 end),"> </if>
<foreach collection="data.dataList" item="item" index="index" separator="" > </foreach>
<if test="(colPickMode==0 and item.containsKey('loginPwd1')) or (colPickMode==1 and !item.containsKey('loginPwd1'))"> </trim>
when a.id=#{item.id} then #{item.loginPwd1} <trim prefix="realName=(case" suffix="ELSE realName end),">
</if> <foreach collection="data.dataList" item="item" index="index" separator="" >
</foreach> <if test="(colPickMode==0 and item.containsKey('realName')) or (colPickMode==1 and !item.containsKey('realName'))">
</trim> when a.id=#{item.id} then #{item.realName}
</if>
<trim prefix="loginPwd2=(case" suffix="ELSE loginPwd2 end),"> </foreach>
<foreach collection="data.dataList" item="item" index="index" separator="" > </trim>
<if test="(colPickMode==0 and item.containsKey('loginPwd2')) or (colPickMode==1 and !item.containsKey('loginPwd2'))"> <trim prefix="mobile=(case" suffix="ELSE mobile end),">
when a.id=#{item.id} then #{item.loginPwd2} <foreach collection="data.dataList" item="item" index="index" separator="" >
</if> <if test="(colPickMode==0 and item.containsKey('mobile')) or (colPickMode==1 and !item.containsKey('mobile'))">
</foreach> when a.id=#{item.id} then #{item.mobile}
</trim> </if>
</foreach>
<trim prefix="loginPwd3=(case" suffix="ELSE loginPwd3 end),"> </trim>
<foreach collection="data.dataList" item="item" index="index" separator="" > <trim prefix="phone=(case" suffix="ELSE phone end),">
<if test="(colPickMode==0 and item.containsKey('loginPwd3')) or (colPickMode==1 and !item.containsKey('loginPwd3'))"> <foreach collection="data.dataList" item="item" index="index" separator="" >
when a.id=#{item.id} then #{item.loginPwd3} <if test="(colPickMode==0 and item.containsKey('phone')) or (colPickMode==1 and !item.containsKey('phone'))">
</if> when a.id=#{item.id} then #{item.phone}
</foreach> </if>
</trim> </foreach>
</trim>
<trim prefix="loginLimitAddress=(case" suffix="ELSE loginLimitAddress end),"> <trim prefix="email=(case" suffix="ELSE email end),">
<foreach collection="data.dataList" item="item" index="index" separator="" > <foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('loginLimitAddress')) or (colPickMode==1 and !item.containsKey('loginLimitAddress'))"> <if test="(colPickMode==0 and item.containsKey('email')) or (colPickMode==1 and !item.containsKey('email'))">
when a.id=#{item.id} then #{item.loginLimitAddress} when a.id=#{item.id} then #{item.email}
</if> </if>
</foreach> </foreach>
</trim> </trim>
<trim prefix="qq=(case" suffix="ELSE qq end),">
<trim prefix="realName=(case" suffix="ELSE realName end),"> <foreach collection="data.dataList" item="item" index="index" separator="" >
<foreach collection="data.dataList" item="item" index="index" separator="" > <if test="(colPickMode==0 and item.containsKey('qq')) or (colPickMode==1 and !item.containsKey('qq'))">
<if test="(colPickMode==0 and item.containsKey('realName')) or (colPickMode==1 and !item.containsKey('realName'))"> when a.id=#{item.id} then #{item.qq}
when a.id=#{item.id} then #{item.realName} </if>
</if> </foreach>
</foreach> </trim>
</trim> <trim prefix="userType=(case" suffix="ELSE userType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<trim prefix="mobile=(case" suffix="ELSE mobile end),"> <choose>
<foreach collection="data.dataList" item="item" index="index" separator="" > <when test="(colPickMode==0 and item.containsKey('userType')) or (colPickMode==1 and !item.containsKey('userType'))">
<if test="(colPickMode==0 and item.containsKey('mobile')) or (colPickMode==1 and !item.containsKey('mobile'))"> when a.id=#{item.id} then #{item.userType}
when a.id=#{item.id} then #{item.mobile} </when>
</if> <when test="(colPickMode==0 and item.containsKey('userTypeIncrement')) or (colPickMode==1 and !item.containsKey('userTypeIncrement'))">
</foreach> when a.id=#{item.id} then ifnull(a.userType,0) + #{item.userTypeIncrement}
</trim> </when>
</choose>
<trim prefix="phone=(case" suffix="ELSE phone end),"> </foreach>
<foreach collection="data.dataList" item="item" index="index" separator="" > </trim>
<if test="(colPickMode==0 and item.containsKey('phone')) or (colPickMode==1 and !item.containsKey('phone'))"> <trim prefix="siteIds=(case" suffix="ELSE siteIds end),">
when a.id=#{item.id} then #{item.phone} <foreach collection="data.dataList" item="item" index="index" separator="" >
</if> <if test="(colPickMode==0 and item.containsKey('siteIds')) or (colPickMode==1 and !item.containsKey('siteIds'))">
</foreach> when a.id=#{item.id} then #{item.siteIds}
</trim> </if>
</foreach>
<trim prefix="email=(case" suffix="ELSE email end),"> </trim>
<foreach collection="data.dataList" item="item" index="index" separator="" > <trim prefix="areaCodes=(case" suffix="ELSE areaCodes end),">
<if test="(colPickMode==0 and item.containsKey('email')) or (colPickMode==1 and !item.containsKey('email'))"> <foreach collection="data.dataList" item="item" index="index" separator="" >
when a.id=#{item.id} then #{item.email} <if test="(colPickMode==0 and item.containsKey('areaCodes')) or (colPickMode==1 and !item.containsKey('areaCodes'))">
</if> when a.id=#{item.id} then #{item.areaCodes}
</foreach> </if>
</trim> </foreach>
</trim>
<trim prefix="qq=(case" suffix="ELSE qq end),"> <trim prefix="status=(case" suffix="ELSE status end),">
<foreach collection="data.dataList" item="item" index="index" separator="" > <foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('qq')) or (colPickMode==1 and !item.containsKey('qq'))"> <choose>
when a.id=#{item.id} then #{item.qq} <when test="(colPickMode==0 and item.containsKey('status')) or (colPickMode==1 and !item.containsKey('status'))">
</if> when a.id=#{item.id} then #{item.status}
</foreach> </when>
</trim> <when test="(colPickMode==0 and item.containsKey('statusIncrement')) or (colPickMode==1 and !item.containsKey('statusIncrement'))">
when a.id=#{item.id} then ifnull(a.status,0) + #{item.statusIncrement}
<trim prefix="userType=(case" suffix="ELSE userType end),"> </when>
<foreach collection="data.dataList" item="item" index="index" separator="" > </choose>
<choose> </foreach>
<when test="(colPickMode==0 and item.containsKey('userType')) or (colPickMode==1 and !item.containsKey('userType'))"> </trim>
when a.id=#{item.id} then #{item.userType} <trim prefix="createTime=(case" suffix="ELSE createTime end),">
</when> <foreach collection="data.dataList" item="item" index="index" separator="" >
<when test="(colPickMode==0 and item.containsKey('userTypeIncrement')) or (colPickMode==1 and !item.containsKey('userTypeIncrement'))"> <if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
when a.id=#{item.id} then ifnull(a.userType,0) + #{item.userTypeIncrement} when a.id=#{item.id} then #{item.createTime}
</when> </if>
</choose> </foreach>
</foreach> </trim>
</trim> <trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<trim prefix="siteId=(case" suffix="ELSE siteId end),"> <choose>
<foreach collection="data.dataList" item="item" index="index" separator="" > <when test="(colPickMode==0 and item.containsKey('createUserId')) or (colPickMode==1 and !item.containsKey('createUserId'))">
<choose> when a.id=#{item.id} then #{item.createUserId}
<when test="(colPickMode==0 and item.containsKey('siteId')) or (colPickMode==1 and !item.containsKey('siteId'))"> </when>
when a.id=#{item.id} then #{item.siteId} <when test="(colPickMode==0 and item.containsKey('createUserIdIncrement')) or (colPickMode==1 and !item.containsKey('createUserIdIncrement'))">
</when> when a.id=#{item.id} then ifnull(a.createUserId,0) + #{item.createUserIdIncrement}
<when test="(colPickMode==0 and item.containsKey('siteIdIncrement')) or (colPickMode==1 and !item.containsKey('siteIdIncrement'))"> </when>
when a.id=#{item.id} then ifnull(a.siteId,0) + #{item.siteIdIncrement} </choose>
</when> </foreach>
</choose> </trim>
</foreach> <trim prefix="createUserName=(case" suffix="ELSE createUserName end),">
</trim> <foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('createUserName')) or (colPickMode==1 and !item.containsKey('createUserName'))">
<trim prefix="status=(case" suffix="ELSE status end),"> when a.id=#{item.id} then #{item.createUserName}
<foreach collection="data.dataList" item="item" index="index" separator="" > </if>
<choose> </foreach>
<when test="(colPickMode==0 and item.containsKey('status')) or (colPickMode==1 and !item.containsKey('status'))"> </trim>
when a.id=#{item.id} then #{item.status} <trim prefix="lastLoginTime=(case" suffix="ELSE lastLoginTime end),">
</when> <foreach collection="data.dataList" item="item" index="index" separator="" >
<when test="(colPickMode==0 and item.containsKey('statusIncrement')) or (colPickMode==1 and !item.containsKey('statusIncrement'))"> <if test="(colPickMode==0 and item.containsKey('lastLoginTime')) or (colPickMode==1 and !item.containsKey('lastLoginTime'))">
when a.id=#{item.id} then ifnull(a.status,0) + #{item.statusIncrement} when a.id=#{item.id} then #{item.lastLoginTime}
</when> </if>
</choose> </foreach>
</foreach> </trim>
</trim> <trim prefix="lastLoginAddress=(case" suffix="ELSE lastLoginAddress end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<trim prefix="customerId=(case" suffix="ELSE customerId end),"> <if test="(colPickMode==0 and item.containsKey('lastLoginAddress')) or (colPickMode==1 and !item.containsKey('lastLoginAddress'))">
<foreach collection="data.dataList" item="item" index="index" separator="" > when a.id=#{item.id} then #{item.lastLoginAddress}
<choose> </if>
<when test="(colPickMode==0 and item.containsKey('customerId')) or (colPickMode==1 and !item.containsKey('customerId'))"> </foreach>
when a.id=#{item.id} then #{item.customerId} </trim>
</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'))">
when a.id=#{item.id} then #{item.createTime}
</if>
</foreach>
</trim>
<trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('createUserId')) or (colPickMode==1 and !item.containsKey('createUserId'))">
when a.id=#{item.id} then #{item.createUserId}
</when>
<when test="(colPickMode==0 and item.containsKey('createUserIdIncrement')) or (colPickMode==1 and !item.containsKey('createUserIdIncrement'))">
when a.id=#{item.id} then ifnull(a.createUserId,0) + #{item.createUserIdIncrement}
</when>
</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'))">
when a.id=#{item.id} then #{item.createUserName}
</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'))">
when a.id=#{item.id} then #{item.lastLoginTime}
</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'))">
when a.id=#{item.id} then #{item.lastLoginAddress}
</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> </trim>
where id in where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")"> <foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
...@@ -466,6 +361,9 @@ ...@@ -466,6 +361,9 @@
</trim> </trim>
<include refid="_orderCols_"/> <include refid="_orderCols_"/>
</select> </select>
<!-- 获取 --> <!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int"> <select id="getListCount" parameterType="paramDto" resultType="int">
select count(1) select count(1)
...@@ -514,521 +412,408 @@ ...@@ -514,521 +412,408 @@
<!-- 条件映射-代参数 --> <!-- 条件映射-代参数 -->
<sql id="_condition_param_"> <sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/> <bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')"> <if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null"> <if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id} ${_conditionType_} a.id=#{${_conditionParam_}.id}
</if> </if>
</if> </if>
<if test="conditionParamRef.containsKey('id')"> <if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null "> <if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id} ${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
</if>
<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('loginName')">
<if test="conditionParamRef.loginName != null and conditionParamRef.loginName != ''">
${_conditionType_} a.loginName like #{${_conditionParam_}.loginName}
</if>
<if test="conditionParamRef.loginName == null">
${_conditionType_} a.loginName is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('loginNameList')"> <if test="conditionParamRef.id == null">
${_conditionType_} a.loginName in ${_conditionType_} a.id is null
<foreach collection="conditionParamRef.loginNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
</if>
<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('loginPwd')">
<if test="conditionParamRef.loginPwd != null and conditionParamRef.loginPwd != ''">
${_conditionType_} a.loginPwd like #{${_conditionParam_}.loginPwd}
</if>
<if test="conditionParamRef.loginPwd == null">
${_conditionType_} a.loginPwd is null
</if>
</if>
<if test="conditionParamRef.containsKey('loginPwdList')">
${_conditionType_} a.loginPwd in
<foreach collection="conditionParamRef.loginPwdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginPwd1')"> <if test="conditionParamRef.containsKey('loginName')">
<if test="conditionParamRef.loginPwd1 != null and conditionParamRef.loginPwd1 != ''"> <if test="conditionParamRef.loginName != null and conditionParamRef.loginName != ''">
${_conditionType_} a.loginPwd1 like #{${_conditionParam_}.loginPwd1} ${_conditionType_} a.loginName like #{${_conditionParam_}.loginName}
</if>
<if test="conditionParamRef.loginPwd1 == null">
${_conditionType_} a.loginPwd1 is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('loginPwd1List')"> <if test="conditionParamRef.loginName == null">
${_conditionType_} a.loginPwd1 in ${_conditionType_} a.loginName is null
<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>
</if>
<if test="conditionParamRef.containsKey('loginNameList')">
${_conditionType_} a.loginName in
<foreach collection="conditionParamRef.loginNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginPwd3')"> <if test="conditionParamRef.containsKey('loginPwd')">
<if test="conditionParamRef.loginPwd3 != null and conditionParamRef.loginPwd3 != ''"> <if test="conditionParamRef.loginPwd != null and conditionParamRef.loginPwd != ''">
${_conditionType_} a.loginPwd3 like #{${_conditionParam_}.loginPwd3} ${_conditionType_} a.loginPwd like #{${_conditionParam_}.loginPwd}
</if>
<if test="conditionParamRef.loginPwd3 == null">
${_conditionType_} a.loginPwd3 is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('loginPwd3List')"> <if test="conditionParamRef.loginPwd == null">
${_conditionType_} a.loginPwd3 in ${_conditionType_} a.loginPwd is null
<foreach collection="conditionParamRef.loginPwd3List" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('loginPwdList')">
${_conditionType_} a.loginPwd in
<foreach collection="conditionParamRef.loginPwdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('loginLimitAddress')"> <if test="conditionParamRef.containsKey('loginLimitAddress')">
<if test="conditionParamRef.loginLimitAddress != null and conditionParamRef.loginLimitAddress != ''"> <if test="conditionParamRef.loginLimitAddress != null and conditionParamRef.loginLimitAddress != ''">
${_conditionType_} a.loginLimitAddress like #{${_conditionParam_}.loginLimitAddress} ${_conditionType_} a.loginLimitAddress like #{${_conditionParam_}.loginLimitAddress}
</if>
<if test="conditionParamRef.loginLimitAddress == null">
${_conditionType_} a.loginLimitAddress is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('loginLimitAddressList')"> <if test="conditionParamRef.loginLimitAddress == null">
${_conditionType_} a.loginLimitAddress in ${_conditionType_} a.loginLimitAddress is null
<foreach collection="conditionParamRef.loginLimitAddressList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('loginLimitAddressList')">
${_conditionType_} a.loginLimitAddress in
<foreach collection="conditionParamRef.loginLimitAddressList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('realName')"> <if test="conditionParamRef.containsKey('realName')">
<if test="conditionParamRef.realName != null and conditionParamRef.realName != ''"> <if test="conditionParamRef.realName != null and conditionParamRef.realName != ''">
${_conditionType_} a.realName like #{${_conditionParam_}.realName} ${_conditionType_} a.realName like #{${_conditionParam_}.realName}
</if>
<if test="conditionParamRef.realName == null">
${_conditionType_} a.realName is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('realNameList')"> <if test="conditionParamRef.realName == null">
${_conditionType_} a.realName in ${_conditionType_} a.realName is null
<foreach collection="conditionParamRef.realNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('realNameList')">
${_conditionType_} a.realName in
<foreach collection="conditionParamRef.realNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('mobile')"> <if test="conditionParamRef.containsKey('mobile')">
<if test="conditionParamRef.mobile != null and conditionParamRef.mobile != ''"> <if test="conditionParamRef.mobile != null and conditionParamRef.mobile != ''">
${_conditionType_} a.mobile like #{${_conditionParam_}.mobile} ${_conditionType_} a.mobile like #{${_conditionParam_}.mobile}
</if>
<if test="conditionParamRef.mobile == null">
${_conditionType_} a.mobile is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('mobileList')"> <if test="conditionParamRef.mobile == null">
${_conditionType_} a.mobile in ${_conditionType_} a.mobile is null
<foreach collection="conditionParamRef.mobileList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('mobileList')">
${_conditionType_} a.mobile in
<foreach collection="conditionParamRef.mobileList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('phone')"> <if test="conditionParamRef.containsKey('phone')">
<if test="conditionParamRef.phone != null and conditionParamRef.phone != ''"> <if test="conditionParamRef.phone != null and conditionParamRef.phone != ''">
${_conditionType_} a.phone like #{${_conditionParam_}.phone} ${_conditionType_} a.phone like #{${_conditionParam_}.phone}
</if>
<if test="conditionParamRef.phone == null">
${_conditionType_} a.phone is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('phoneList')"> <if test="conditionParamRef.phone == null">
${_conditionType_} a.phone in ${_conditionType_} a.phone is null
<foreach collection="conditionParamRef.phoneList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('phoneList')">
${_conditionType_} a.phone in
<foreach collection="conditionParamRef.phoneList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('email')"> <if test="conditionParamRef.containsKey('email')">
<if test="conditionParamRef.email != null and conditionParamRef.email != ''"> <if test="conditionParamRef.email != null and conditionParamRef.email != ''">
${_conditionType_} a.email like #{${_conditionParam_}.email} ${_conditionType_} a.email like #{${_conditionParam_}.email}
</if>
<if test="conditionParamRef.email == null">
${_conditionType_} a.email is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('emailList')"> <if test="conditionParamRef.email == null">
${_conditionType_} a.email in ${_conditionType_} a.email is null
<foreach collection="conditionParamRef.emailList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('emailList')">
${_conditionType_} a.email in
<foreach collection="conditionParamRef.emailList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('qq')"> <if test="conditionParamRef.containsKey('qq')">
<if test="conditionParamRef.qq != null and conditionParamRef.qq != ''"> <if test="conditionParamRef.qq != null and conditionParamRef.qq != ''">
${_conditionType_} a.qq like #{${_conditionParam_}.qq} ${_conditionType_} a.qq like #{${_conditionParam_}.qq}
</if>
<if test="conditionParamRef.qq == null">
${_conditionType_} a.qq is null
</if>
</if>
<if test="conditionParamRef.containsKey('qqList')">
${_conditionType_} a.qq in
<foreach collection="conditionParamRef.qqList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('userType')">
<if test="conditionParamRef.userType != null ">
${_conditionType_} a.userType = #{${_conditionParam_}.userType}
</if>
<if test="conditionParamRef.userType == null">
${_conditionType_} a.userType is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('userTypeList')"> <if test="conditionParamRef.qq == null">
${_conditionType_} a.userType in ${_conditionType_} a.qq is null
<foreach collection="conditionParamRef.userTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
<if test="conditionParamRef.containsKey('userTypeStart') and conditionParamRef.userTypeStart != null"> </if>
${_conditionType_} a.userType <![CDATA[ >= ]]> #{${_conditionParam_}.userTypeStart} <if test="conditionParamRef.containsKey('qqList')">
${_conditionType_} a.qq in
<foreach collection="conditionParamRef.qqList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('userType')">
<if test="conditionParamRef.userType != null ">
${_conditionType_} a.userType = #{${_conditionParam_}.userType}
</if> </if>
<if test="conditionParamRef.containsKey('userTypeEnd') and conditionParamRef.userTypeEnd != null"> <if test="conditionParamRef.userType == null">
${_conditionType_} a.userType <![CDATA[ <= ]]> #{${_conditionParam_}.userTypeEnd} ${_conditionType_} a.userType is null
</if> </if>
</if>
<if test="conditionParamRef.containsKey('userTypeList')">
${_conditionType_} a.userType in
<foreach collection="conditionParamRef.userTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('userTypeStart') and conditionParamRef.userTypeStart != null">
${_conditionType_} a.userType <![CDATA[ >= ]]> #{${_conditionParam_}.userTypeStart}
</if>
<if test="conditionParamRef.containsKey('userTypeEnd') and conditionParamRef.userTypeEnd != null">
${_conditionType_} a.userType <![CDATA[ <= ]]> #{${_conditionParam_}.userTypeEnd}
</if>
<if test="conditionParamRef.containsKey('siteId')">
<if test="conditionParamRef.siteId != null ">
${_conditionType_} a.siteId = #{${_conditionParam_}.siteId}
</if>
<if test="conditionParamRef.siteId == null">
${_conditionType_} a.siteId is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteIdList')">
${_conditionType_} a.siteId in
<foreach collection="conditionParamRef.siteIdList" 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>
<if test="conditionParamRef.containsKey('siteIdEnd') and conditionParamRef.siteIdEnd != null">
${_conditionType_} a.siteId <![CDATA[ <= ]]> #{${_conditionParam_}.siteIdEnd}
</if>
<if test="conditionParamRef.containsKey('status')"> <if test="conditionParamRef.containsKey('siteIds')">
<if test="conditionParamRef.status != null "> <if test="conditionParamRef.siteIds != null and conditionParamRef.siteIds != ''">
${_conditionType_} a.status = #{${_conditionParam_}.status} ${_conditionType_} a.siteIds like #{${_conditionParam_}.siteIds}
</if>
<if test="conditionParamRef.status == null">
${_conditionType_} a.status is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('statusList')"> <if test="conditionParamRef.siteIds == null">
${_conditionType_} a.status in ${_conditionType_} a.siteIds is null
<foreach collection="conditionParamRef.statusList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('statusStart') and conditionParamRef.statusStart != null">
${_conditionType_} a.status <![CDATA[ >= ]]> #{${_conditionParam_}.statusStart}
</if>
<if test="conditionParamRef.containsKey('statusEnd') and conditionParamRef.statusEnd != null">
${_conditionType_} a.status <![CDATA[ <= ]]> #{${_conditionParam_}.statusEnd}
</if> </if>
</if>
<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('customerId')"> <if test="conditionParamRef.containsKey('areaCodes')">
<if test="conditionParamRef.customerId != null "> <if test="conditionParamRef.areaCodes != null and conditionParamRef.areaCodes != ''">
${_conditionType_} a.customerId = #{${_conditionParam_}.customerId} ${_conditionType_} a.areaCodes like #{${_conditionParam_}.areaCodes}
</if>
<if test="conditionParamRef.customerId == null">
${_conditionType_} a.customerId is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('customerIdList')"> <if test="conditionParamRef.areaCodes == null">
${_conditionType_} a.customerId in ${_conditionType_} a.areaCodes is null
<foreach collection="conditionParamRef.customerIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
<if test="conditionParamRef.containsKey('customerIdStart') and conditionParamRef.customerIdStart != null"> </if>
${_conditionType_} a.customerId <![CDATA[ >= ]]> #{${_conditionParam_}.customerIdStart} <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}
</if> </if>
<if test="conditionParamRef.containsKey('customerIdEnd') and conditionParamRef.customerIdEnd != null"> <if test="conditionParamRef.status == null">
${_conditionType_} a.customerId <![CDATA[ <= ]]> #{${_conditionParam_}.customerIdEnd} ${_conditionType_} a.status is null
</if> </if>
</if>
<if test="conditionParamRef.containsKey('statusList')">
${_conditionType_} a.status in
<foreach collection="conditionParamRef.statusList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('statusStart') and conditionParamRef.statusStart != null">
${_conditionType_} a.status <![CDATA[ >= ]]> #{${_conditionParam_}.statusStart}
</if>
<if test="conditionParamRef.containsKey('statusEnd') and conditionParamRef.statusEnd != null">
${_conditionType_} a.status <![CDATA[ <= ]]> #{${_conditionParam_}.statusEnd}
</if>
<if test="conditionParamRef.containsKey('createTime')"> <if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null "> <if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime} ${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if> </if>
<if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''"> <if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') ${_conditionType_} a.createTime is null
</if> </if>
<if test="conditionParamRef.containsKey('createUserId')"> </if>
<if test="conditionParamRef.createUserId != null "> <if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId} ${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if> </if>
<if test="conditionParamRef.createUserId == null"> <if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
${_conditionType_} a.createUserId is null ${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if> </if>
</if> <if test="conditionParamRef.containsKey('createUserId')">
<if test="conditionParamRef.containsKey('createUserIdList')"> <if test="conditionParamRef.createUserId != null ">
${_conditionType_} a.createUserId in ${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
<foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
</if>
<if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('createUserName')">
<if test="conditionParamRef.createUserName != null and conditionParamRef.createUserName != ''">
${_conditionType_} a.createUserName like #{${_conditionParam_}.createUserName}
</if>
<if test="conditionParamRef.createUserName == null">
${_conditionType_} a.createUserName is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('createUserNameList')"> <if test="conditionParamRef.createUserId == null">
${_conditionType_} a.createUserName in ${_conditionType_} a.createUserId is null
<foreach collection="conditionParamRef.createUserNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('createUserIdList')">
${_conditionType_} a.createUserId in
<foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
</if>
<if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('lastLoginTime')">
<if test="conditionParamRef.lastLoginTime != null ">
${_conditionType_} a.lastLoginTime = #{${_conditionParam_}.lastLoginTime}
</if>
<if test="conditionParamRef.lastLoginTime == null">
${_conditionType_} a.lastLoginTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('lastLoginTimeStart') and conditionParamRef.lastLoginTimeStart != null and conditionParamRef.lastLoginTimeStart!=''">
${_conditionType_} a.lastLoginTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.lastLoginTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('lastLoginTimeEnd') and conditionParamRef.lastLoginTimeEnd != null and conditionParamRef.lastLoginTimeEnd!=''">
${_conditionType_} a.lastLoginTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.lastLoginTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('lastLoginAddress')"> <if test="conditionParamRef.containsKey('createUserName')">
<if test="conditionParamRef.lastLoginAddress != null and conditionParamRef.lastLoginAddress != ''"> <if test="conditionParamRef.createUserName != null and conditionParamRef.createUserName != ''">
${_conditionType_} a.lastLoginAddress like #{${_conditionParam_}.lastLoginAddress} ${_conditionType_} a.createUserName like #{${_conditionParam_}.createUserName}
</if>
<if test="conditionParamRef.lastLoginAddress == null">
${_conditionType_} a.lastLoginAddress is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('lastLoginAddressList')"> <if test="conditionParamRef.createUserName == null">
${_conditionType_} a.lastLoginAddress in ${_conditionType_} a.createUserName is null
<foreach collection="conditionParamRef.lastLoginAddressList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('createUserNameList')">
${_conditionType_} a.createUserName in
<foreach collection="conditionParamRef.createUserNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('lastModPwdTime')"> <if test="conditionParamRef.containsKey('lastLoginTime')">
<if test="conditionParamRef.lastModPwdTime != null "> <if test="conditionParamRef.lastLoginTime != null ">
${_conditionType_} a.lastModPwdTime = #{${_conditionParam_}.lastModPwdTime} ${_conditionType_} a.lastLoginTime = #{${_conditionParam_}.lastLoginTime}
</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>
<if test="conditionParamRef.containsKey('lastModPwdTimeEnd') and conditionParamRef.lastModPwdTimeEnd != null and conditionParamRef.lastModPwdTimeEnd!=''"> <if test="conditionParamRef.lastLoginTime == null">
${_conditionType_} a.lastModPwdTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.lastModPwdTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') ${_conditionType_} a.lastLoginTime is null
</if> </if>
</if>
<if test="conditionParamRef.containsKey('lastLoginTimeStart') and conditionParamRef.lastLoginTimeStart != null and conditionParamRef.lastLoginTimeStart!=''">
${_conditionType_} a.lastLoginTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.lastLoginTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('lastLoginTimeEnd') and conditionParamRef.lastLoginTimeEnd != null and conditionParamRef.lastLoginTimeEnd!=''">
${_conditionType_} a.lastLoginTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.lastLoginTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('lastModPwdAddr')"> <if test="conditionParamRef.containsKey('lastLoginAddress')">
<if test="conditionParamRef.lastModPwdAddr != null and conditionParamRef.lastModPwdAddr != ''"> <if test="conditionParamRef.lastLoginAddress != null and conditionParamRef.lastLoginAddress != ''">
${_conditionType_} a.lastModPwdAddr like #{${_conditionParam_}.lastModPwdAddr} ${_conditionType_} a.lastLoginAddress like #{${_conditionParam_}.lastLoginAddress}
</if>
<if test="conditionParamRef.lastModPwdAddr == null">
${_conditionType_} a.lastModPwdAddr is null
</if>
</if> </if>
<if test="conditionParamRef.containsKey('lastModPwdAddrList')"> <if test="conditionParamRef.lastLoginAddress == null">
${_conditionType_} a.lastModPwdAddr in ${_conditionType_} a.lastLoginAddress is null
<foreach collection="conditionParamRef.lastModPwdAddrList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if> </if>
</if>
<if test="conditionParamRef.containsKey('lastLoginAddressList')">
${_conditionType_} a.lastLoginAddress in
<foreach collection="conditionParamRef.lastLoginAddressList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql> </sql>
<sql id="_orderCols_"> <sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()"> <if test="orderColList != null and !orderColList.isEmpty()">
order by order by
<trim suffixOverrides="," suffix=""> <trim suffixOverrides="," suffix="">
<foreach collection="orderColList" open="" close="" index="index" item="item" separator=","> <foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
${item.colName} ${item.sortKind} ${item.colName} ${item.sortKind}
</foreach> </foreach>
</trim> </trim>
</if> </if>
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()"> <if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by order by
<trim suffixOverrides="," suffix=""> <trim suffixOverrides="," suffix="">
<if test="orderCol.containsKey('id')"> <if test="orderCol.containsKey('id')">
a.id a.id
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if> <if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('loginName')"> <if test="orderCol.containsKey('loginName')">
a.loginName a.loginName
<if test='orderCol.loginName != null and "DESC".equalsIgnoreCase(orderCol.loginName)'>DESC</if> <if test='orderCol.loginName != null and "DESC".equalsIgnoreCase(orderCol.loginName)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('loginPwd')"> <if test="orderCol.containsKey('loginPwd')">
a.loginPwd a.loginPwd
<if test='orderCol.loginPwd != null and "DESC".equalsIgnoreCase(orderCol.loginPwd)'>DESC</if> <if test='orderCol.loginPwd != null and "DESC".equalsIgnoreCase(orderCol.loginPwd)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('loginPwd1')"> <if test="orderCol.containsKey('loginLimitAddress')">
a.loginPwd1 a.loginLimitAddress
<if test='orderCol.loginPwd1 != null and "DESC".equalsIgnoreCase(orderCol.loginPwd1)'>DESC</if> <if test='orderCol.loginLimitAddress != null and "DESC".equalsIgnoreCase(orderCol.loginLimitAddress)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('loginPwd2')"> <if test="orderCol.containsKey('realName')">
a.loginPwd2 a.realName
<if test='orderCol.loginPwd2 != null and "DESC".equalsIgnoreCase(orderCol.loginPwd2)'>DESC</if> <if test='orderCol.realName != null and "DESC".equalsIgnoreCase(orderCol.realName)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('loginPwd3')"> <if test="orderCol.containsKey('mobile')">
a.loginPwd3 a.mobile
<if test='orderCol.loginPwd3 != null and "DESC".equalsIgnoreCase(orderCol.loginPwd3)'>DESC</if> <if test='orderCol.mobile != null and "DESC".equalsIgnoreCase(orderCol.mobile)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('loginLimitAddress')"> <if test="orderCol.containsKey('phone')">
a.loginLimitAddress a.phone
<if test='orderCol.loginLimitAddress != null and "DESC".equalsIgnoreCase(orderCol.loginLimitAddress)'>DESC</if> <if test='orderCol.phone != null and "DESC".equalsIgnoreCase(orderCol.phone)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('realName')"> <if test="orderCol.containsKey('email')">
a.realName a.email
<if test='orderCol.realName != null and "DESC".equalsIgnoreCase(orderCol.realName)'>DESC</if> <if test='orderCol.email != null and "DESC".equalsIgnoreCase(orderCol.email)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('mobile')"> <if test="orderCol.containsKey('qq')">
a.mobile a.qq
<if test='orderCol.mobile != null and "DESC".equalsIgnoreCase(orderCol.mobile)'>DESC</if> <if test='orderCol.qq != null and "DESC".equalsIgnoreCase(orderCol.qq)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('phone')"> <if test="orderCol.containsKey('userType')">
a.phone a.userType
<if test='orderCol.phone != null and "DESC".equalsIgnoreCase(orderCol.phone)'>DESC</if> <if test='orderCol.userType != null and "DESC".equalsIgnoreCase(orderCol.userType)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('email')"> <if test="orderCol.containsKey('siteIds')">
a.email a.siteIds
<if test='orderCol.email != null and "DESC".equalsIgnoreCase(orderCol.email)'>DESC</if> <if test='orderCol.siteIds != null and "DESC".equalsIgnoreCase(orderCol.siteIds)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('qq')"> <if test="orderCol.containsKey('areaCodes')">
a.qq a.areaCodes
<if test='orderCol.qq != null and "DESC".equalsIgnoreCase(orderCol.qq)'>DESC</if> <if test='orderCol.areaCodes != null and "DESC".equalsIgnoreCase(orderCol.areaCodes)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('userType')"> <if test="orderCol.containsKey('status')">
a.userType a.status
<if test='orderCol.userType != null and "DESC".equalsIgnoreCase(orderCol.userType)'>DESC</if> <if test='orderCol.status != null and "DESC".equalsIgnoreCase(orderCol.status)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('siteId')"> <if test="orderCol.containsKey('createTime')">
a.siteId a.createTime
<if test='orderCol.siteId != null and "DESC".equalsIgnoreCase(orderCol.siteId)'>DESC</if> <if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('status')"> <if test="orderCol.containsKey('createUserId')">
a.status a.createUserId
<if test='orderCol.status != null and "DESC".equalsIgnoreCase(orderCol.status)'>DESC</if> <if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('customerId')"> <if test="orderCol.containsKey('createUserName')">
a.customerId a.createUserName
<if test='orderCol.customerId != null and "DESC".equalsIgnoreCase(orderCol.customerId)'>DESC</if> <if test='orderCol.createUserName != null and "DESC".equalsIgnoreCase(orderCol.createUserName)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('createTime')"> <if test="orderCol.containsKey('lastLoginTime')">
a.createTime a.lastLoginTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if> <if test='orderCol.lastLoginTime != null and "DESC".equalsIgnoreCase(orderCol.lastLoginTime)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('createUserId')"> <if test="orderCol.containsKey('lastLoginAddress')">
a.createUserId a.lastLoginAddress
<if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if> <if test='orderCol.lastLoginAddress != null and "DESC".equalsIgnoreCase(orderCol.lastLoginAddress)'>DESC</if>
, ,
</if> </if>
<if test="orderCol.containsKey('createUserName')">
a.createUserName
<if test='orderCol.createUserName != null and "DESC".equalsIgnoreCase(orderCol.createUserName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('lastLoginTime')">
a.lastLoginTime
<if test='orderCol.lastLoginTime != null and "DESC".equalsIgnoreCase(orderCol.lastLoginTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('lastLoginAddress')">
a.lastLoginAddress
<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> </trim>
</if> </if>
</sql> </sql>
......
...@@ -85,6 +85,12 @@ ...@@ -85,6 +85,12 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.12</version>
</dependency>
</dependencies> </dependencies>
<build> <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("暂时无法通知设备,请稍后再试!");
}
};
}
}
import http from "../request/http";
let baseURL = process.env.VUE_APP_API_BASE_URL;
// 获取资源列表
export function getResourceList(params) {
return http.post(`${baseURL}/zwfw/resource/list`, params);
}
// 保存资源
export function saveResource(params) {
return http.post(`${baseURL}/zwfw/resource/save`, params);
}
// 删除资源
export function delResource(params) {
return http.get(`${baseURL}/zwfw/resource/delete`, params);
}
// 查询角色权限列表
export function getRoleResourceList(params) {
return http.post(`${baseURL}/zwfw/role/auth/list`, params);
}
// 保存角色资源
export function distributionSource(params) {
return http.post(`${baseURL}/zwfw/role/auth/distributionSource`, params);
}
// 自动刷新资源
export function refreshUrl(params) {
return http.post(`${baseURL}/zwfw/resource/refreshUrl`, params);
}
...@@ -85,8 +85,6 @@ export default { ...@@ -85,8 +85,6 @@ export default {
// console.log(this.menuListData); // console.log(this.menuListData);
// console.log(this.menuTreeData); // console.log(this.menuTreeData);
// this.getMenuDict(); //弃用 // this.getMenuDict(); //弃用
} else {
this.$message.error(res.msg);
} }
}); });
}, },
......
...@@ -38,7 +38,7 @@ axios.interceptors.response.use( ...@@ -38,7 +38,7 @@ axios.interceptors.response.use(
if (response.data.code !== undefined && response.data.msg !== undefined) { if (response.data.code !== undefined && response.data.msg !== undefined) {
// 取出数据 // 取出数据
let { code, msg } = response.data; let { code, msg } = response.data;
if (code === -1) { if (code === -1 || code === 405) {
message.error({ message.error({
content: msg, content: msg,
maxCount: 1, maxCount: 1,
......
...@@ -20,11 +20,16 @@ const router = new VueRouter({ ...@@ -20,11 +20,16 @@ const router = new VueRouter({
base: process.env.BASE_URL, base: process.env.BASE_URL,
routes: routeConfig, routes: routeConfig,
}); });
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
let islogin = store.getters["user/token"]; let islogin = store.getters["user/token"];
// let routerPath = store.getters["user/routerList"];
// let toRootPathArr = to.matched.map((v) => v.path);
// let bol = hasIntersection(toRootPathArr, routerPath);
if (islogin) { if (islogin) {
next(); next();
// if (routerPath.includes(to.path) || bol) {
// next();
// }
} else { } else {
// 再次判断防止死循环 // 再次判断防止死循环
if (to.path === "/") { if (to.path === "/") {
...@@ -35,6 +40,10 @@ router.beforeEach((to, from, next) => { ...@@ -35,6 +40,10 @@ router.beforeEach((to, from, next) => {
} }
}); });
// function hasIntersection(arr1, arr2) {
// return arr1.some((item) => arr2.includes(item));
// }
router.afterEach((to, from, next) => { router.afterEach((to, from, next) => {
window.scrollTo(0, 0); window.scrollTo(0, 0);
}); });
......
...@@ -19,7 +19,7 @@ const routes = [ ...@@ -19,7 +19,7 @@ const routes = [
children: [ children: [
{ {
path: "dataAdmin", path: "dataAdmin",
redirect: "/",//升级前门户跳转重定向 redirect: "/", //升级前门户跳转重定向
}, },
{ {
path: "pickUp", path: "pickUp",
...@@ -31,7 +31,6 @@ const routes = [ ...@@ -31,7 +31,6 @@ const routes = [
), ),
meta: { title: "取件记录报表" }, meta: { title: "取件记录报表" },
children: [ children: [
{ {
path: "pickUpRecord", path: "pickUpRecord",
name: "pickUpRecord", name: "pickUpRecord",
...@@ -730,6 +729,15 @@ const routes = [ ...@@ -730,6 +729,15 @@ const routes = [
), ),
meta: { title: "角色权限管理" }, meta: { title: "角色权限管理" },
}, },
{
path: "resourceManage",
name: "resourceManage",
component: () =>
import(
/* webpackChunkName: "resourceManage" */ "@/views/thePlatformIsSet/components/permissionsModel/ResourceManage.vue"
),
meta: { title: "资源信息管理" },
},
], ],
}, },
{ {
......
...@@ -11,6 +11,7 @@ export default { ...@@ -11,6 +11,7 @@ export default {
siteName: "", // 站点名称 siteName: "", // 站点名称
siteId: "", // 站点id siteId: "", // 站点id
searForm: {}, // 报表搜索 searForm: {}, // 报表搜索
routerList: [], // 用户权限路由
}, },
getters: { getters: {
siteId: (state) => state.siteId, siteId: (state) => state.siteId,
...@@ -22,8 +23,14 @@ export default { ...@@ -22,8 +23,14 @@ export default {
let { menuList = [] } = state.userData; let { menuList = [] } = state.userData;
return menuList; return menuList;
}, },
routerList(state) {
return state.routerList;
},
}, },
mutations: { mutations: {
SET_routerList(state, routerList) {
state.routerList = [...new Set([...state.routerList, ...routerList])];
},
SET_USERDATA(state, data) { SET_USERDATA(state, data) {
state.userData = data; state.userData = data;
}, },
......
...@@ -16,13 +16,13 @@ ...@@ -16,13 +16,13 @@
> >
<span v-else>0</span>) <span v-else>0</span>)
</p> </p>
<p <a-tooltip
v-for="(v, i) in businessInfo.matterlist" v-for="(v, i) in businessInfo.matterlist"
:key="v.id" :key="v.id"
class="matter-item" :title="v"
> >
{{ i + 1 }}.{{ v.matterName }} <p class="matter-item cursor-default">{{ i + 1 }}.{{ v }}</p>
</p> </a-tooltip>
</div> </div>
<div class="take-info"> <div class="take-info">
<div class="take-info-item"> <div class="take-info-item">
...@@ -134,4 +134,4 @@ export default { ...@@ -134,4 +134,4 @@ export default {
color: #1890ff; color: #1890ff;
border-color: #1890ff; border-color: #1890ff;
} }
</style> </style>
\ No newline at end of file
...@@ -390,6 +390,7 @@ export default { ...@@ -390,6 +390,7 @@ export default {
if (res.code == 1) { if (res.code == 1) {
let { data } = res; let { data } = res;
let { business } = row; let { business } = row;
console.log(data);
this.businessName = business; this.businessName = business;
this.businessInfo = data; this.businessInfo = data;
this.analysisVisible = true; this.analysisVisible = true;
...@@ -518,5 +519,4 @@ export default { ...@@ -518,5 +519,4 @@ export default {
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped></style>
</style>
\ No newline at end of file
...@@ -76,6 +76,7 @@ ...@@ -76,6 +76,7 @@
import Swiper from "swiper"; import Swiper from "swiper";
import { censusListInterface } from "@/api/dataAdmin"; import { censusListInterface } from "@/api/dataAdmin";
import Storage from "@/utils/js/Storage"; import Storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
export default { export default {
components: {}, components: {},
data() { data() {
...@@ -138,6 +139,7 @@ export default { ...@@ -138,6 +139,7 @@ export default {
this.initSwiper(); this.initSwiper();
}, },
methods: { methods: {
...mapMutations("user", ["SET_routerList"]),
initSwiper() { initSwiper() {
this.mySwiper = new Swiper(".swiper-container", { this.mySwiper = new Swiper(".swiper-container", {
speed: 1500, speed: 1500,
...@@ -180,6 +182,7 @@ export default { ...@@ -180,6 +182,7 @@ export default {
CensusType_2: this.CensusType_2, CensusType_2: this.CensusType_2,
CensusType_3: this.CensusType_3, CensusType_3: this.CensusType_3,
}; };
this.SET_routerList(this.getReportPath(censusObj));
let key = this.findFirstNonEmpty(censusObj); let key = this.findFirstNonEmpty(censusObj);
if (key) { if (key) {
this.active = key; this.active = key;
...@@ -189,7 +192,6 @@ export default { ...@@ -189,7 +192,6 @@ export default {
this.censusList = []; this.censusList = [];
this.active = "CensusType_1"; this.active = "CensusType_1";
if (this.$route.path != "/home/dataManagement") { if (this.$route.path != "/home/dataManagement") {
console.log(1);
this.$router.push("/home/dataManagement"); this.$router.push("/home/dataManagement");
} }
} }
...@@ -203,6 +205,7 @@ export default { ...@@ -203,6 +205,7 @@ export default {
this.$router.push(this.censusList[0].censusUrl); this.$router.push(this.censusList[0].censusUrl);
} }
}, },
// 找出第一个不为空的报表类别
findFirstNonEmpty(obj) { findFirstNonEmpty(obj) {
for (let key in obj) { for (let key in obj) {
if (obj[key].length > 0) { if (obj[key].length > 0) {
...@@ -211,6 +214,13 @@ export default { ...@@ -211,6 +214,13 @@ export default {
} }
return null; return null;
}, },
// 获取报表路由
getReportPath(obj = {}) {
let arr = Object.values(obj)
.flat()
.map((v) => v.censusUrl);
return arr;
},
changeRouter(path) { changeRouter(path) {
this.$router.push(path); this.$router.push(path);
}, },
......
...@@ -326,7 +326,12 @@ export default { ...@@ -326,7 +326,12 @@ export default {
this.initSwiper(); this.initSwiper();
}, },
methods: { methods: {
...mapMutations("user", ["set_token", "SET_USERDATA", "set_siteList"]), ...mapMutations("user", [
"set_token",
"SET_USERDATA",
"set_siteList",
"SET_routerList",
]),
initSwiper() { initSwiper() {
this.mySwiper = new Swiper(".mySwiper", { this.mySwiper = new Swiper(".mySwiper", {
effect: "cube", // 方块动画 effect: "cube", // 方块动画
...@@ -377,6 +382,7 @@ export default { ...@@ -377,6 +382,7 @@ export default {
this.set_token(token); this.set_token(token);
this.SET_USERDATA(user); this.SET_USERDATA(user);
this.set_siteList(siteList); this.set_siteList(siteList);
this.SET_routerList(this.getUrl(user.menuList));
if (siteList.length) { if (siteList.length) {
storage.set(2, "siteId", siteList[0].id); storage.set(2, "siteId", siteList[0].id);
storage.set(2, "siteName", siteList[0].siteName); storage.set(2, "siteName", siteList[0].siteName);
...@@ -420,6 +426,21 @@ export default { ...@@ -420,6 +426,21 @@ export default {
} }
}); });
}, },
// 递归获取菜单url
getUrl(menus = []) {
let urls = [];
let fn = (arr) => {
arr.forEach((v) => {
urls.push(v.url);
if (v.childList && v.childList.length) {
fn(v.childList);
}
});
};
fn(menus);
return urls;
},
}, },
}; };
</script> </script>
......
...@@ -225,7 +225,7 @@ export default { ...@@ -225,7 +225,7 @@ export default {
imgPath: [ imgPath: [
//图标 //图标
{ {
required: true, //是否必选 required: false, //是否必选
message: "请选择图标", message: "请选择图标",
trigger: "change", trigger: "change",
}, },
...@@ -245,7 +245,7 @@ export default { ...@@ -245,7 +245,7 @@ export default {
remark: [ remark: [
//描述 //描述
{ {
required: true, //是否必选 required: false, //是否必选
message: "请输入描述", message: "请输入描述",
trigger: "blur", trigger: "blur",
}, },
......
...@@ -212,6 +212,7 @@ export default { ...@@ -212,6 +212,7 @@ export default {
page: this.tablePagination.current, page: this.tablePagination.current,
size: -1, size: -1,
}); });
if (res.code != 1) return;
let { data, total, dict } = res.data; let { data, total, dict } = res.data;
let { menuType } = dict; let { menuType } = dict;
this.tablePagination.total = total; this.tablePagination.total = total;
...@@ -410,4 +411,4 @@ export default { ...@@ -410,4 +411,4 @@ export default {
} }
} }
} }
</style> </style>
\ No newline at end of file
<template>
<div class="w-full">
<!-- 头部操作 -->
<div class="header_box flex justify-between items-center">
<a-space>
<a-button type="primary" class="addclass" @click="addSresource"
>新增资源</a-button
>
<a-button
v-permission="[1]"
type="primary"
class="addclass"
@click="refSresource"
>刷新资源</a-button
>
<a-button type="danger" @click="delAll">批量删除</a-button>
</a-space>
<a-space>
<a-input
v-model="searchForm.name"
style="width: 250px"
placeholder="请输入资源名称搜索"
>
<a-icon slot="prefix" type="search" />
</a-input>
<a-select
v-model="searchForm.authType"
placeholder="请选择权限类型"
style="width: 150px"
>
<a-select-option value="">全部</a-select-option>
<a-select-option
v-for="(v, key) in dict.authType"
:key="key"
:value="Number(key)"
>{{ v }}</a-select-option
>
</a-select>
<a-button type="primary" class="addclass" @click="handleSerch"
>搜索</a-button
>
<a-button @click="resetList">重置</a-button>
</a-space>
</div>
<!-- 表格 -->
<a-table
:columns="columns"
:data-source="tableSourceData"
size="small"
bordered
:scroll="{ y: 590 }"
:row-key="(record) => record.id"
:pagination="tablePagination"
@change="pagTableChange"
:loading="loading"
:row-selection="{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
>
<!-- 资源 -->
<template slot="url" slot-scope="text">
<a-tag color="blue" class="mb-[4px]" v-for="(v, i) in text" :key="i">
{{ v }}
</a-tag>
</template>
<!-- 认证类型 -->
<template slot="authType" slot-scope="text">
<a-tag> {{ dict.authType[text] }} </a-tag>
</template>
<span slot="action" slot-scope="text, record">
<a-space>
<a-button type="link" @click="handleEdit(record)">编辑</a-button>
<a-button class="delete" type="link" @click="handleDel(record.id)"
>删除</a-button
>
</a-space>
</span>
</a-table>
<!-- 新增、编辑 -->
<AddResurce
ref="AddResurce"
:title="title"
:visible.sync="visible"
:dict="dict"
@add="getResourceList"
></AddResurce>
</div>
</template>
<script>
import { getResourceList, delResource, refreshUrl } from "@/api/resource";
import AddResurce from "./components/AddResurce.vue";
export default {
components: {
AddResurce,
},
data() {
const columns = [
{
title: "序号",
width: 80,
align: "center",
customRender: (text, record, index) => {
return (
(this.tablePagination.current - 1) * this.tablePagination.pageSize +
index +
1
);
},
},
{
title: "名称",
width: 400,
dataIndex: "name",
},
{
title: "资源",
dataIndex: "url",
scopedSlots: { customRender: "url" },
},
{
title: "认证类型",
width: 200,
dataIndex: "authType",
scopedSlots: { customRender: "authType" },
},
{
title: "操作",
width: 150,
align: "center",
scopedSlots: { customRender: "action" },
},
];
return {
loading: false,
visible: false,
title: "新增资源",
columns,
searchForm: {
name: "",
authType: "",
},
dict: {}, // 字典
selectedRowKeys: [],
tableSourceData: [],
tablePagination: {
current: 1,
pageSize: 10,
total: 0,
showQuickJumper: true, //是否可以快速跳转至某页
showSizeChanger: true, //是否可以改变 pageSize
showTotal: (total, range) => `共${total}条`,
pageSizeOptions: ["10", "20", "30"],
},
};
},
created() {
this.getResourceList();
},
methods: {
// 获取列表数据
async getResourceList() {
this.loading = true;
let res = await getResourceList({
page: this.tablePagination.current,
size: this.tablePagination.pageSize,
...this.searchForm,
name: `%${this.searchForm.name}%`,
});
this.loading = false;
if (res.code !== 1) return;
let { data, dict, total } = res.data;
if (!data.length && this.tablePagination.current > 1) {
this.tablePagination.current -= 1;
this.getResourceList();
}
data.forEach((v) => {
v.url = v.url.split(",");
});
this.tableSourceData = data;
this.dict = dict;
this.tablePagination.total = total;
},
// 新增
addSresource() {
this.title = "新增资源";
this.$refs.AddResurce.onAdd();
this.visible = true;
},
// 搜索
handleSerch() {
this.tablePagination.current = 1;
this.getResourceList();
},
// 重置搜索
resetList() {
Object.assign(this.searchForm, this.$options.data().searchForm);
this.tablePagination.current = 1;
this.getResourceList();
},
// 分页
pagTableChange({ current, pageSize }) {
this.tablePagination.current = current;
this.tablePagination.pageSize = pageSize;
this.getResourceList();
},
// 编辑
handleEdit(row) {
this.title = "编辑资源";
this.$refs.AddResurce.onEdit(row);
this.visible = true;
},
// 勾选
onSelectChange(keys) {
this.selectedRowKeys = keys;
},
// 批量删除
delAll() {
if (!this.selectedRowKeys.length) {
this.$message.warning("请先勾选数据");
return;
}
let ids = this.selectedRowKeys.join(",");
this.handleDel(ids);
},
// 删除
handleDel(id) {
let _this = this;
this.$confirm({
okType: "danger",
title: "系统提示",
content: "此操作将删除该资源信息,是否继续?",
okText: "",
cancelText: "",
centered: true,
async onOk() {
let res = await delResource({
id,
});
let { code, msg } = res;
if (code == 1) {
_this.$message.success(msg);
_this.getResourceList();
}
},
});
},
// 刷新资源
async refSresource() {
let _this = this;
this.$confirm({
title: "系统提示",
content: "确定要刷新资源吗?",
okText: "",
cancelText: "",
centered: true,
async onOk() {
let res = await refreshUrl();
if (res.code == 1) {
_this.$message.success(res.msg);
_this.getResourceList();
}
},
});
},
},
};
</script>
<style lang="less" scoped>
.header_box {
padding-bottom: 1rem;
}
</style>
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
:dataSource="tableSourceData" :dataSource="tableSourceData"
> >
<template slot="operation" slot-scope="text, record, index"> <template slot="operation" slot-scope="text, record, index">
<a-button type="link" @click="apportion(record)">分配资源</a-button>
<a-button type="link" @click="pushRouter(record)">功能授权</a-button> <a-button type="link" @click="pushRouter(record)">功能授权</a-button>
<a-button type="link" @click="showRoleEditModal(true, record)" <a-button type="link" @click="showRoleEditModal(true, record)"
>编辑</a-button >编辑</a-button
...@@ -53,20 +54,30 @@ ...@@ -53,20 +54,30 @@
:roleDict="roleDict" :roleDict="roleDict"
@getRoleList="getRoleList" @getRoleList="getRoleList"
/> />
<!-- 分配权限 -->
<ApportionAuth
ref="ApportionAuth"
:visible.sync="authVisible"
></ApportionAuth>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { deepClone } from "@/utils/js/common.js";
import { roleList, roleDelete } from "@/api/authorityMis.js"; import { roleList, roleDelete } from "@/api/authorityMis.js";
import AddEditRole from "./components/addEditRole.vue"; import AddEditRole from "./components/addEditRole.vue";
import ApportionAuth from "./components/ApportionAuth.vue";
import { mapState } from "vuex"; import { mapState } from "vuex";
export default { export default {
name: "PortalAdminVueAuthorityMis", name: "PortalAdminVueAuthorityMis",
components: {
AddEditRole,
ApportionAuth,
},
data() { data() {
return { return {
searchRoleName: undefined, searchRoleName: undefined,
authVisible: false,
tableLoading: false, tableLoading: false,
tablePagination: { tablePagination: {
current: 1, current: 1,
...@@ -106,7 +117,7 @@ export default { ...@@ -106,7 +117,7 @@ export default {
{ {
title: "操作", title: "操作",
align: "center", align: "center",
width: "200px", width: "250px",
dataIndex: "operation", dataIndex: "operation",
scopedSlots: { scopedSlots: {
customRender: "operation", customRender: "operation",
...@@ -118,9 +129,7 @@ export default { ...@@ -118,9 +129,7 @@ export default {
roleDict: {}, roleDict: {},
}; };
}, },
components: {
AddEditRole,
},
computed: { computed: {
...mapState("user", ["userData"]), ...mapState("user", ["userData"]),
}, },
...@@ -196,6 +205,11 @@ export default { ...@@ -196,6 +205,11 @@ export default {
}, },
}); });
}, },
// 分配资源
apportion(row) {
this.$refs.ApportionAuth.onAdd(row.id);
this.authVisible = true;
},
}, },
}; };
</script> </script>
......
<template>
<div class="add-resurce">
<a-modal
:title="title"
:centered="true"
:visible="Visible"
@cancel="handleCancel"
width="30%"
:maskClosable="false"
>
<a-form-model
:label-col="{
span: 5,
}"
:wrapper-col="{
span: 19,
}"
ref="form"
:model="form"
:rules="rules"
>
<a-form-model-item label="资源名称" prop="name">
<a-input
placeholder="请输入资源名称"
allowClear
v-model="form.name"
/>
</a-form-model-item>
<a-form-model-item label="权限类型" prop="authType">
<a-select v-model="form.authType" placeholder="请选择权限类型">
<a-select-option
v-for="(v, key) in dict.authType"
:key="key"
:value="Number(key)"
>{{ v }}</a-select-option
>
</a-select>
</a-form-model-item>
<a-form-model-item label="链接地址">
<a-form-model-item
class="url-params"
v-for="(v, i) in form.urls"
:key="i"
:prop="`urls.${i}.value`"
:rules="[
{ required: true, validator: validatorUrl, trigger: 'blur' },
]"
>
<a-input
class="mr-[10px]"
v-model="v.value"
placeholder="请输入链接地址"
/>
<a-space>
<a-button type="primary" @click="changeParams(i, 'add')"
><a-icon type="plus"
/></a-button>
<a-button
type="danger"
v-if="i > 0"
@click="changeParams(i, 'remove')"
><a-icon type="minus"
/></a-button>
</a-space>
</a-form-model-item>
</a-form-model-item>
</a-form-model>
<template slot="footer">
<a-button @click="resetForm">重置</a-button>
<a-button type="primary" class="addclass" @click="subForm"
>确定</a-button
>
</template>
</a-modal>
</div>
</template>
<script>
import { saveResource } from "@/api/resource";
export default {
props: {
title: {
required: true,
type: String,
default: "新增资源",
},
visible: {
required: true,
type: Boolean,
default: false,
},
dict: {
required: true,
type: Object,
default: () => {},
},
},
data() {
return {
form: {
name: "",
authType: undefined,
url: "",
urls: [
{
value: "",
},
],
},
rules: {
name: [{ required: true, message: "请输入资源名称", trigger: "blur" }],
authType: [
{ required: true, message: "请输选择权限类型", trigger: "change" },
],
},
};
},
computed: {
Visible: {
get() {
return this.visible;
},
set(val) {
this.$emit("update:visible", val);
},
},
},
methods: {
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, "id");
},
onEdit(row) {
setTimeout(() => {
this.form = { ...row };
let arr = this.form.url.map((v) => {
return {
value: v,
};
});
this.$set(this.form, "urls", arr);
}, 10);
},
subForm() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveResource({
...this.form,
url: this.form.urls.map((v) => v.value).join(","),
});
let { code, msg } = res;
if (code == 1) {
this.$message.success(msg);
this.$emit("add");
this.handleCancel();
}
}
});
},
// 判断是否存在链接
isRepeat(val) {
return this.form.urls.filter((v) => v.value == val).length > 1;
},
// 校验链接地址
validatorUrl(rule, value, callback) {
if (!value) {
callback(new Error("请输入链接"));
} else if (this.isRepeat(value)) {
callback(new Error("重复的链接地址"));
} else {
callback();
}
},
changeParams(index, type) {
if (type == "add") {
let obj = {
value: "",
};
if (this.form.urls.some((v) => !v.value)) {
this.$message.warning("请先完成前面地址的填写");
return;
}
this.form.urls.splice(index + 1, 0, obj);
} else {
this.form.urls.splice(index, 1);
}
// this.$forceUpdate();
},
resetForm() {
// 重置还原表单信息内容
this.$refs.form.resetFields();
this.$set(this.form, "urls", [{ value: "" }]);
},
handleCancel() {
this.resetForm();
this.Visible = false;
},
},
};
</script>
<style lang="less" scoped>
/deep/.ant-modal-body {
max-height: 600px;
overflow-y: auto;
}
/deep/.url-params {
.ant-form-item-children {
display: flex;
align-items: center;
}
}
</style>
<template>
<div class="apportion-auth">
<a-modal
title="分配资源"
:centered="true"
:visible="Visible"
@cancel="handleCancel"
width="40%"
:maskClosable="false"
>
<div class="mb-8" v-for="(v, key) in resourceList" :key="key">
<div class="mb-2" :style="{ borderBottom: '1px solid #E9E9E9' }">
<span class="text-lg mr-2 font-bold">{{ key }}</span>
<a-checkbox
:indeterminate="v.indeterminate"
:checked="v.checkAll"
@change="onCheckAllChange($event, v)"
>
全选
</a-checkbox>
</div>
<a-checkbox-group
class="w-full"
:value="form.resourceIdList"
@change="onChange($event, v)"
>
<a-row>
<a-col :span="12" v-for="item in v.list" :key="item.id">
<a-checkbox :value="item.id">
{{ item.name }}
</a-checkbox>
</a-col>
</a-row>
</a-checkbox-group>
</div>
<template slot="footer">
<a-button @click="resetForm">重置</a-button>
<a-button type="primary" class="addclass" @click="subForm"
>确定</a-button
>
</template>
</a-modal>
</div>
</template>
<script>
import {
getRoleResourceList,
getResourceList,
distributionSource,
} from "@/api/resource";
export default {
props: {
visible: {
required: true,
type: Boolean,
default: false,
},
},
data() {
return {
form: {
resourceIdList: [],
roleId: "",
},
rules: {},
resourceList: {}, // 资源列表
userResourceList: [], // 用户资源列表
};
},
computed: {
Visible: {
get() {
return this.visible;
},
set(val) {
this.$emit("update:visible", val);
},
},
},
methods: {
// 获取资源列表
async getResourceList() {
let res = await getResourceList({
page: 1,
size: -1,
});
if (res.code == 1) {
let { data } = res.data;
this.resourceList = this.groupByAuth(data);
}
},
// 获取角色资源权限列表
async getRoleResourceList(roleId) {
let res = await getRoleResourceList({
size: -1,
page: 1,
roleId,
});
if (res.code == 1) {
let { data } = res.data;
let arr = data.filter((v) => v.resourceId);
this.form.resourceIdList = arr.map((v) => v.resourceId);
}
},
// 权限分组
groupByAuth(list) {
let group = {};
list.forEach((item) => {
let name = item.name.split("-")[0];
if (!group[name]) {
group[name] = {
indeterminate: false,
checkAll: false,
list: [],
};
}
group[name].list.push(item);
});
return group;
},
// 控制全选
onCheckAllChange(e, row) {
let rowIds = row.list.map((v) => v.id);
let checked = e.target.checked;
row.indeterminate = false;
row.checkAll = checked;
if (checked) {
this.form.resourceIdList = [
...new Set([...this.form.resourceIdList, ...rowIds]),
];
} else {
this.form.resourceIdList = this.form.resourceIdList.filter((v) => {
return !rowIds.includes(v);
});
}
},
// 控制单选
onChange(checkedList, row) {
let rowIds = row.list.map((v) => v.id);
this.form.resourceIdList = this.form.resourceIdList.filter((v) => {
return !rowIds.includes(v);
});
this.form.resourceIdList = [
...new Set([...this.form.resourceIdList, ...checkedList]),
];
row.indeterminate =
!!checkedList.length && checkedList.length < rowIds.length;
row.checkAll = checkedList.length === rowIds.length;
},
onAdd(roleId) {
Object.assign(this.form, this.$options.data().form);
this.form.roleId = roleId;
this.getResourceList();
this.getRoleResourceList(roleId);
},
async subForm() {
let res = await distributionSource(this.form);
if (res.code == 1) {
this.$message.success("添加成功");
this.handleCancel();
}
},
resetForm() {
this.form.resourceIdList = [];
Object.keys(this.resourceList).forEach((key) => {
this.resourceList[key].checkAll = false;
this.resourceList[key].indeterminate = false;
});
// 重置还原表单信息内容
// this.$refs.form.resetFields();
},
handleCancel() {
this.resetForm();
this.Visible = false;
},
},
};
</script>
<style lang="less" scoped>
/deep/.ant-modal-body {
max-height: 700px;
overflow-y: auto;
}
</style>
...@@ -133,8 +133,10 @@ export default { ...@@ -133,8 +133,10 @@ export default {
// 获取区域数据 // 获取区域数据
async getListByParentId(parentId = 0) { async getListByParentId(parentId = 0) {
let res = await getListByParentId({ parentId }); let res = await getListByParentId({ parentId });
let { data } = res.data; if (res.code == 1) {
this.treeData = data; let { data } = res.data;
this.treeData = data;
}
}, },
// 异步获取区域 // 异步获取区域
......
...@@ -169,8 +169,10 @@ export default { ...@@ -169,8 +169,10 @@ export default {
// 获取区域数据 // 获取区域数据
async getListByParentId(parentId = 0) { async getListByParentId(parentId = 0) {
let res = await getListByParentId({ parentId }); let res = await getListByParentId({ parentId });
let { data } = res.data; if (res.code == 1) {
this.treeData = data; let { data } = res.data;
this.treeData = data;
}
}, },
// 异步获取区域 // 异步获取区域
......
...@@ -62,6 +62,7 @@ export default { ...@@ -62,6 +62,7 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
@headerH: 4.5rem; @headerH: 4.5rem;
.Container { .Container {
width: 100%;
height: 100% !important; height: 100% !important;
// background: #fac; // background: #fac;
background: #f5f5f5; background: #f5f5f5;
...@@ -146,4 +147,4 @@ export default { ...@@ -146,4 +147,4 @@ export default {
// } // }
} }
} }
</style> </style>
\ No newline at end of file
...@@ -193,11 +193,6 @@ ...@@ -193,11 +193,6 @@
<artifactId>knife4j-spring-boot-starter</artifactId> <artifactId>knife4j-spring-boot-starter</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>
<!--Token生成与解析--> <!--Token生成与解析-->
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>
......
...@@ -4,13 +4,20 @@ import com.alibaba.druid.support.http.ResourceServlet; ...@@ -4,13 +4,20 @@ import com.alibaba.druid.support.http.ResourceServlet;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.service.IAuthTokenService; import com.mortals.framework.service.IAuthTokenService;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.framework.util.AESUtil; import com.mortals.framework.util.AESUtil;
import com.mortals.framework.utils.ServletUtils; import com.mortals.framework.utils.ServletUtils;
import com.mortals.framework.web.interceptor.BaseInterceptor; import com.mortals.framework.web.interceptor.BaseInterceptor;
import com.mortals.xhx.base.framework.config.InterceptorConfig; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.ParameterResolutionDelegate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.method.HandlerMethod; import org.springframework.web.method.HandlerMethod;
...@@ -19,6 +26,7 @@ import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; ...@@ -19,6 +26,7 @@ import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Set;
/** /**
* 用户权限验证,基于token * 用户权限验证,基于token
...@@ -33,6 +41,12 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -33,6 +41,12 @@ public class AuthUserInterceptor extends BaseInterceptor {
private InterceptorConfig config; private InterceptorConfig config;
@Autowired @Autowired
private IAuthTokenService authTokenService; private IAuthTokenService authTokenService;
@Autowired
private ICacheService cacheService;
@Autowired
private ResourceService resourceService;
@Autowired
private UserService userService;
@Override @Override
public int getOrder() { public int getOrder() {
...@@ -44,7 +58,7 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -44,7 +58,7 @@ public class AuthUserInterceptor extends BaseInterceptor {
throws Exception { throws Exception {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
try { try {
if(handler instanceof HandlerMethod){ if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler; HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod(); Method method = handlerMethod.getMethod();
UnAuth annotation = method.getAnnotation(UnAuth.class); UnAuth annotation = method.getAnnotation(UnAuth.class);
...@@ -52,7 +66,7 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -52,7 +66,7 @@ public class AuthUserInterceptor extends BaseInterceptor {
//取消校验 //取消校验
return true; return true;
} }
}else if(handler instanceof ResourceHttpRequestHandler){ } else if (handler instanceof ResourceHttpRequestHandler) {
return true; return true;
} }
String uri = request.getServletPath(); String uri = request.getServletPath();
...@@ -63,15 +77,16 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -63,15 +77,16 @@ public class AuthUserInterceptor extends BaseInterceptor {
if (!auth) { if (!auth) {
//不存在时候 如果是管理员也不做拦截 //不存在时候 如果是管理员也不做拦截
IUser loginUser = authTokenService.getLoginUser(request); IUser loginUser = authTokenService.getLoginUser(request);
if(ObjectUtils.isEmpty(loginUser)){ if (ObjectUtils.isEmpty(loginUser)) {
ret.put("code", 401); ret.put("code", 401);
ret.put("msg", "用户未登录或登录失效,请重新登录"); ret.put("msg", "用户未登录或登录失效,请重新登录");
ServletUtils.renderString(response, JSONObject.toJSONString(ret)); ServletUtils.renderString(response, JSONObject.toJSONString(ret));
return false; return false;
}else if(loginUser.isAdmin()||loginUser.getUserType()==1){ // }else if(loginUser.isAdmin()||loginUser.getUserType()==1){
} else if (loginUser.isAdmin()) {
return super.preHandle(request, response, handler); return super.preHandle(request, response, handler);
} else { } else {
ret.put("code", -1); ret.put("code", 405);
ret.put("msg", "用户无该操作权限!"); ret.put("msg", "用户无该操作权限!");
ServletUtils.renderString(response, JSONObject.toJSONString(ret)); ServletUtils.renderString(response, JSONObject.toJSONString(ret));
return false; return false;
...@@ -79,7 +94,7 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -79,7 +94,7 @@ public class AuthUserInterceptor extends BaseInterceptor {
} }
} }
} catch (Exception e) { } catch (Exception e) {
log.error("权限校验拦截请求处理异常-->" + e.getMessage(),e); log.error("权限校验拦截请求处理异常-->" + e.getMessage(), e);
writeJsonResponse(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "用户权限校验异常"); writeJsonResponse(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "用户权限校验异常");
return false; return false;
} }
...@@ -91,7 +106,17 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -91,7 +106,17 @@ public class AuthUserInterceptor extends BaseInterceptor {
int code = requestUrl.hashCode() & (Integer.MAX_VALUE - 1); int code = requestUrl.hashCode() & (Integer.MAX_VALUE - 1);
IUser loginUser = authTokenService.getLoginUser(request); IUser loginUser = authTokenService.getLoginUser(request);
if (ObjectUtils.isEmpty(loginUser)) return false; 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; if (ObjectUtils.isEmpty(menuUrl)) return false;
menuUrl = AESUtil.decrypt(menuUrl, securityKey); menuUrl = AESUtil.decrypt(menuUrl, securityKey);
String codes = "," + menuUrl + ","; String codes = "," + menuUrl + ",";
...@@ -103,5 +128,4 @@ public class AuthUserInterceptor extends BaseInterceptor { ...@@ -103,5 +128,4 @@ public class AuthUserInterceptor extends BaseInterceptor {
} }
} }
...@@ -113,7 +113,175 @@ public class AuthTokenServiceImpl implements IAuthTokenService { ...@@ -113,7 +113,175 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), menuUrlCode); cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), menuUrlCode);
} }
userEntity.setMenuUrl(menuUrlCode); userEntity.setMenuUrl(menuUrlCode);
return userEntity; 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)) { /* if (StringUtils.isNotEmpty(userStr)) {
JSONObject userObj = JSON.parseObject(userStr); JSONObject userObj = JSON.parseObject(userStr);
Long userId = userObj.getLongValue("id"); Long userId = userObj.getLongValue("id");
...@@ -313,7 +481,7 @@ public class AuthTokenServiceImpl implements IAuthTokenService { ...@@ -313,7 +481,7 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
*/ */
public void refreshToken(IUser user) { public void refreshToken(IUser user) {
//user.setLoginTime(System.currentTimeMillis()); //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缓存 // 根据uuid将user缓存
String userKey = getTokenKey(user.getToken()); String userKey = getTokenKey(user.getToken());
//设置有效时间 单位秒 //设置有效时间 单位秒
......
...@@ -6,14 +6,18 @@ import com.alibaba.fastjson.JSONArray; ...@@ -6,14 +6,18 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.IAuthTokenService; import com.mortals.framework.service.IAuthTokenService;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.framework.util.DateUtils; import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.base.system.valid.service.ValidCodeService; import com.mortals.xhx.base.system.valid.service.ValidCodeService;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.pdu.SitePdu; import com.mortals.xhx.common.pdu.SitePdu;
import com.mortals.xhx.common.utils.LoginAESUtil; import com.mortals.xhx.common.utils.LoginAESUtil;
import com.mortals.xhx.common.utils.MenuEncodeUtil;
import com.mortals.xhx.feign.model.IApiModelFeign; import com.mortals.xhx.feign.model.IApiModelFeign;
import com.mortals.xhx.feign.rsp.ApiResp; import com.mortals.xhx.feign.rsp.ApiResp;
import com.mortals.xhx.module.menu.model.MenuEntity; import com.mortals.xhx.module.menu.model.MenuEntity;
...@@ -22,6 +26,7 @@ import com.mortals.xhx.module.user.model.UserEntity; ...@@ -22,6 +26,7 @@ import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.service.UserService; import com.mortals.xhx.module.user.service.UserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -43,9 +48,13 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -43,9 +48,13 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
private IApiModelFeign apiModelFeign; private IApiModelFeign apiModelFeign;
@Autowired @Autowired
private ValidCodeService validCodeService; private ValidCodeService validCodeService;
@Autowired
private ICacheService cacheService;
@Autowired
private ResourceService resourceService;
private static final String AES_KEY = "0000000671595991"; private static final String AES_KEY = "0000000671595991";
private static final String AES_IV = "tdrdadq59tbss5n7"; private static final String AES_IV = "tdrdadq59tbss5n7";
@RequestMapping("login") @RequestMapping("login")
public String login(@RequestBody LoginForm loginForm) throws Exception { public String login(@RequestBody LoginForm loginForm) throws Exception {
...@@ -59,15 +68,15 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -59,15 +68,15 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
ret.put(KEY_RESULT_MSG, "未获取到用户信息,请重新登录"); ret.put(KEY_RESULT_MSG, "未获取到用户信息,请重新登录");
return ret.toJSONString(); return ret.toJSONString();
} }
if(loginForm.getType()!=null&&loginForm.getType()==2){ if (loginForm.getType() != null && loginForm.getType() == 2) {
loginName = LoginAESUtil.decrypt(loginName,AES_KEY,AES_IV,LoginAESUtil.AES_CBC); loginName = LoginAESUtil.decrypt(loginName, AES_KEY, AES_IV, LoginAESUtil.AES_CBC);
password = LoginAESUtil.decrypt(password,AES_KEY,AES_IV,LoginAESUtil.AES_CBC); password = LoginAESUtil.decrypt(password, AES_KEY, AES_IV, LoginAESUtil.AES_CBC);
} }
UserEntity userEntity = null; UserEntity userEntity = null;
try { try {
loginForm.validate(); loginForm.validate();
boolean validCode = validCodeService.doCheckImageValidCode(loginForm.getMark(),super.getRequestIP(request),loginForm.getSecurityCode()); boolean validCode = validCodeService.doCheckImageValidCode(loginForm.getMark(), super.getRequestIP(request), loginForm.getSecurityCode());
if(!validCode){ if (!validCode) {
throw new AppException("验证码错误"); throw new AppException("验证码错误");
} }
userEntity = userService.userdoLogin(loginName, password, ip); userEntity = userService.userdoLogin(loginName, password, ip);
...@@ -82,15 +91,23 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -82,15 +91,23 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity); List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity);
userEntity.setMenuList(menuList); userEntity.setMenuList(menuList);
data.put("user", userEntity); data.put("user", userEntity);
if(userEntity.getId()==1 && StringUtils.isEmpty(userEntity.getAreaCodes())){ Set<String> urls = new HashSet<>();
String menuUrl = cacheService.hget(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), String.class);
if (ObjectUtils.isEmpty(menuUrl)) {
urls = resourceService.findUrlSetByUserId(userEntity.getId());
menuUrl = MenuEncodeUtil.generateMenuUrlCode(urls);
cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), menuUrl);
}
data.put("urls", urls);
if (userEntity.getId() == 1 && StringUtils.isEmpty(userEntity.getAreaCodes())) {
JSONArray siteList = new JSONArray(); JSONArray siteList = new JSONArray();
JSONObject siteObject = new JSONObject(); JSONObject siteObject = new JSONObject();
siteObject.put("id",0); siteObject.put("id", 0);
siteObject.put("siteName","无站点"); siteObject.put("siteName", "无站点");
siteList.add(siteObject); siteList.add(siteObject);
data.put("siteList", siteList); data.put("siteList", siteList);
}else { } else {
if(StringUtils.isNotEmpty(userEntity.getAreaCodes())){ if (StringUtils.isNotEmpty(userEntity.getAreaCodes())) {
SitePdu sitePdu = new SitePdu(); SitePdu sitePdu = new SitePdu();
List<String> areaCodeList = Arrays.asList(userEntity.getAreaCodes().split(",")); List<String> areaCodeList = Arrays.asList(userEntity.getAreaCodes().split(","));
sitePdu.setAreaCodeList(areaCodeList); sitePdu.setAreaCodeList(areaCodeList);
...@@ -99,12 +116,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -99,12 +116,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
if (apiResp.getCode() != YesNoEnum.YES.getValue()) { if (apiResp.getCode() != YesNoEnum.YES.getValue()) {
throw new AppException("获取用户站点列表树数据失败:" + apiResp.getMsg()); throw new AppException("获取用户站点列表树数据失败:" + apiResp.getMsg());
} }
if(apiResp.getData().get("data")!=null) { if (apiResp.getData().get("data") != null) {
data.put("siteList", apiResp.getData().get("data")); data.put("siteList", apiResp.getData().get("data"));
}else { } else {
data.put("siteList", Collections.emptyList()); data.put("siteList", Collections.emptyList());
} }
}else { } else {
data.put("siteList", Collections.emptyList()); data.put("siteList", Collections.emptyList());
} }
} }
...@@ -120,9 +137,9 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -120,9 +137,9 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
return ret.toJSONString(); return ret.toJSONString();
} catch (Exception e) { } catch (Exception e) {
log.error("login error ", e); log.error("login error ", e);
if(e instanceof AppException){ if (e instanceof AppException) {
ret.put(KEY_RESULT_CODE, ((AppException) e).getCode()); ret.put(KEY_RESULT_CODE, ((AppException) e).getCode());
}else { } else {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE); ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
} }
ret.put(KEY_RESULT_MSG, super.convertException(e)); ret.put(KEY_RESULT_MSG, super.convertException(e));
...@@ -143,6 +160,7 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -143,6 +160,7 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
@RequestMapping("index") @RequestMapping("index")
public String index() throws Exception { public String index() throws Exception {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
JSONObject data = new JSONObject();
IUser user = this.getCurUser(); IUser user = this.getCurUser();
if (user == null) { if (user == null) {
return ""; return "";
...@@ -150,7 +168,14 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -150,7 +168,14 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
UserEntity userEntity = userService.get(user.getId()); UserEntity userEntity = userService.get(user.getId());
List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity); List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity);
userEntity.setMenuList(menuList); userEntity.setMenuList(menuList);
JSONObject data = new JSONObject(); Set<String> urls = new HashSet<>();
String menuUrl = cacheService.hget(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), String.class);
if (ObjectUtils.isEmpty(menuUrl)) {
urls = resourceService.findUrlSetByUserId(userEntity.getId());
menuUrl = MenuEncodeUtil.generateMenuUrlCode(urls);
cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), menuUrl);
}
data.put("urls", urls);
data.put("user", userEntity); data.put("user", userEntity);
ret.put(KEY_RESULT_DATA, data); ret.put(KEY_RESULT_DATA, data);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
......
...@@ -9,7 +9,9 @@ ...@@ -9,7 +9,9 @@
package com.mortals.xhx.base.system.resource.service; package com.mortals.xhx.base.system.resource.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.model.ResourceEntity;
...@@ -63,4 +65,8 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> { ...@@ -63,4 +65,8 @@ public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
* @param userType * @param userType
*/ */
List<ResourceEntity> findAll(int userType); List<ResourceEntity> findAll(int userType);
Rest<String> refreshResourceUrl(String packageName, Context context);
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
package com.mortals.xhx.base.system.resource.service.impl; 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.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
...@@ -19,6 +20,7 @@ import com.mortals.xhx.base.system.resource.model.ResourceEntity; ...@@ -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.model.ResourceQuery;
import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.resource.service.ResourceService;
import com.mortals.xhx.common.key.RedisKey; 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.RoleAuthEntity;
import com.mortals.xhx.module.role.model.RoleAuthQuery; import com.mortals.xhx.module.role.model.RoleAuthQuery;
import com.mortals.xhx.module.role.service.RoleAuthService; import com.mortals.xhx.module.role.service.RoleAuthService;
...@@ -26,10 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -26,10 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.Arrays; import java.util.*;
import java.util.HashSet; import java.util.stream.Collectors;
import java.util.List;
import java.util.Set;
import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode; import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode;
...@@ -51,7 +51,6 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re ...@@ -51,7 +51,6 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
@Autowired @Autowired
private RoleAuthService roleAuthService; private RoleAuthService roleAuthService;
@Override @Override
public List<ResourceEntity> findAllEnable() throws AppException { public List<ResourceEntity> findAllEnable() throws AppException {
ResourceQuery params = new ResourceQuery(); ResourceQuery params = new ResourceQuery();
...@@ -72,7 +71,14 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re ...@@ -72,7 +71,14 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
@Override @Override
public Set<String> findUrlSetByUserId(Long userId) throws AppException { public Set<String> findUrlSetByUserId(Long userId) throws AppException {
Set<String> urls = new HashSet<>(); Set<String> urls = new HashSet<>();
List<ResourceEntity> resList = this.findListByUserId(userId); List<ResourceEntity> resList = new ArrayList<>();
if (1L == userId) {
//管理员
resList = this.find(new ResourceQuery());
} else {
resList = this.findListByUserId(userId);
}
for (ResourceEntity res : resList) { for (ResourceEntity res : resList) {
String url = res.getUrl(); String url = res.getUrl();
if (StringUtils.isEmpty(url)) { if (StringUtils.isEmpty(url)) {
...@@ -89,6 +95,74 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re ...@@ -89,6 +95,74 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
return dao.getAll(userType); 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 @Override
protected void updateAfter(ResourceEntity entity, Context context) throws AppException { protected void updateAfter(ResourceEntity entity, Context context) throws AppException {
...@@ -115,12 +189,14 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re ...@@ -115,12 +189,14 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re
} }
private void updateUserMenuUrlCache() { private void updateUserMenuUrlCache() {
//更新用户菜单
cacheService.del(RedisKey.KEY_USER_MENU_CACHE);
/* //更新用户菜单
Set<String> hkeys = cacheService.hkeys(RedisKey.KEY_USER_MENU_CACHE); Set<String> hkeys = cacheService.hkeys(RedisKey.KEY_USER_MENU_CACHE);
for (String userId : hkeys) { for (String userId : hkeys) {
Set<String> urls = this.findUrlSetByUserId(DataUtil.converStr2Long(userId, 0L)); Set<String> urls = this.findUrlSetByUserId(DataUtil.converStr2Long(userId, 0L));
String menuUrlCode = generateMenuUrlCode(urls); String menuUrlCode = generateMenuUrlCode(urls);
cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userId, menuUrlCode); 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; ...@@ -2,8 +2,11 @@ package com.mortals.xhx.base.system.resource.web;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.IBaseEnum; import com.mortals.framework.common.IBaseEnum;
import com.mortals.framework.common.Rest;
import com.mortals.framework.common.code.UserType; import com.mortals.framework.common.code.UserType;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.model.ResourceEntity;
...@@ -13,6 +16,7 @@ import com.mortals.xhx.common.code.SourceType; ...@@ -13,6 +16,7 @@ import com.mortals.xhx.common.code.SourceType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.HashMap;
...@@ -27,37 +31,63 @@ import java.util.Map; ...@@ -27,37 +31,63 @@ import java.util.Map;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("resource") @RequestMapping("resource")
public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService,ResourceEntity,Long> { public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService, ResourceEntity, Long> {
public ResourceController(){ public ResourceController() {
super.setModuleDesc("资源信息"); super.setModuleDesc("资源信息");
} }
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
Map<String, Object> statsus = new HashMap<String, Object>(); Map<String, Object> statsus = new HashMap<String, Object>();
statsus.put("authType", AuthType.getEnumMap()); statsus.put("authType", AuthType.getEnumMap());
statsus.put("sourceType", SourceType.getEnumMap()); statsus.put("sourceType", SourceType.getEnumMap());
if (getCurUser().isAdmin()) { if (getCurUser().isAdmin()) {
statsus.put("userType", IBaseEnum.getEnumMap(UserType.class)); statsus.put("userType", IBaseEnum.getEnumMap(UserType.class));
} else { } else {
statsus.put("userType", UserType.findByValue(getCurUser().getUserType())); statsus.put("userType", UserType.findByValue(getCurUser().getUserType()));
} }
model.put(KEY_RESULT_DICT, statsus); model.put(KEY_RESULT_DICT, statsus);
} }
/** /**
* 获取所有资源 * 获取所有资源
* *
* @return * @return
*/ */
@PostMapping("allResources") @PostMapping("allResources")
public String allResources(int userType) { public String allResources(int userType) {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "所有的customer以及user"); ret.put(KEY_RESULT_MSG, "所有的customer以及user");
ret.put(KEY_RESULT_DATA, service.findAll(userType)); ret.put(KEY_RESULT_DATA, service.findAll(userType));
return ret.toJSONString(); 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; ...@@ -2,8 +2,10 @@ package com.mortals.xhx.common.utils;
import com.mortals.xhx.feign.area.IApiAreaFeign; import com.mortals.xhx.feign.area.IApiAreaFeign;
import com.mortals.xhx.feign.device.IDeviceFeign; 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.ISkinFillFeign;
import com.mortals.xhx.feign.skin.ISkinSampleFeign; import com.mortals.xhx.feign.skin.ISkinSampleFeign;
import com.mortals.xhx.feign.smartoffice.ISmartSystemFeign;
import com.mortals.xhx.utils.SpringUtils; import com.mortals.xhx.utils.SpringUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -16,25 +18,26 @@ import lombok.extern.slf4j.Slf4j; ...@@ -16,25 +18,26 @@ import lombok.extern.slf4j.Slf4j;
* @description: * @description:
**/ **/
@Slf4j @Slf4j
@AllArgsConstructor
public class SendSubSystemTask implements Runnable { public class SendSubSystemTask implements Runnable {
private IApiAreaFeign apiAreaFeign; private IApiAreaFeign apiAreaFeign;
private IDeviceFeign deviceFeign; private IDeviceFeign deviceFeign;
private ISkinSampleFeign skinSampleFeign; private ISkinSampleFeign skinSampleFeign;
private ISkinFillFeign skinFillFeign; private ISkinFillFeign skinFillFeign;
private ISelfSystemFeign selfSystemFeign;
private ISmartSystemFeign smartSystemFeign;
public SendSubSystemTask() { public SendSubSystemTask() {
apiAreaFeign= SpringUtils.getBean(IApiAreaFeign.class); apiAreaFeign = SpringUtils.getBean(IApiAreaFeign.class);
deviceFeign= SpringUtils.getBean(IDeviceFeign.class); deviceFeign = SpringUtils.getBean(IDeviceFeign.class);
skinSampleFeign= SpringUtils.getBean(ISkinSampleFeign.class); skinSampleFeign = SpringUtils.getBean(ISkinSampleFeign.class);
skinFillFeign= SpringUtils.getBean(ISkinFillFeign.class); skinFillFeign = SpringUtils.getBean(ISkinFillFeign.class);
selfSystemFeign = SpringUtils.getBean(ISelfSystemFeign.class);
smartSystemFeign = SpringUtils.getBean(ISmartSystemFeign.class);
} }
@Override @Override
public void run() { public void run() {
String resp = null;
try { try {
Thread.sleep(2000); Thread.sleep(2000);
apiAreaFeign.refreshUser(); apiAreaFeign.refreshUser();
...@@ -44,9 +47,12 @@ public class SendSubSystemTask implements Runnable { ...@@ -44,9 +47,12 @@ public class SendSubSystemTask implements Runnable {
skinSampleFeign.refreshUser(); skinSampleFeign.refreshUser();
Thread.sleep(2000); Thread.sleep(2000);
skinFillFeign.refreshUser(); skinFillFeign.refreshUser();
Thread.sleep(2000);
selfSystemFeign.refreshUser();
Thread.sleep(2000);
smartSystemFeign.refreshUser();
} catch (Exception e) { } catch (Exception e) {
log.error("通知异常:", e);
log.error("异常:", e);
} }
} }
} }
...@@ -29,8 +29,6 @@ public class AreaController extends BaseCRUDJsonBodyMappingController<AreaServic ...@@ -29,8 +29,6 @@ public class AreaController extends BaseCRUDJsonBodyMappingController<AreaServic
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private IAuthTokenService authTokenService;
public AreaController() { public AreaController() {
super.setModuleDesc("区域"); super.setModuleDesc("区域");
......
...@@ -24,7 +24,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -24,7 +24,7 @@ import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*; import static com.mortals.framework.ap.SysConstains.*;
/** /**
* *
* 产品接口 * 产品接口日志
* *
* @author zxfei * @author zxfei
* @date 2023-07-18 * @date 2023-07-18
...@@ -35,7 +35,7 @@ public class ProductInterfaceLogController extends BaseCRUDJsonBodyMappingContro ...@@ -35,7 +35,7 @@ public class ProductInterfaceLogController extends BaseCRUDJsonBodyMappingContro
public ProductInterfaceLogController(){ public ProductInterfaceLogController(){
super.setModuleDesc( "产品接口"); super.setModuleDesc( "产品接口日志");
} }
@Override @Override
......
package com.mortals.xhx.module.role.service.impl; package com.mortals.xhx.module.role.service.impl;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.module.menu.model.MenuEntity; import com.mortals.xhx.module.menu.model.MenuEntity;
import com.mortals.xhx.module.menu.model.MenuQuery; import com.mortals.xhx.module.menu.model.MenuQuery;
import com.mortals.xhx.module.menu.service.MenuService; import com.mortals.xhx.module.menu.service.MenuService;
...@@ -28,6 +30,8 @@ public class RoleAuthServiceImpl extends AbstractCRUDServiceImpl<RoleAuthDao, Ro ...@@ -28,6 +30,8 @@ public class RoleAuthServiceImpl extends AbstractCRUDServiceImpl<RoleAuthDao, Ro
private RoleModelService roleModelService; private RoleModelService roleModelService;
@Autowired @Autowired
private RoleUserService roleUserService; private RoleUserService roleUserService;
@Autowired
private ICacheService cacheService;
@Override @Override
...@@ -47,6 +51,8 @@ public class RoleAuthServiceImpl extends AbstractCRUDServiceImpl<RoleAuthDao, Ro ...@@ -47,6 +51,8 @@ public class RoleAuthServiceImpl extends AbstractCRUDServiceImpl<RoleAuthDao, Ro
list.add(entity); list.add(entity);
} }
this.dao.insertBatch(list); this.dao.insertBatch(list);
cacheService.del(RedisKey.KEY_USER_MENU_CACHE);
} }
......
...@@ -111,6 +111,12 @@ public class UserEntity extends UserVo implements IUser { ...@@ -111,6 +111,12 @@ public class UserEntity extends UserVo implements IUser {
*/ */
private Date lockTime; private Date lockTime;
/**
* 菜单栏
*/
private String menuUrl;
public UserEntity(){} public UserEntity(){}
/** /**
...@@ -250,11 +256,20 @@ public class UserEntity extends UserVo implements IUser { ...@@ -250,11 +256,20 @@ public class UserEntity extends UserVo implements IUser {
return userType; return userType;
} }
public void setMenuUrl(String menuUrl) {
this.menuUrl = menuUrl;
}
/**
* @return
*/
@Override @Override
public String getMenuUrl() { public String getMenuUrl() {
return null; return menuUrl ;
} }
/** /**
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员) * 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType * @param userType
......
...@@ -12,4 +12,10 @@ public class UserEntityExt extends UserEntity { ...@@ -12,4 +12,10 @@ public class UserEntityExt extends UserEntity {
private List<String> areaCodeList; private List<String> areaCodeList;
/**
* 菜单栏
*/
private String menuUrl;
} }
...@@ -57,10 +57,6 @@ public class UserVo extends BaseEntityLong { ...@@ -57,10 +57,6 @@ public class UserVo extends BaseEntityLong {
private String oldPwd; private String oldPwd;
private String newPwd; private String newPwd;
/**
* 菜单栏
*/
private String menuUrl;
public static void main(String[] args) { public static void main(String[] args) {
......
...@@ -191,6 +191,17 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE ...@@ -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) { public UserEntity findByLoginName(String loginName) {
UserQuery params = new UserQuery(); UserQuery params = new UserQuery();
......
...@@ -21,7 +21,6 @@ import com.mortals.xhx.module.role.service.RoleUserService; ...@@ -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.UserEntity;
import com.mortals.xhx.module.user.model.UserEntityExt; import com.mortals.xhx.module.user.model.UserEntityExt;
import com.mortals.xhx.module.user.service.UserService; import com.mortals.xhx.module.user.service.UserService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -40,8 +39,6 @@ import static com.mortals.framework.ap.SysConstains.MESSAGE_INFO; ...@@ -40,8 +39,6 @@ import static com.mortals.framework.ap.SysConstains.MESSAGE_INFO;
* @author zxfei * @author zxfei
* @date 2022-05-25 * @date 2022-05-25
*/ */
@Api(value = "用户信息控制器", tags = {"用户信息管理"})
@RestController @RestController
@RequestMapping("user") @RequestMapping("user")
public class UserController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> { public class UserController extends BaseCRUDJsonBodyMappingController<UserService, UserEntity, Long> {
...@@ -276,7 +273,7 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -276,7 +273,7 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
} catch (Exception e) { } catch (Exception e) {
code = -1; code = -1;
this.doException(this.request, busiDesc, model, e); this.doException(this.request, busiDesc, model, e);
} }
ret.setCode(code); ret.setCode(code);
ret.setData(model); ret.setData(model);
......
...@@ -53,7 +53,7 @@ public class UserModelCollectController extends BaseCRUDJsonBodyMappingControlle ...@@ -53,7 +53,7 @@ public class UserModelCollectController extends BaseCRUDJsonBodyMappingControlle
} }
@PostMapping({"get"}) @PostMapping("get")
public String getCollect(@RequestBody UserModelCollectEntity query) { public String getCollect(@RequestBody UserModelCollectEntity query) {
Map<String, Object> model = new HashMap(); Map<String, Object> model = new HashMap();
......
###角色信息列表 ###角色信息列表
POST {{baseUrl}}/role/list POST {{baseUrl}}/role/list
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
......
...@@ -41,6 +41,12 @@ Content-Type: application/json ...@@ -41,6 +41,12 @@ Content-Type: application/json
{} {}
###controoler 测试
POST {{baseUrl}}/resource/refreshUrl
Accept: application/json
......
...@@ -31,7 +31,6 @@ Content-Type: application/json ...@@ -31,7 +31,6 @@ Content-Type: application/json
{ {
"page":1, "page":1,
"size":10 "size":10
} }
......
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