Browse Source

chore: cas sso model business change

master
wangxiang 2 years ago
parent
commit
225826cbc1
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 6
      kicc-auth/src/main/java/com/cloud/kicc/auth/config/AuthorizationServerConfiguration.java
  2. 5
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java
  3. 3
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CommonEntity.java
  4. 4
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java
  5. 2
      kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/dynamic/DynamicDataSource.java
  6. 6
      kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/dynamic/DynamicDataSourceJdbcProvider.java
  7. 2
      kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/support/DynamicDataSourceConstant.java
  8. 2
      kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/util/ConnUtil.java
  9. 4
      kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/util/DynamicDataSourceUtil.java
  10. 7
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/jackson2/ExUserDeserializer.java
  11. 48
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java
  12. 4
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java
  13. 6
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java
  14. 69
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/util/SecurityUtils.java
  15. 2
      kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java
  16. 6
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java
  17. 118
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/User.java
  18. 9
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteUserService.java
  19. 62
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/vo/UserVo.java
  20. 6
      kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/constant/SqlConstants.java
  21. 8
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskController.java
  22. 8
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskPresetController.java
  23. 7
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushBlacklistController.java
  24. 3
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushBlacklistMapper.java
  25. 3
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushBlacklistService.java
  26. 12
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/MapLogisticServiceImpl.java
  27. 6
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushBlacklistServiceImpl.java
  28. 62
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushBlacklistMapper.xml
  29. 92
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml
  30. 17
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java
  31. 13
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java
  32. 9
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/TenantController.java
  33. 112
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  34. 33
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/UserMapper.java
  35. 8
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java
  36. 41
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java
  37. 11
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java
  38. 32
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java
  39. 84
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java
  40. 225
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/UserMapper.xml

6
kicc-auth/src/main/java/com/cloud/kicc/auth/config/AuthorizationServerConfiguration.java

@ -1,12 +1,11 @@ @@ -1,12 +1,11 @@
package com.cloud.kicc.auth.config;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.data.entity.CasUser;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.grant.app.ResourceOwnerCustomeAppTokenGranter;
import com.cloud.kicc.common.security.override.KiccClientDetailsService;
import com.cloud.kicc.common.security.override.KiccCustomTokenServices;
import com.cloud.kicc.common.security.override.KiccWebResponseExceptionTranslator;
import com.cloud.kicc.common.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.context.annotation.Bean;
@ -104,8 +103,7 @@ public class AuthorizationServerConfiguration extends AuthorizationServerConfigu @@ -104,8 +103,7 @@ public class AuthorizationServerConfiguration extends AuthorizationServerConfigu
return accessToken;
}
KiccUser kiccUser = (KiccUser) authentication.getUserAuthentication().getPrincipal();
additionalInfo.put(SecurityConstants.DETAILS_USER, kiccUser);
additionalInfo.put(SecurityConstants.DETAILS_USER, SecurityUtils.getCasUser());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
return accessToken;
};

5
kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CasUser.java

@ -74,6 +74,9 @@ public class CasUser extends User { @@ -74,6 +74,9 @@ public class CasUser extends User {
/** 备注 */
private String remarks;
/** 角色ID */
private String roleId;
/** 多租户ID */
private String tenantId;
@ -111,6 +114,7 @@ public class CasUser extends User { @@ -111,6 +114,7 @@ public class CasUser extends User {
String updateByName,
LocalDateTime updateTime,
String remarks,
String roleId,
String tenantId) {
super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
this.id = id;
@ -128,6 +132,7 @@ public class CasUser extends User { @@ -128,6 +132,7 @@ public class CasUser extends User {
this.updateByName = updateByName;
this.updateTime = updateTime;
this.remarks = remarks;
this.roleId = roleId;
this.tenantId = tenantId;
}

3
kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/CommonEntity.java

@ -7,9 +7,9 @@ import com.fasterxml.jackson.annotation.JsonFormat; @@ -7,9 +7,9 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.Date;
/**
*<p>
@ -20,6 +20,7 @@ import java.util.Date; @@ -20,6 +20,7 @@ import java.util.Date;
* @Date: 2021/12/28
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommonEntity extends BaseEntity {
private static final long serialVersionUID = 1L;

4
kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java

@ -28,14 +28,14 @@ public class KiccUser extends CasUser { @@ -28,14 +28,14 @@ public class KiccUser extends CasUser {
private String userType;
/** 扩展用户权限 */
private Set<String> exPermissions;
private String[] exPermissions;
public KiccUser(String username,
String password,
Collection<? extends GrantedAuthority> authorities,
String deptId,
String userType,
Set<String> exPermissions) {
String[] exPermissions) {
super(username, password, authorities);
this.deptId = deptId;
this.userType = userType;

2
kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/dynamic/DynamicDataSource.java

@ -10,7 +10,7 @@ import lombok.experimental.Accessors; @@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
*</p>
*
* @Author: wangxiang4
* @since: 2023/7/3
* @Since: 2023/7/3
*/
@Data
@Accessors(chain = true)

6
kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/dynamic/DynamicDataSourceJdbcProvider.java

@ -19,7 +19,7 @@ import java.util.Map; @@ -19,7 +19,7 @@ import java.util.Map;
*</p>
*
* @Author: wangxiang4
* @since: 2023/7/3
* @Since: 2023/7/3
*/
public class DynamicDataSourceJdbcProvider extends AbstractJdbcDataSourceProvider {
@ -55,7 +55,7 @@ public class DynamicDataSourceJdbcProvider extends AbstractJdbcDataSourceProvide @@ -55,7 +55,7 @@ public class DynamicDataSourceJdbcProvider extends AbstractJdbcDataSourceProvide
map.put(dynamicDataSourceProperties.getPrimary(), masterProperty);
// 构建yml数据源
Map<String, DataSourceProperty> datasource = dynamicDataSourceProperties.getDatasource();
if (datasource.size() > 0) {
if (!datasource.isEmpty()) {
datasource.remove(dynamicDataSourceProperties.getPrimary());
map.putAll(datasource);
}
@ -79,7 +79,7 @@ public class DynamicDataSourceJdbcProvider extends AbstractJdbcDataSourceProvide @@ -79,7 +79,7 @@ public class DynamicDataSourceJdbcProvider extends AbstractJdbcDataSourceProvide
jdbcProperty.setUrl(url);
jdbcProperty.setUsername(username);
jdbcProperty.setPassword(password);
map.put(id, jdbcProperty);
map.put(name, jdbcProperty);
}
}
} catch (Exception e) {

2
kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/support/DynamicDataSourceConstant.java

@ -6,7 +6,7 @@ package com.cloud.kicc.common.datasource.support; @@ -6,7 +6,7 @@ package com.cloud.kicc.common.datasource.support;
*</p>
*
* @Author: wangxiang4
* @since: 2023/7/3
* @Since: 2023/7/3
*/
public interface DynamicDataSourceConstant {

2
kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/util/ConnUtil.java

@ -12,7 +12,7 @@ import java.sql.SQLException; @@ -12,7 +12,7 @@ import java.sql.SQLException;
*</p>
*
* @Author: wangxiang4
* @since: 2023/7/3
* @Since: 2023/7/3
*/
public class ConnUtil {

4
kicc-common/kicc-common-datasource/src/main/java/com/cloud/kicc/common/datasource/util/DynamicDataSourceUtil.java

@ -23,7 +23,7 @@ import java.sql.SQLException; @@ -23,7 +23,7 @@ import java.sql.SQLException;
*</p>
*
* @Author: wangxiang4
* @since: 2023/7/3
* @Since: 2023/7/3
*/
@Setter
@Slf4j
@ -35,7 +35,7 @@ public class DynamicDataSourceUtil { @@ -35,7 +35,7 @@ public class DynamicDataSourceUtil {
private static DefaultDataSourceCreator defaultDataSourceCreator;
private static int MAX_DATASOURCE_COUNT = 300;
// 最多保存三百个数据源,按使用率淘汰
private static LRUMap<String, DynamicDataSource> linksProperties = new LRUMap(MAX_DATASOURCE_COUNT);
private static final LRUMap<String, DynamicDataSource> linksProperties = new LRUMap(MAX_DATASOURCE_COUNT);
public DynamicDataSourceUtil(DataSource dynamicRoutingDataSource,
DynamicDataSourceProperties dynamicDataSourceProperties,

7
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/jackson2/ExUserDeserializer.java

@ -13,7 +13,6 @@ import org.springframework.security.core.authority.AuthorityUtils; @@ -13,7 +13,6 @@ import org.springframework.security.core.authority.AuthorityUtils;
import java.io.IOException;
import java.util.List;
import java.util.Set;
/**
*<p>
@ -25,7 +24,7 @@ import java.util.Set; @@ -25,7 +24,7 @@ import java.util.Set;
*/
class ExUserDeserializer extends JsonDeserializer<KiccUser> {
private static final TypeReference<Set<String>> EX_PERMISSIONS_SET = new TypeReference<Set<String>>() {};
private static final TypeReference<String[]> EX_PERMISSIONS_SET = new TypeReference<String[]>() {};
@Override
public KiccUser deserialize(JsonParser jp, DeserializationContext context) throws IOException {
@ -36,8 +35,8 @@ class ExUserDeserializer extends JsonDeserializer<KiccUser> { @@ -36,8 +35,8 @@ class ExUserDeserializer extends JsonDeserializer<KiccUser> {
String password = passwordNode.asText("");
String deptId = readJsonNode(jsonNode, "deptId").asText();
String userType = readJsonNode(jsonNode, "userType").asText();
Set<String> exPermissions = mapper.convertValue(jsonNode.get("exPermissions"), EX_PERMISSIONS_SET);
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(exPermissions.toArray(new String[0]));
String[] exPermissions = mapper.convertValue(jsonNode.get("exPermissions"), EX_PERMISSIONS_SET);
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(exPermissions);
KiccUser result = new KiccUser(
username,
password,

48
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java

@ -1,8 +1,6 @@ @@ -1,8 +1,6 @@
package com.cloud.kicc.common.security.service;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.CommonConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants;
@ -10,22 +8,17 @@ import com.cloud.kicc.common.core.enums.CasSystemEnum; @@ -10,22 +8,17 @@ import com.cloud.kicc.common.core.enums.CasSystemEnum;
import com.cloud.kicc.common.data.entity.CasUser;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.exception.SecurityCheckedException;
import com.cloud.kicc.common.security.override.jackson2.ExUserMixin;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.core.Ordered;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import java.util.*;
import java.util.List;
/**
*<p>
@ -61,23 +54,14 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered { @@ -61,23 +54,14 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered {
* @return UserDetails
*/
@SneakyThrows
default UserDetails getUserDetails(R<User> result) {
default UserDetails getUserDetails(R<UserVo> result) {
// 验证请求是否成功
if (result.getCode() != R.SUCCESS) {
throw new SecurityCheckedException(result.getMsg());
}
User user = result.getData();
Set<String> dbAuthsSet = new HashSet<>();
if (ArrayUtil.isNotEmpty(user.getRoleIds())) {
// 获取角色
Arrays.stream(user.getRoleIds()).forEach(role -> dbAuthsSet.add(SecurityConstants.ROLE + role));
// 获取资源
dbAuthsSet.addAll(Arrays.asList(user.getPermissions()));
}
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(dbAuthsSet.toArray(new String[0]));
UserVo user = result.getData();
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(user.getPermissions());
CasUser casUser = new CasUser(
user.getUserName(),
SecurityConstants.BCRYPT + user.getPassword(),
@ -85,9 +69,25 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered { @@ -85,9 +69,25 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered {
true,
true,
StrUtil.equals(user.getStatus(), CommonConstants.STATUS_NORMAL),
authorities
authorities,
user.getCasUserId(),
user.getNickName(),
user.getEmail(),
user.getPhone(),
user.getSex(),
user.getAvatar(),
user.getLoginIp(),
user.getLoginTime(),
user.getCreateById(),
user.getCreateByName(),
user.getCreateTime(),
user.getUpdateById(),
user.getUpdateByName(),
user.getUpdateTime(),
user.getRemarks(),
String.join(",", user.getRoleIds()),
String.join(",", user.getTenantIds())
);
BeanUtils.copyProperties(user, casUser, CasUser.class);
// 设置扩展用户数据
casUser.getExPrincipals().put(CasSystemEnum.KICC, new ObjectMapper()
@ -98,7 +98,7 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered { @@ -98,7 +98,7 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered {
authorities,
user.getDeptId(),
user.getUserType(),
dbAuthsSet
user.getPermissions()
)));
// 构造security用户

4
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java

@ -4,8 +4,8 @@ import com.cloud.kicc.common.core.api.R; @@ -4,8 +4,8 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.data.entity.CasUser;
import com.cloud.kicc.common.security.service.KiccUserDetailsService;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService;
import com.cloud.kicc.system.api.vo.UserVo;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@ -32,7 +32,7 @@ public class KiccAppUserDetailsServiceImpl implements KiccUserDetailsService { @@ -32,7 +32,7 @@ public class KiccAppUserDetailsServiceImpl implements KiccUserDetailsService {
@Override
@SneakyThrows
public UserDetails loadUserByUsername(String phone) {
R<User> result = remoteUserService.selectByPhone(phone);
R<UserVo> result = remoteUserService.selectByPhone(phone);
return getUserDetails(result);
}

6
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java

@ -1,11 +1,9 @@ @@ -1,11 +1,9 @@
package com.cloud.kicc.common.security.service.impl;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.security.exception.SecurityCheckedException;
import com.cloud.kicc.common.security.service.KiccUserDetailsService;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService;
import com.cloud.kicc.system.api.vo.UserVo;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@ -34,7 +32,7 @@ public class KiccUserDetailsServiceImpl implements KiccUserDetailsService { @@ -34,7 +32,7 @@ public class KiccUserDetailsServiceImpl implements KiccUserDetailsService {
@Override
@SneakyThrows
public UserDetails loadUserByUsername(String username) {
R<User> result = remoteUserService.selectByUserName(username);
R<UserVo> result = remoteUserService.selectByUserName(username);
return getUserDetails(result);
}

69
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/util/SecurityUtils.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package com.cloud.kicc.common.security.util;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.cloud.kicc.common.core.api.R;
@ -12,8 +11,8 @@ import com.cloud.kicc.common.core.util.SpringContextHolderUtil; @@ -12,8 +11,8 @@ import com.cloud.kicc.common.core.util.SpringContextHolderUtil;
import com.cloud.kicc.common.data.entity.CasUser;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.override.jackson2.ExUserMixin;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService;
import com.cloud.kicc.system.api.vo.UserVo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
@ -26,7 +25,9 @@ import org.springframework.security.core.authority.AuthorityUtils; @@ -26,7 +25,9 @@ import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
*<p>
@ -69,21 +70,34 @@ public class SecurityUtils { @@ -69,21 +70,34 @@ public class SecurityUtils {
}
/**
* 获取SSO扩展用户
* 获取完整用户
* @param casSystemEnum SSO系统枚举
* @param valueType 自定义扩展用户
* @param mixinSource 自定义jackson混合解析源
* @return T
*/
@SneakyThrows
public KiccUser getUser() {
public <T> T getUser(CasSystemEnum casSystemEnum,
Class<T> valueType,
Class<?> mixinSource) {
CasUser casUser = getCasUser();
if (casUser == null) return null;
String user = casUser.getExPrincipals().get(CasSystemEnum.KICC);
if (JSONUtil.isJson(user)) {
KiccUser exUser = new ObjectMapper().addMixIn(KiccUser.class, ExUserMixin.class).readValue(user, KiccUser.class);
String str = casUser.getExPrincipals().get(casSystemEnum);
if (JSONUtil.isJson(str)) {
T exUser = new ObjectMapper().addMixIn(valueType, mixinSource).readValue(str, valueType);
BeanUtils.copyProperties(casUser, exUser);
return exUser;
}
return null;
}
/**
* 获取SSO扩展用户
*/
public KiccUser getUser() {
return getUser(CasSystemEnum.KICC, KiccUser.class, ExUserMixin.class);
}
/**
* 获取用户角色信息
* @return 角色集合
@ -107,23 +121,14 @@ public class SecurityUtils { @@ -107,23 +121,14 @@ public class SecurityUtils {
* @return User 用户对象
*/
@SneakyThrows
public User openInterfaceTemporaryLoginSession(String userId) {
public UserVo openInterfaceTemporaryLoginSession(String userId) {
RemoteUserService remoteUserService = SpringContextHolderUtil.getBean(RemoteUserService.class);
R<User> result = remoteUserService.selectByUserId(userId);
R<UserVo> result = remoteUserService.selectByUserId(userId);
if (result == null || result.getData() == null) {
throw new CheckedException("用户不存在");
}
User user = result.getData();
Set<String> dbAuthsSet = new HashSet<>();
if (ArrayUtil.isNotEmpty(user.getRoleIds())) {
// 获取角色
Arrays.stream(user.getRoleIds()).forEach(role -> dbAuthsSet.add(SecurityConstants.ROLE + role));
// 获取资源
dbAuthsSet.addAll(Arrays.asList(user.getPermissions()));
}
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(dbAuthsSet.toArray(new String[0]));
UserVo user = result.getData();
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(user.getPermissions());
CasUser casUser = new CasUser(
user.getUserName(),
SecurityConstants.BCRYPT + user.getPassword(),
@ -131,9 +136,25 @@ public class SecurityUtils { @@ -131,9 +136,25 @@ public class SecurityUtils {
true,
true,
StrUtil.equals(user.getStatus(), CommonConstants.STATUS_NORMAL),
authorities
authorities,
user.getCasUserId(),
user.getNickName(),
user.getEmail(),
user.getPhone(),
user.getSex(),
user.getAvatar(),
user.getLoginIp(),
user.getLoginTime(),
user.getCreateById(),
user.getCreateByName(),
user.getCreateTime(),
user.getUpdateById(),
user.getUpdateByName(),
user.getUpdateTime(),
user.getRemarks(),
String.join(",", user.getRoleIds()),
String.join(",", user.getTenantIds())
);
BeanUtils.copyProperties(user, casUser);
// 设置扩展用户数据
casUser.getExPrincipals().put(CasSystemEnum.KICC, new ObjectMapper()
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
@ -143,7 +164,7 @@ public class SecurityUtils { @@ -143,7 +164,7 @@ public class SecurityUtils {
authorities,
user.getDeptId(),
user.getUserType(),
dbAuthsSet
user.getPermissions()
)));
Authentication authentication = new UsernamePasswordAuthenticationToken(casUser, "N/A", casUser.getAuthorities());

2
kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java

@ -19,7 +19,7 @@ import java.util.Set; @@ -19,7 +19,7 @@ import java.util.Set;
*</p>
*
* @Author: wangxiang4
* @since: 2023/4/6
* @Since: 2023/4/6
*/
@FeignClient(contextId = "remotePushConcernFanService", value = ServiceNameConstants.COMMON_SERVICE)
public interface RemotePushConcernFanService {

6
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/SsoUser.java

@ -21,7 +21,7 @@ import java.time.LocalDateTime; @@ -21,7 +21,7 @@ import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_sso_user")
@TableName("cas_sso_user")
@ApiModel(description = "SSO用户表")
public class SsoUser extends CommonEntity {
@ -57,10 +57,6 @@ public class SsoUser extends CommonEntity { @@ -57,10 +57,6 @@ public class SsoUser extends CommonEntity {
/** 最后登陆时间 */
private LocalDateTime loginTime;
/** 权限标识集合 */
@TableField(exist = false)
private String[] permissions;
/** 新密码 */
@TableField(exist = false)
private String newPassword;

118
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/User.java

@ -1,8 +1,5 @@ @@ -1,8 +1,5 @@
package com.cloud.kicc.system.api.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cloud.kicc.common.data.entity.CommonEntity;
import io.swagger.annotations.ApiModel;
@ -11,149 +8,46 @@ import lombok.Data; @@ -11,149 +8,46 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
*<p>
* 用户信息表
*</p>
*
* @Author: wangxiang4
* @Date: 2022/2/24
* @Since: 2023/8/21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_user")
@TableName(value = "sys_user", excludeProperty = { "remarks" })
@ApiModel(description = "用户表")
public class User extends CommonEntity {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
@TableId
@ApiModelProperty("用户ID")
/** 用户ID */
private String id;
/**
* 用户名
*/
@ExcelProperty("用户名")
@ApiModelProperty("用户名")
private String userName;
/**
* 昵称
*/
@ExcelProperty("昵称")
@ApiModelProperty("用户昵称")
private String nickName;
/**
* 密码
*/
@ApiModelProperty("用户密码")
private String password;
@ApiModelProperty("CAS用户ID")
private String casUserId;
/**
* 用户类型
*/
/** {@link com.cloud.kicc.system.api.enums.UserTypeEnum } */
@ApiModelProperty("用户类型")
private String userType;
/**
* 机构ID
*/
@ApiModelProperty("机构ID")
private String deptId;
/**
* 机构名称
*/
@ApiModelProperty("机构名称")
private String deptName;
/**
* 用户邮箱
*/
@ExcelProperty("邮箱")
@ApiModelProperty("邮箱")
private String email;
/**
* 手机号码
*/
@ExcelProperty("手机号码")
@ApiModelProperty("手机号码")
private String phone;
/**
* 用户性别0男 1女 2未知
*/
@ExcelProperty("性别")
@ApiModelProperty("用户性别(0男 1女 2未知")
private String sex;
/**
* 头像路径
*/
@ApiModelProperty("头像路径")
private String avatar;
/**
* 最后登陆IP
*/
@ApiModelProperty("最后登陆IP")
private String loginIp;
/**
* 最后登陆时间
*/
@ApiModelProperty("最后登陆时间")
private LocalDateTime loginTime;
/**
* 地图标记点位置图片旋转值
*/
@ApiModelProperty("地图标记点位置图片旋转值")
private Double mapOrientation;
/**
* 地图设计器默认中心点位置
*/
@ApiModelProperty("地图设计器默认中心点位置")
private String mapCenter;
/**
* 帐号状态0正常 1停用
*/
@ApiModelProperty("帐号状态(0正常 1停用)")
private String status;
/**
* 内部系统账户
*/
@ApiModelProperty("内部系统账户ID")
private Integer klabUserAccount;
/**
* 角色ID集合
*/
@TableField(exist = false)
@ApiModelProperty("角色ID集合")
private String[] roleIds;
/**
* 权限标识集合
*/
@TableField(exist = false)
private String[] permissions;
/**
* 新密码
*/
@TableField(exist = false)
private String newPassword;
}

9
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/feign/RemoteUserService.java

@ -4,11 +4,10 @@ import com.cloud.kicc.common.core.api.R; @@ -4,11 +4,10 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.core.constant.ServiceNameConstants;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
/**
*<p>
@ -27,7 +26,7 @@ public interface RemoteUserService { @@ -27,7 +26,7 @@ public interface RemoteUserService {
* @return R
*/
@GetMapping(value = AppConstants.APP_SYSTEM + "/user/selectByUserName/{userName}", headers = SecurityConstants.HEADER_FROM_IN)
R<User> selectByUserName(@PathVariable("userName") String userName);
R<UserVo> selectByUserName(@PathVariable("userName") String userName);
/**
* 通过手机号码查询用户
@ -35,7 +34,7 @@ public interface RemoteUserService { @@ -35,7 +34,7 @@ public interface RemoteUserService {
* @return R
*/
@GetMapping(value = AppConstants.APP_SYSTEM + "/user/selectByPhone/{phone}", headers = SecurityConstants.HEADER_FROM_IN)
R<User> selectByPhone(@PathVariable("phone") String phone);
R<UserVo> selectByPhone(@PathVariable("phone") String phone);
/**
* 通过用户ID查询用户
@ -43,6 +42,6 @@ public interface RemoteUserService { @@ -43,6 +42,6 @@ public interface RemoteUserService {
* @return R
*/
@GetMapping(value = AppConstants.APP_SYSTEM + "/user/getUser/{userId}", headers = SecurityConstants.HEADER_FROM_IN)
R<User> selectByUserId(@PathVariable("userId") String userid);
R<UserVo> selectByUserId(@PathVariable("userId") String userid);
}

62
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/vo/UserVo.java

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
package com.cloud.kicc.system.api.vo;
import com.cloud.kicc.system.api.entity.SsoUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
*<p>
* 返回完整用户信息CasUser and SystemUser
*</p>
*
* @Author: wangxiang4
* @Since: 2023/8/21
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "完整用户信息VO")
public class UserVo extends SsoUser {
private static final long serialVersionUID = 1L;
private String id;
@ApiModelProperty("CAS用户ID")
private String casUserId;
/** {@link com.cloud.kicc.system.api.enums.UserTypeEnum } */
@ApiModelProperty("用户类型")
private String userType;
@ApiModelProperty("机构ID")
private String deptId;
@ApiModelProperty("机构名称")
private String deptName;
@ApiModelProperty("地图标记点位置图片旋转值")
private Double mapOrientation;
@ApiModelProperty("地图设计器默认中心点位置")
private String mapCenter;
@ApiModelProperty("帐号状态(0正常 1停用)")
private String status;
@ApiModelProperty("指定登录后首页跳转")
private String homePath;
@ApiModelProperty("角色ID集合")
private String[] roleIds;
@ApiModelProperty("菜单按钮权限")
private String[] permissions;
@ApiModelProperty("多租户ID集合")
private String[] tenantIds;
}

6
kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/constant/SqlConstants.java

@ -12,10 +12,10 @@ public interface SqlConstants { @@ -12,10 +12,10 @@ public interface SqlConstants {
String QUERY_ACT_HI_COMMENT= "select * from ACT_HI_COMMENT where TYPE_ like ? and TASK_ID_ = ? order by TIME_ desc";
String QUERY_USER_BY_ID = "select id, user_name userName, nick_name nickName, password, dept_id deptId, status from sys_user where id = ?";
String QUERY_USER_BY_ID = "select csu.id, csu.user_name userName, csu.nick_name nickName, csu.password, u.dept_id deptId, u.status from sys_user u join remote_cas_sso_user csu on u.cas_user_id = csu.id where csu.id = ?";
String QUERY_USER_BY_DEPT_ID = "select id, user_name userName, nick_name nickName, password, dept_id deptId, status from sys_user where dept_id = ?";
String QUERY_USER_BY_DEPT_ID = "select csu.id, csu.user_name userName, csu.nick_name nickName, csu.password, u.dept_id deptId, u.status from sys_user u join remote_cas_sso_user csu on u.cas_user_id = csu.id where u.dept_id = ?";
String QUERY_USER_BY_ROLE_ID = "select distinct id, user_name userName, nick_name nickName, password, dept_id deptId, status from sys_user a, sys_user_role b where a.id = b.user_id and b.role_id = ?";
String QUERY_USER_BY_ROLE_ID = "select distinct csu.id, csu.user_name userName, csu.nick_name nickName, csu.password, u.dept_id deptId, u.status from sys_user u join remote_cas_sso_user csu on u.cas_user_id = csu.id join sys_user_role b on csu.id = b.user_id where b.role_id = ?";
}

8
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskController.java

@ -9,13 +9,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; @@ -9,13 +9,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.entity.*;
import com.cloud.kicc.commonbiz.service.*;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService;
import io.lettuce.core.api.push.PushMessage;
import com.cloud.kicc.system.api.vo.UserVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@ -87,7 +85,7 @@ public class MapTaskController { @@ -87,7 +85,7 @@ public class MapTaskController {
mapTask.setBatchCode(batchCode);
JSONObject jsonObject = new JSONObject();
R<User> user = remoteUserService.selectByUserId(mapTask.getCourierUserId());
R<UserVo> user = remoteUserService.selectByUserId(mapTask.getCourierUserId());
Hospital hospital = hospitalService.getById(mapTask.getHospitalId());
jsonObject.put("hospitalId", hospital.getKlabHospitalAccount());
if (StrUtil.isNotBlank(mapTask.getOrgId())) {
@ -100,7 +98,7 @@ public class MapTaskController { @@ -100,7 +98,7 @@ public class MapTaskController {
jsonObject.put("officeId", 0);
jsonObject.put("doctorId", 0);
jsonObject.put("syUserId", user.getData().getKlabUserAccount());
jsonObject.put("syUserId", user.getData().getCasUserId());
jsonObject.put("batchCode", mapTask.getBatchCode());
jsonObject.put("taskType", mapTask.getTaskType());
jsonObject.put("originImages", mapTask.getReceiptFileId());

8
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskPresetController.java

@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; @@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.commonbiz.api.entity.Hospital;
import com.cloud.kicc.commonbiz.api.entity.MapTaskPreset;
import com.cloud.kicc.commonbiz.api.entity.Org;
@ -17,12 +16,11 @@ import com.cloud.kicc.commonbiz.service.HospitalService; @@ -17,12 +16,11 @@ import com.cloud.kicc.commonbiz.service.HospitalService;
import com.cloud.kicc.commonbiz.service.IMapLogisticService;
import com.cloud.kicc.commonbiz.service.IMapTaskPresetService;
import com.cloud.kicc.commonbiz.service.OrgService;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService;
import com.cloud.kicc.system.api.vo.UserVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
@ -83,7 +81,7 @@ public class MapTaskPresetController { @@ -83,7 +81,7 @@ public class MapTaskPresetController {
String batchCode = UUID.fromString(UUID.randomUUID().toString()).toString();
mapTaskPreset.setBatchCode(batchCode);
JSONObject jsonObject = new JSONObject();
R<User> user = remoteUserService.selectByUserId(mapTaskPreset.getCourierUserId());
R<UserVo> user = remoteUserService.selectByUserId(mapTaskPreset.getCourierUserId());
if (StrUtil.isNotBlank(mapTaskPreset.getOrginPresetId())) {
Hospital hospital = hospitalService.getById(mapTaskPreset.getOrginPresetId());
jsonObject.put("hospitalId", hospital.getKlabHospitalAccount());
@ -99,7 +97,7 @@ public class MapTaskPresetController { @@ -99,7 +97,7 @@ public class MapTaskPresetController {
jsonObject.put("officeId", 0);
jsonObject.put("doctorId", 0);
jsonObject.put("syUserId", user.getData().getKlabUserAccount());
jsonObject.put("syUserId", user.getData().getCasUserId());
jsonObject.put("batchCode", mapTaskPreset);
jsonObject.put("taskType", 1);
jsonObject.put("originImages", mapTaskPreset.getReceiptFileId());

7
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushBlacklistController.java

@ -13,7 +13,6 @@ import com.cloud.kicc.commonbiz.api.entity.PushConcernFanType; @@ -13,7 +13,6 @@ import com.cloud.kicc.commonbiz.api.entity.PushConcernFanType;
import com.cloud.kicc.commonbiz.service.IPushBlacklistService;
import com.cloud.kicc.commonbiz.service.IPushConcernFanService;
import com.cloud.kicc.commonbiz.service.IPushConcernFanTypeService;
import com.cloud.kicc.system.api.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@ -43,9 +42,9 @@ public class PushBlacklistController { @@ -43,9 +42,9 @@ public class PushBlacklistController {
@ApiOperation("分页查询")
@GetMapping("/list")
public R list(Page page, User user) {
user.setCreateById(SecurityUtils.getCasUser().getId());
IPage<Map<String, Object>> iPage = iPushBlacklistService.selectPushBlacklist(page, user);
public R list(Page page, @RequestParam Map map) {
map.put("createById", SecurityUtils.getCasUser().getId());
IPage<Map<String, Object>> iPage = iPushBlacklistService.selectPushBlacklist(page, map);
return R.ok(iPage.getRecords(), iPage.getTotal());
}

3
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushBlacklistMapper.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cloud.kicc.commonbiz.api.entity.PushBlacklist;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
@ -19,7 +20,7 @@ import java.util.Map; @@ -19,7 +20,7 @@ import java.util.Map;
*/
public interface PushBlacklistMapper extends BaseMapper<PushBlacklist> {
IPage<Map<String, Object>> selectPushBlacklist(@Param("page") IPage<Map<String, Object>> page, @Param("user") User user);
IPage<Map<String, Object>> selectPushBlacklist(@Param("page") IPage<Map<String, Object>> page, @Param("map") Map map);
Map<String, Object> getByPushBlacklistId(PushBlacklist pushBlacklist);

3
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushBlacklistService.java

@ -3,7 +3,6 @@ package com.cloud.kicc.commonbiz.service; @@ -3,7 +3,6 @@ package com.cloud.kicc.commonbiz.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.kicc.commonbiz.api.entity.PushBlacklist;
import com.cloud.kicc.system.api.entity.User;
import java.util.Map;
@ -22,7 +21,7 @@ public interface IPushBlacklistService extends IService<PushBlacklist> { @@ -22,7 +21,7 @@ public interface IPushBlacklistService extends IService<PushBlacklist> {
* @param
* @return
*/
IPage<Map<String, Object>> selectPushBlacklist(IPage<Map<String, Object>> page, User user);
IPage<Map<String, Object>> selectPushBlacklist(IPage<Map<String, Object>> page, Map<String, Object> map);
/**
* 根据推送黑名单ID查询

12
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/MapLogisticServiceImpl.java

@ -4,21 +4,19 @@ import cn.hutool.core.collection.ListUtil; @@ -4,21 +4,19 @@ import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.entity.*;
import com.cloud.kicc.commonbiz.mapper.MapLogisticMapper;
import com.cloud.kicc.commonbiz.service.*;
import com.cloud.kicc.commonbiz.util.PushClientUtil;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService;
import com.cloud.kicc.system.api.vo.UserVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
@ -117,7 +115,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo @@ -117,7 +115,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo
mapLogistic.getMapTask().forEach(mapTask -> {
if (mapTask.getEnabledCreateReport()) {
JSONObject jsonObject = new JSONObject();
R<User> user = remoteUserService.selectByUserId(mapTask.getCourierUserId());
R<UserVo> user = remoteUserService.selectByUserId(mapTask.getCourierUserId());
Hospital hospital = hospitalService.getById(mapTask.getHospitalId());
jsonObject.put("hospitalId", hospital.getKlabHospitalAccount());
if (StrUtil.isNotBlank(mapTask.getOrgId())) {
@ -130,7 +128,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo @@ -130,7 +128,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo
jsonObject.put("officeId", 0);
jsonObject.put("doctorId", 0);
jsonObject.put("syUserId", user.getData().getKlabUserAccount());
jsonObject.put("syUserId", user.getData().getCasUserId());
jsonObject.put("batchCode", mapTask.getBatchCode());
jsonObject.put("taskType", mapTask.getTaskType());
jsonObject.put("originImages", mapTask.getReceiptFileId());
@ -140,7 +138,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo @@ -140,7 +138,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo
mapTask.getMapTaskPreset().forEach(mapTaskPreset -> {
JSONObject jsonObject = new JSONObject();
if (mapTaskPreset.getEnabledCreateReport()) {
R<User> taskPresetUser = remoteUserService.selectByUserId(mapTaskPreset.getCourierUserId());
R<UserVo> taskPresetUser = remoteUserService.selectByUserId(mapTaskPreset.getCourierUserId());
if (StrUtil.isNotBlank(mapTaskPreset.getOrginPresetId())) {
Hospital hospital = hospitalService.getById(mapTaskPreset.getOrginPresetId());
jsonObject.put("hospitalId", hospital.getKlabHospitalAccount());
@ -156,7 +154,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo @@ -156,7 +154,7 @@ public class MapLogisticServiceImpl extends ServiceImpl<MapLogisticMapper, MapLo
jsonObject.put("officeId", 0);
jsonObject.put("doctorId", 0);
jsonObject.put("syUserId", taskPresetUser.getData().getKlabUserAccount());
jsonObject.put("syUserId", taskPresetUser.getData().getCasUserId());
jsonObject.put("batchCode", mapTaskPreset);
jsonObject.put("taskType", 1);
jsonObject.put("originImages", mapTaskPreset.getReceiptFileId());

6
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushBlacklistServiceImpl.java

@ -6,6 +6,8 @@ import com.cloud.kicc.commonbiz.api.entity.PushBlacklist; @@ -6,6 +6,8 @@ import com.cloud.kicc.commonbiz.api.entity.PushBlacklist;
import com.cloud.kicc.commonbiz.mapper.PushBlacklistMapper;
import com.cloud.kicc.commonbiz.service.IPushBlacklistService;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import java.util.Map;
@ -22,8 +24,8 @@ import java.util.Map; @@ -22,8 +24,8 @@ import java.util.Map;
public class PushBlacklistServiceImpl extends ServiceImpl<PushBlacklistMapper, PushBlacklist> implements IPushBlacklistService {
@Override
public IPage<Map<String, Object>> selectPushBlacklist(IPage<Map<String, Object>> page, User user) {
return baseMapper.selectPushBlacklist(page, user);
public IPage<Map<String, Object>> selectPushBlacklist(IPage<Map<String, Object>> page, Map<String, Object> map) {
return baseMapper.selectPushBlacklist(page, map);
}
@Override

62
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushBlacklistMapper.xml

@ -3,74 +3,74 @@ @@ -3,74 +3,74 @@
<mapper namespace="com.cloud.kicc.commonbiz.mapper.PushBlacklistMapper">
<select id="selectPushBlacklist" resultType="Map">
SELECT
select
bl.id,
bl.concern_user_id,
bl.fan_user_id,
bl.create_time bl_create_time,
bl.remarks bl_remarks,
u.user_name,
u.nick_name,
csu.user_name,
csu.nick_name,
u.user_type,
u.dept_id,
u.dept_name,
u.email,
u.phone,
u.sex,
u.avatar,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
u.`status`,
u.login_ip,
u.login_time,
csu.login_ip,
csu.login_time,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
u.remarks
FROM
common_push_blacklist bl JOIN sys_user u
ON
bl.fan_user_id = u.id
csu.remarks
from
common_push_blacklist bl
join sys_user u on bl.fan_user_id = u.cas_user_id
join remote_cas_sso_user csu on u.cas_user_id = csu.id
<where>
bl.del_flag = 0 AND u.del_flag = 0 AND u.status = 0 AND bl.concern_user_id = #{user.createById}
<if test="user.nickName != null and user.nickName != ''">
AND u.nick_name LIKE CONCAT('%', #{user.nickName}, '%')
bl.del_flag = 0 AND u.del_flag = 0 AND u.status = 0 AND bl.concern_user_id = #{map.createById}
<if test="map.nickName != null and map.nickName != ''">
AND csu.nick_name LIKE CONCAT('%', #{map.nickName}, '%')
</if>
ORDER BY create_time DESC
</where>
</select>
<select id="getByPushBlacklistId" resultType="Map">
SELECT
select
bl.id,
bl.concern_user_id,
bl.fan_user_id,
bl.create_time bl_create_time,
bl.remarks bl_remarks,
u.user_name,
u.nick_name,
csu.user_name,
csu.nick_name,
u.user_type,
u.dept_id,
u.dept_name,
u.email,
u.phone,
u.sex,
u.avatar,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
u.`status`,
u.login_ip,
u.login_time,
csu.login_ip,
csu.login_time,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
u.remarks
FROM
common_push_blacklist bl JOIN sys_user u
ON
bl.fan_user_id = u.id
csu.remarks
from
common_push_blacklist bl
join sys_user u on bl.fan_user_id = u.cas_user_id
join remote_cas_sso_user csu on u.cas_user_id = csu.id
<where>
bl.del_flag = 0 AND u.del_flag = 0 AND u.status = 0 AND
bl.concern_user_id = #{concernUserId} AND

92
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml

@ -11,35 +11,36 @@ @@ -11,35 +11,36 @@
cf.create_time cf_create_time,
cf.remarks cf_remarks,
cf.type cf_type,
u.user_name,
u.nick_name,
csu.user_name,
csu.nick_name,
u.user_type,
u.dept_id,
u.dept_name,
u.email,
u.phone,
u.sex,
u.avatar,
u.login_ip,
u.login_time,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
csu.login_ip,
csu.login_time,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
u.remarks
csu.remarks
FROM
common_push_concern_fan cf JOIN (SELECT * FROM sys_user WHERE del_flag = 0) u
ON
<choose>
<when test="map.dynamicJoinType == 1">
cf.concern_user_id = u.id
cf.concern_user_id = u.cas_user_id
</when>
<otherwise>
cf.fan_user_id = u.id
cf.fan_user_id = u.cas_user_id
</otherwise>
</choose>
JOIN (SELECT * FROM remote_cas_sso_user WHERE del_flag = 0) csu ON u.cas_user_id = csu.id
<where>
cf.del_flag = 0
AND u.status = 0
@ -53,7 +54,7 @@ @@ -53,7 +54,7 @@
AND cf.fan_user_id = #{map.fanUserId}
</if>
<if test="map.nickName != null and map.nickName != ''">
AND u.nick_name = #{map.nickName}
AND csu.nick_name = #{map.nickName}
</if>
ORDER BY cf.create_time ASC
</where>
@ -68,35 +69,36 @@ @@ -68,35 +69,36 @@
cf.create_time cf_create_time,
cf.remarks cf_remarks,
cf.type cf_type,
u.user_name,
u.nick_name,
csu.user_name,
csu.nick_name,
u.user_type,
u.dept_id,
u.dept_name,
u.email,
u.phone,
u.sex,
u.avatar,
u.login_ip,
u.login_time,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
csu.login_ip,
csu.login_time,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
u.remarks
csu.remarks
FROM
common_push_concern_fan cf JOIN (SELECT * FROM sys_user WHERE del_flag = 0) u
ON
<choose>
<when test="dynamicJoinType == 1">
cf.concern_user_id = u.id
cf.concern_user_id = u.cas_user_id
</when>
<otherwise>
cf.fan_user_id = u.id
cf.fan_user_id = u.cas_user_id
</otherwise>
</choose>
JOIN (SELECT * FROM remote_cas_sso_user WHERE del_flag = 0) csu ON u.cas_user_id = csu.id
<where>
cf.del_flag = 0
AND u.status = 0
@ -110,34 +112,60 @@ @@ -110,34 +112,60 @@
cf.`status` cf_status,
cf.type cf_type,
b.id bl_id,
u.*
u.id,
csu.id cas_user_id,
csu.user_name,
csu.nick_name,
csu.password,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
csu.login_ip,
csu.login_time,
u.user_type,
u.dept_id,
u.dept_name,
u.status,
u.map_orientation,
u.map_center,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
csu.remarks,
csu.tenant_id,
u.del_flag
FROM
sys_user u
LEFT JOIN (select * FROM common_push_concern_fan WHERE del_flag = 0
<choose>
<!--企业用户进行粉丝查询连表-->
<when test="map.dynamicJoinType == 1">
AND concern_user_id = ${@com.cloud.kicc.common.security.util.SecurityUtils@getUser().id}) cf
ON u.id = cf.fan_user_id
AND concern_user_id = ${@com.cloud.kicc.common.security.util.SecurityUtils@getCasUser().id}) cf
ON u.cas_user_id = cf.fan_user_id
LEFT JOIN (SELECT * FROM common_push_blacklist WHERE del_flag = 0) b
ON u.id = b.concern_user_id
ON u.cas_user_id = b.concern_user_id
</when>
<otherwise>
AND fan_user_id = ${@com.cloud.kicc.common.security.util.SecurityUtils@getUser().id}) cf
ON u.id = cf.concern_user_id
AND fan_user_id = ${@com.cloud.kicc.common.security.util.SecurityUtils@getCasUser().id}) cf
ON u.cas_user_id = cf.concern_user_id
LEFT JOIN (SELECT * FROM common_push_blacklist WHERE del_flag = 0) b
ON u.id = b.fan_user_id
ON u.cas_user_id = b.fan_user_id
</otherwise>
</choose>
JOIN (SELECT * FROM remote_cas_sso_user WHERE del_flag = 0) csu ON u.cas_user_id = csu.id
<where>
u.del_flag = 0
AND u.status = 0
AND u.user_type not in(
${@com.cloud.kicc.system.api.enums.UserTypeEnum@INTERNAL_USER.value}
)
AND u.id != ${@com.cloud.kicc.common.security.util.SecurityUtils@getUser().id}
AND u.cas_user_id != ${@com.cloud.kicc.common.security.util.SecurityUtils@getCasUser().id}
<if test="map.nickName != null and map.nickName != ''">
AND u.nick_name = #{map.nickName}
AND csu.nick_name = #{map.nickName}
</if>
ORDER BY u.create_time ASC
</where>

17
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AppController.java

@ -1,12 +1,11 @@ @@ -1,12 +1,11 @@
package com.cloud.kicc.system.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.service.AppService;
import com.cloud.kicc.system.service.UserService;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.system.api.vo.UserVo;
import com.cloud.kicc.system.service.AppService;
import com.cloud.kicc.system.service.UserService;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
@ -14,6 +13,8 @@ import org.springframework.web.bind.annotation.PathVariable; @@ -14,6 +13,8 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
*<p>
* 移动端登录
@ -45,12 +46,12 @@ public class AppController { @@ -45,12 +46,12 @@ public class AppController {
*/
@Inner
@GetMapping("/selectByPhone/{phone:\\d+}")
public R<User> selectByPhone(@PathVariable String phone) {
User user = userService.getOne(Wrappers.<User>query().lambda().eq(User::getPhone, phone));
if (user == null) {
public R<UserVo> selectByPhone(@PathVariable String phone) {
List<UserVo> user = userService.getUserByPhone(phone);
if (user.isEmpty()) {
return R.error("该手机号不存在,请注册!");
}
return R.ok(userService.getUserAuthority(user));
return R.ok(userService.getUserAuthority(user.get(0)));
}
}

13
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/SsoUserController.java

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
package com.cloud.kicc.system.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -11,6 +12,7 @@ import com.cloud.kicc.common.log.annotation.SysLog; @@ -11,6 +12,7 @@ import com.cloud.kicc.common.log.annotation.SysLog;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.system.api.entity.SsoUser;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import com.cloud.kicc.system.service.ISsoUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@ -61,7 +63,6 @@ public class SsoUserController { @@ -61,7 +63,6 @@ public class SsoUserController {
return R.ok(iSsoUserService.getOne(Wrappers.<SsoUser>lambdaQuery().eq(SsoUser::getUserName, userName)));
}
@PostMapping("/save")
public R save(@Validated @RequestBody SsoUser ssoUser) {
ssoUser.setPassword(ENCODER.encode(ssoUser.getPassword()));
@ -77,16 +78,19 @@ public class SsoUserController { @@ -77,16 +78,19 @@ public class SsoUserController {
@DeleteMapping("/remove/{id:[\\w,]+}")
public R remove(@PathVariable String[] id) {
// todo: 除了删除sso管理用户之外还需回调各个系统的用户删除方法
iSsoUserService.removeByIds(Arrays.asList(id));
return R.ok();
}
@SysLog("用户密码重置")
@PutMapping("/resetPwd")
public R resetPwd(@Validated @RequestBody SsoUser ssoUser) {
iSsoUserService.update(Wrappers.<SsoUser>update().lambda().eq(SsoUser::getId, ssoUser.getId()).set(SsoUser::getPassword, ENCODER.encode(ssoUser.getNewPassword())));
return R.ok();
}
@SysLog("用户密码修改")
@PutMapping("/updatePwd")
public R updatePwd(@Validated @RequestBody SsoUser ssoUser) {
SsoUser originUser = iSsoUserService.getById(SecurityUtils.getCasUser().getId());
@ -98,4 +102,11 @@ public class SsoUserController { @@ -98,4 +102,11 @@ public class SsoUserController {
}
}
@SysLog("同时修改SSO跟系统用户")
@PutMapping("/updateSsoUserAndExUser")
public R updateSsoUserAndExUser(@Validated @RequestBody UserVo userVo) {
iSsoUserService.updateSsoUserAndExUser(userVo);
return R.ok();
}
}

9
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/TenantController.java

@ -10,7 +10,9 @@ import com.cloud.kicc.common.core.api.R; @@ -10,7 +10,9 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.log.annotation.SysLog;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.system.api.entity.*;
import com.cloud.kicc.system.api.entity.RoleTenant;
import com.cloud.kicc.system.api.entity.Tenant;
import com.cloud.kicc.system.api.vo.UserVo;
import com.cloud.kicc.system.service.RoleTenantService;
import com.cloud.kicc.system.service.TenantService;
import com.cloud.kicc.system.service.UserService;
@ -55,8 +57,9 @@ public class TenantController { @@ -55,8 +57,9 @@ public class TenantController {
@GetMapping("/currentUserTenantList")
@PreAuthorize("@pms.hasPermission('tenant_view')")
public R currentUserTenantList() {
User user = userService.getCurrentUserInfo();
List<Tenant> tenantList = tenantService.list(Wrappers.<Tenant>query().lambda().in(Tenant::getCode, StrUtil.split(user.getTenantId(), ",")));
UserVo user = userService.getUserById(SecurityUtils.getCasUser().getId());
userService.getUserAuthority(user);
List<Tenant> tenantList = tenantService.list(Wrappers.<Tenant>query().lambda().in(Tenant::getCode, user.getTenantIds()));
return R.ok(tenantList);
}

112
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -3,7 +3,6 @@ package com.cloud.kicc.system.controller; @@ -3,7 +3,6 @@ package com.cloud.kicc.system.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -11,10 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -11,10 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.constant.CommonConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.log.annotation.SysLog;
import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.common.security.util.SecurityUtils;
@ -25,6 +21,7 @@ import com.cloud.kicc.system.api.entity.User; @@ -25,6 +21,7 @@ import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.entity.UserRole;
import com.cloud.kicc.system.api.enums.UserTypeEnum;
import com.cloud.kicc.system.api.vo.ResultVo;
import com.cloud.kicc.system.api.vo.UserVo;
import com.cloud.kicc.system.service.MenuService;
import com.cloud.kicc.system.service.RoleService;
import com.cloud.kicc.system.service.UserRoleService;
@ -35,12 +32,6 @@ import io.swagger.annotations.ApiOperation; @@ -35,12 +32,6 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@ -63,30 +54,18 @@ public class UserController { @@ -63,30 +54,18 @@ public class UserController {
private final UserRoleService userRoleService;
private final RoleService roleService;
private final MenuService menuService;
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
private final RemotePushConcernFanService remotePushConcernFanService;
private LambdaQueryWrapper<User> getQueryWrapper(User user) {
return new LambdaQueryWrapper<User>()
.like(StrUtil.isNotBlank(user.getUserName()), User::getUserName, user.getUserName())
.like(StrUtil.isNotBlank(user.getNickName()), User::getNickName, user.getNickName())
.eq(StrUtil.isNotBlank(user.getDeptId()), User::getDeptId, user.getDeptId())
.eq(StrUtil.isNotBlank(user.getId()), User::getId, user.getId())
.eq(StrUtil.isNotBlank(user.getUserType()), User::getUserType, user.getUserType())
.between(StrUtil.isNotBlank(user.getBeginTime()) && StrUtil.isNotBlank(user.getEndTime()), User::getCreateTime, user.getBeginTime(), user.getEndTime());
}
@GetMapping("/list")
//@PreAuthorize("@pms.hasPermission('user_view')")
public R list(Page page, User user) {
IPage<User> userIPage = userService.page(page, getQueryWrapper(user));
public R list(Page page,@RequestParam Map param) {
IPage<UserVo> userIPage = userService.selectUserList(page, param);
return R.ok(userIPage.getRecords(), userIPage.getTotal());
}
@GetMapping("/getCourierUserList")
@ApiOperation(value = "获取全部快递员集合")
public R getCourierUserList() {
List<User> userList = userService.getCourierUserList();
List<UserVo> userList = userService.getCourierUserList();
return R.ok(userList);
}
@ -109,13 +88,13 @@ public class UserController { @@ -109,13 +88,13 @@ public class UserController {
@GetMapping("/{id:\\w+}")
public R getById(@PathVariable("id") String id) {
User user = userService.getById(id);
UserVo user = userService.getUserById(id);
List<String> roles;
// 设置所有角色集合信息
List<Role> roleList = roleService.list();
// 设置用户角色信息
if (user != null) {
roles = userRoleService.list(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getId()))
roles = userRoleService.list(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getCasUserId()))
.stream().map(userRole -> userRole.getRoleId()).collect(Collectors.toList());
user.setRoleIds(ArrayUtil.toArray(roles, String.class));
}
@ -125,53 +104,40 @@ public class UserController { @@ -125,53 +104,40 @@ public class UserController {
@Inner
@GetMapping("/getUser/{id:\\w+}")
public R getUser(@PathVariable("id") String id) {
User user = userService.getById(id);
if (user == null) {
return R.error("该用户不存在,请注册!");
}
UserVo user = userService.getUserById(id);
if (user == null) return R.error("该用户不存在,请注册!");
return R.ok(userService.getUserAuthority(user));
}
@SysLog("用户新增")
@PostMapping("/save")
@PreAuthorize("@pms.hasPermission('user_add')")
public R save(@RequestBody User user) {
user.setPassword(ENCODER.encode(user.getPassword()));
public R save(@RequestBody UserVo user) {
userService.saveUser(user);
// fixme: 推送.APP相关
// 企业内部用户推送类型数据同步
if (StrUtil.equals(user.getUserType(), UserTypeEnum.INTERNAL_USER.getValue())) {
List<User> userList = userService.list(Wrappers.<User>lambdaQuery()
.ne(User::getId, SecurityUtils.getCasUser().getId())
.notIn(User::getUserType, UserTypeEnum.ENTERPRISE_USER.getValue(), UserTypeEnum.INTERNAL_USER.getValue()));
remotePushConcernFanService.enterpriseUserFanSave(user.getId(), userList);
remotePushConcernFanService.enterpriseUserFanSave(user.getCasUserId(), userList);
}
// 创建内部新用户强制关联内部企业
// 创建系统中的用户强制关联内部企业
if (!ArrayUtil.contains(new String[]{
UserTypeEnum.ENTERPRISE_USER.getValue(),
UserTypeEnum.INTERNAL_USER.getValue(),
}, SecurityUtils.getUser().getUserType())) {
List<User> enterpriseUserList = userService.list(Wrappers.<User>lambdaQuery()
.in(User::getUserType, UserTypeEnum.INTERNAL_USER.getValue()));
remotePushConcernFanService.bindConcernEnterpriseUser(user.getId(), enterpriseUserList);
remotePushConcernFanService.bindConcernEnterpriseUser(user.getCasUserId(), enterpriseUserList);
}
return R.ok();
}
@Inner(false)
@SysLog("新增外部系统用户")
@PostMapping("/saveExternalUser")
public R saveExternalUser(@RequestBody User externalUser) {
// todo: 使用管理员临时ID,需调整
SecurityUtils.openInterfaceTemporaryLoginSession("1510539584287346688");
externalUser.setPassword(ENCODER.encode(externalUser.getPassword()));
userService.saveUser(externalUser);
return R.ok(externalUser);
}
@Inner
@GetMapping("/selectByUserName/{userName}")
public R selectByUserName(@PathVariable String userName) {
User user = userService.getOne(Wrappers.<User>query().lambda().eq(User::getUserName, userName));
UserVo user = userService.getUserByName(userName);
if (user == null) {
return R.error("该用户不存在,请注册!");
}
@ -181,7 +147,7 @@ public class UserController { @@ -181,7 +147,7 @@ public class UserController {
@SysLog("用户修改")
@PutMapping("/update")
@PreAuthorize("@pms.hasPermission('user_edit')")
public R update(@RequestBody User user) {
public R update(@RequestBody UserVo user) {
userService.saveUser(user);
return R.ok();
}
@ -199,39 +165,6 @@ public class UserController { @@ -199,39 +165,6 @@ public class UserController {
return R.ok();
}
@SysLog("用户信息修改")
@PutMapping("/updateProfile")
@PreAuthorize("@pms.hasPermission('user_edit')")
public R updateProfile(@RequestBody User user) {
userService.update(Wrappers.<User>update().lambda().eq(User::getId, user.getId())
.set(User::getNickName, user.getNickName())
.set(StrUtil.isNotBlank(user.getPhone()), User::getPhone, user.getPhone())
.set(User::getEmail, user.getEmail())
.set(User::getSex, user.getSex()));
return R.ok();
}
@SysLog("用户密码修改")
@PutMapping("/updatePwd")
@PreAuthorize("@pms.hasPermission('user_edit')")
public R updatePwd(User user) {
User originUser = userService.getById(SecurityUtils.getCasUser().getId());
if (originUser != null && StrUtil.equals(ENCODER.encode(user.getPassword()), originUser.getPassword())) {
userService.update(Wrappers.<User>update().lambda().eq(User::getId, originUser.getId()).set(User::getPassword, user.getPassword()));
return R.ok();
} else {
return R.error("原密码有误,请重试");
}
}
@SysLog("用户密码重置")
@PutMapping("/resetPwd")
@PreAuthorize("@pms.hasPermission('user_reset')")
public R resetPwd(@RequestBody User user) {
userService.update(Wrappers.<User>update().lambda().eq(User::getId, user.getId()).set(User::getPassword, ENCODER.encode(user.getNewPassword())));
return R.ok();
}
@SysLog("用户状态更改")
@PutMapping("/changeStatus")
@PreAuthorize("@pms.hasPermission('user_edit')")
@ -244,8 +177,9 @@ public class UserController { @@ -244,8 +177,9 @@ public class UserController {
@ResponseExcel(name = "用户列表", sheets = @Sheet(sheetName = "user_list"))
@GetMapping("/exportUser")
@PreAuthorize("@pms.hasPermission('user_export')")
public List<User> exportUserList() {
return userService.list();
public List<UserVo> exportUserList() {
IPage<UserVo> userIPage = userService.selectUserList(new Page<>(1, 1000), MapUtil.<String, Object>builder().build());
return userIPage.getRecords();
}
@SneakyThrows
@ -257,7 +191,7 @@ public class UserController { @@ -257,7 +191,7 @@ public class UserController {
userService.setCurrentUserTenant(tenantIds);
try {
// 检测切换的多租户下是否已经配置好了基础数据,没配置会导致系统直接404
Set<Menu> menuSet = new HashSet();
Set<Menu> menuSet = new HashSet<>();
SecurityUtils.getRoles().forEach(roleId -> menuSet.addAll(menuService.selectMenuListByRoleId(roleId)));
List<Menu> menuList = menuSet.stream().sorted(Comparator.comparingInt(Menu::getSort)).collect(Collectors.toList());
List<Menu> menus = menuService.buildMenuTree(menuList, "0");
@ -273,14 +207,10 @@ public class UserController { @@ -273,14 +207,10 @@ public class UserController {
@GetMapping("/resetTenant")
@PreAuthorize("@pms.hasPermission('user_edit')")
public R resetTenant() {
User user = userService.getCurrentUserInfo();
UserVo user = userService.getUserById(SecurityUtils.getCasUser().getId());
userService.getUserAuthority(user);
userService.setCurrentUserTenant(user.getTenantId());
return R.ok();
}
@GetMapping("/synchronousAuthenticationUser")
public R synchronousAuthenticationUser() {
return R.ok(SecurityUtils.getCasUser());
}
}

33
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/UserMapper.java

@ -1,10 +1,13 @@ @@ -1,10 +1,13 @@
package com.cloud.kicc.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cloud.kicc.system.api.entity.Dept;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
*<p>
@ -17,17 +20,29 @@ import java.util.List; @@ -17,17 +20,29 @@ import java.util.List;
public interface UserMapper extends BaseMapper<User> {
/**
* 根据部门名称和部门类型查询用户信息
*
* @param dept 部门信息
* @return 结果
* 获取全部快递员集合
* @return List<User>
*/
User selectUseByDept(Dept dept);
List<UserVo> getCourierUserList();
/**
* 获取全部快递员集合
* @return List<User>
* 查询用户列表
* @param page 分页
* @param param 请求参数
* @return IPage<UserVo>
*/
IPage<UserVo> selectUserList(@Param("page") IPage<Map<String, Object>> page, @Param("param") Map<String, Object> param);
/**
* 根据指定参数查询用户
* @param param 指定参数
*/
UserVo getUserByParam(Map<String, Object> param);
/**
* 根据指定参数查询用户列表
* @param param 指定参数
*/
List<User> getCourierUserList();
List<UserVo> getUserByParamList(Map<String, Object> param);
}

8
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/ISsoUserService.java

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@
package com.cloud.kicc.system.service;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.kicc.system.api.entity.SsoUser;
import com.cloud.kicc.system.api.vo.UserVo;
/**
*<p>
@ -13,4 +15,10 @@ import com.cloud.kicc.system.api.entity.SsoUser; @@ -13,4 +15,10 @@ import com.cloud.kicc.system.api.entity.SsoUser;
*/
public interface ISsoUserService extends IService<SsoUser> {
/**
* 修改SSO跟系统用户
* @param userVo 完整用户信息
*/
void updateSsoUserAndExUser(UserVo userVo);
}

41
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java

@ -1,9 +1,12 @@ @@ -1,9 +1,12 @@
package com.cloud.kicc.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import java.util.List;
import java.util.Map;
/**
*<p>
@ -20,7 +23,7 @@ public interface UserService extends IService<User> { @@ -20,7 +23,7 @@ public interface UserService extends IService<User> {
* @param user 用户信息
* @return 结果
*/
int saveUser(User user);
int saveUser(UserVo user);
/**
* 导入用户数据
@ -28,14 +31,14 @@ public interface UserService extends IService<User> { @@ -28,14 +31,14 @@ public interface UserService extends IService<User> {
* @param isUpdateSupport 是否更新支持如果已存在则进行更新数据
* @return 结果
*/
String importUser(List<User> userList, Boolean isUpdateSupport);
String importUser(List<UserVo> userList, Boolean isUpdateSupport);
/**
* 获取用户权限
* @param user 用户信息
* @return 结果
*/
User getUserAuthority(User user);
UserVo getUserAuthority(UserVo user);
/**
* 设置当前用户多租户信息
@ -46,14 +49,40 @@ public interface UserService extends IService<User> { @@ -46,14 +49,40 @@ public interface UserService extends IService<User> {
/**
* 获取当前用户信息
* @return User
* @return UserVo
*/
User getCurrentUserInfo();
UserVo getCurrentUserInfo();
/**
* 获取全部快递员集合
* @return List<User>
*/
List<User> getCourierUserList();
List<UserVo> getCourierUserList();
/**
* 查询用户列表
* @param page 分页
* @param param 请求参数
* @return IPage<UserVo>
*/
IPage<UserVo> selectUserList(IPage<Map<String, Object>> page, Map<String, Object> param);
/**
* 根据id查询用户
* @param userId 用户ID
*/
UserVo getUserById(String userId);
/**
* 根据名称查询用户
* @param userName 用户名称
*/
UserVo getUserByName(String userName);
/**
* 根据手机号查询用户
* @param phone 手机号
*/
List<UserVo> getUserByPhone(String phone);
}

11
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AppServiceImpl.java

@ -3,13 +3,12 @@ package com.cloud.kicc.system.service.impl; @@ -3,13 +3,12 @@ package com.cloud.kicc.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.RandomUtil;
import cn.javaer.aliyun.sms.SmsClient;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.service.AppService;
import com.cloud.kicc.system.service.UserService;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.CacheConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.system.api.vo.UserVo;
import com.cloud.kicc.system.service.AppService;
import com.cloud.kicc.system.service.UserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
@ -45,9 +44,9 @@ public class AppServiceImpl implements AppService { @@ -45,9 +44,9 @@ public class AppServiceImpl implements AppService {
*/
@Override
public R<Boolean> sendSmsCode(String phone) {
List<User> userList = userService.list(Wrappers.<User>query().lambda().eq(User::getPhone, phone));
List<UserVo> user = userService.getUserByPhone(phone);
if (CollUtil.isEmpty(userList)) {
if (CollUtil.isEmpty(user)) {
log.info("手机号未注册:{}", phone);
return R.ok(Boolean.FALSE, "手机号未注册");
}

32
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/SsoUserServiceImpl.java

@ -1,9 +1,15 @@ @@ -1,9 +1,15 @@
package com.cloud.kicc.system.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.system.api.entity.SsoUser;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.vo.UserVo;
import com.cloud.kicc.system.mapper.SsoUserMapper;
import com.cloud.kicc.system.service.ISsoUserService;
import com.cloud.kicc.system.service.UserService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -17,6 +23,32 @@ import org.springframework.stereotype.Service; @@ -17,6 +23,32 @@ import org.springframework.stereotype.Service;
*/
@Service
@AllArgsConstructor
@DS("mysql_kics")
public class SsoUserServiceImpl extends ServiceImpl<SsoUserMapper, SsoUser> implements ISsoUserService {
private final UserService userService;
@Override
@DSTransactional
public void updateSsoUserAndExUser(UserVo userVo) {
// 修改SSO用户信息
SsoUser ssoUser = new SsoUser()
.setId(userVo.getCasUserId())
.setNickName(userVo.getNickName())
.setPassword(userVo.getPassword())
.setEmail(userVo.getEmail())
.setPhone(userVo.getPhone())
.setSex(userVo.getSex())
.setAvatar(userVo.getAvatar());
ssoUser.setRemarks(userVo.getRemarks());
baseMapper.updateById(ssoUser);
// 修改扩展用户信息
userService.updateById(new User()
.setId(userVo.getId())
.setUserType(userVo.getUserType())
.setMapCenter(userVo.getMapCenter())
.setMapOrientation(userVo.getMapOrientation())
.setStatus(userVo.getStatus()));
}
}

84
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java

@ -1,29 +1,28 @@ @@ -1,29 +1,28 @@
package com.cloud.kicc.system.service.impl;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.data.entity.CasUser;
import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.system.api.entity.Dept;
import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.entity.UserRole;
import com.cloud.kicc.system.api.vo.UserVo;
import com.cloud.kicc.system.mapper.UserMapper;
import com.cloud.kicc.system.service.*;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.OAuth2Request;
@ -33,8 +32,10 @@ import org.springframework.transaction.annotation.Transactional; @@ -33,8 +32,10 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
*<p>
@ -48,30 +49,29 @@ import java.util.stream.Collectors; @@ -48,30 +49,29 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
private final ConfigService configService;
private final UserRoleService userRoleService;
private final DeptService deptService;
private final RoleService roleService;
private final MenuService menuService;
private final TenantService tenantService;
private final TokenStore tokenStore;
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
@Override
@Transactional(rollbackFor = Exception.class)
public int saveUser(User user) {
public int saveUser(UserVo userVo) {
User user = new User();
BeanUtils.copyProperties(userVo, user);
if (StrUtil.isEmptyIfStr(user.getId())) {
// 新增用户信息
int rows = baseMapper.insert(user);
// 新增用户与角色管理
addUserRole(user);
addUserRole(userVo);
return rows;
} else {
// 修改遵守先删后新增规则
userRoleService.remove(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getId()));
userRoleService.remove(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getCasUserId()));
// 新增用户与角色管理
addUserRole(user);
user.setPassword(null);
addUserRole(userVo);
return baseMapper.updateById(user);
}
}
@ -79,9 +79,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us @@ -79,9 +79,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override
@SneakyThrows
public User getUserAuthority(User user) {
public UserVo getUserAuthority(UserVo user) {
// 设置角色列表
List<Role> roleList = roleService.selectMyRolesByUserId(user.getId());
List<Role> roleList = roleService.selectMyRolesByUserId(user.getCasUserId());
// 设置角色列表 (ID)
List<String> roleIds = roleList.stream().map(Role::getId).collect(Collectors.toList());
user.setRoleIds(ArrayUtil.toArray(roleIds, String.class));
@ -101,15 +101,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us @@ -101,15 +101,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
if (tenantCode.isEmpty()) {
throw new CheckedException("该用户下不存在多租户,请联系统管理员进行配置。");
}
user.setTenantId(String.join(",", tenantCode));
user.setTenantIds(ArrayUtil.toArray(tenantCode, String.class));
user.setPermissions(ArrayUtil.toArray(permissions, String.class));
return user;
}
@Override
public User getCurrentUserInfo() {
User user = super.getOne(Wrappers.<User>query().lambda().eq(User::getId, SecurityUtils.getCasUser().getId()));
this.getUserAuthority(user);
public UserVo getCurrentUserInfo() {
UserVo user = getUserById(SecurityUtils.getCasUser().getId());
user.setRoleIds(SecurityUtils.getCasUser().getRoleId().split(","));
user.setTenantIds(SecurityUtils.getCasUser().getTenantId().split(","));
user.setPermissions(SecurityUtils.getUser().getExPermissions());
return user;
}
@ -136,13 +138,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us @@ -136,13 +138,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
* 新增用户角色信息
* @param user 用户对象
*/
public void addUserRole(User user) {
public void addUserRole(UserVo user) {
String[] roles = user.getRoleIds();
if (roles != null) {
// 新增用户与角色管理
for (String roleId : roles) {
UserRole ur = new UserRole();
ur.setUserId(user.getId());
ur.setUserId(user.getCasUserId());
ur.setRoleId(roleId);
userRoleService.save(ur);
}
@ -150,38 +152,38 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us @@ -150,38 +152,38 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
}
@Override
public List<User> getCourierUserList() {
public List<UserVo> getCourierUserList() {
return baseMapper.getCourierUserList();
}
@Override
public String importUser(List<User> userList, Boolean isUpdateSupport) {
if (userList == null || userList.size() == 0) {
public String importUser(List<UserVo> userList, Boolean isUpdateSupport) {
if (userList == null || userList.isEmpty()) {
throw new CheckedException("导入用户数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
String password = configService.getValueByKey("user.initPassword");
for (User user : userList) {
for (UserVo user : userList) {
try {
// 验证是否存在这个用户
User u = baseMapper.selectOne(new QueryWrapper<User>().eq("user_name", user.getUserName()));
if (u == null) {
user.setPassword(ENCODER.encode(password));
UserVo uv = getUserByName(user.getUserName());
User u = new User();
BeanUtils.copyProperties(uv, u);
if (uv == null) {
if (StrUtil.isNotBlank(user.getDeptName())) {
Dept dept = deptService.getOne(new QueryWrapper<Dept>().eq("name", user.getDeptName()));
Dept dept = deptService.getOne(new LambdaQueryWrapper<Dept>().eq(Dept::getName, user.getDeptName()));
if (dept != null) {
user.setDeptId(dept.getDeptId());
user.setDeptName(dept.getName());
}
}
baseMapper.insert(user);
baseMapper.insert(u);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
} else if (isUpdateSupport) {
this.updateById(user);
this.updateById(u);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功");
} else {
@ -203,4 +205,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us @@ -203,4 +205,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
return successMsg.toString();
}
@Override
public IPage<UserVo> selectUserList(IPage<Map<String, Object>> page, Map<String, Object> param) {
return baseMapper.selectUserList(page, param);
}
@Override
public UserVo getUserById(String userId) {
return baseMapper.getUserByParam(MapUtil.<String, Object>builder("casUserId", userId).build());
}
@Override
public UserVo getUserByName(String userName) {
return baseMapper.getUserByParam(MapUtil.<String, Object>builder("userName", userName).build());
}
@Override
public List<UserVo> getUserByPhone(String phone) {
return baseMapper.getUserByParamList(MapUtil.<String, Object>builder("phone", phone).build());
}
}

225
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/UserMapper.xml

@ -2,48 +2,201 @@ @@ -2,48 +2,201 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cloud.kicc.system.mapper.UserMapper">
<resultMap type="com.cloud.kicc.system.api.entity.User" id="UserResult">
<result property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="password" column="password"/>
<result property="nickName" column="nick_name"/>
<result property="phone" column="phone"/>
<result property="sex" column="sex"/>
<result property="avatar" column="avatar"/>
<result property="email" column="email"/>
<result property="deptId" column="dept_id"/>
<result property="mapOrientation" column="map_orientation"/>
<result property="deptName" column="dept_name"/>
<result property="loginIp" column="login_ip"/>
<result property="loginTime" column="login_time"/>
<result property="status" column="status"/>
<result property="createById" column="create_by_id"/>
<result property="createByName" column="create_by_name"/>
<result property="createTime" column="create_time"/>
<result property="updateById" column="update_by_id"/>
<result property="updateByName" column="update_by_name"/>
<result property="updateTime" column="update_time"/>
<result property="remarks" column="remarks"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<select id="getCourierUserList" resultType="com.cloud.kicc.system.api.vo.UserVo">
select
u.id,
csu.id cas_user_id,
csu.user_name,
csu.nick_name,
csu.password,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
csu.login_ip,
csu.login_time,
u.user_type,
u.dept_id,
u.dept_name,
u.status,
u.map_orientation,
u.map_center,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
csu.remarks,
csu.tenant_id,
u.del_flag
from
sys_user u
inner join
remote_cas_sso_user csu
on u.cas_user_id = csu.id
where
(select count(1) from common_map_logistic m where m.courier_user_id = csu.id) = 0
and u.del_flag = 0
and u.user_type = '3'
</select>
<select id="selectUserList" resultType="com.cloud.kicc.system.api.vo.UserVo">
select
u.id,
csu.id cas_user_id,
csu.user_name,
csu.nick_name,
csu.password,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
csu.login_ip,
csu.login_time,
u.user_type,
u.dept_id,
u.dept_name,
u.status,
u.map_orientation,
u.map_center,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
csu.remarks,
csu.tenant_id,
u.del_flag
from
sys_user u
left join
remote_cas_sso_user csu
on u.cas_user_id = csu.id
<where>
u.del_flag = 0
<if test="param.userName != null and param.userName != ''">
and csu.user_name like concat('%', #{param.userName}, '%')
</if>
<if test="param.nickName != null and param.nickName != ''">
and csu.nick_name like concat('%', #{param.nickName}, '%')
</if>
<if test="param.deptId != null and param.deptId != ''">
and u.dept_id = #{param.deptId}
</if>
<if test="param.id != null and param.id != ''">
and u.id = #{param.id}
</if>
<if test="param.casUserId != null and param.casUserId != ''">
and csu.id = #{param.casUserId}
</if>
<if test="param.userType != null and param.userType != ''">
and u.user_type = #{param.userType}
</if>
<if test="(param.beginTime != null and param.beginTime != '') and (param.endTime != null and param.endTime != '')">
and u.create_time between #{param.beginTime} and #{param.endTime}
</if>
</where>
order by u.create_time asc
</select>
<select id="selectUseByDept" resultMap="UserResult">
SELECT a.* FROM sys_user a
LEFT JOIN sys_user_role ur1 ON ur1.user_id = a.user_id
LEFT JOIN sys_role_dept rd1 ON rd1.role_id = ur1.role_id
<select id="getUserByParam" resultType="com.cloud.kicc.system.api.vo.UserVo">
select
u.id,
csu.id cas_user_id,
csu.user_name,
csu.nick_name,
csu.password,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
csu.login_ip,
csu.login_time,
u.user_type,
u.dept_id,
u.dept_name,
u.status,
u.map_orientation,
u.map_center,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
csu.remarks,
csu.tenant_id,
u.del_flag
from
sys_user u
inner join
remote_cas_sso_user csu
on u.cas_user_id = csu.id
<where>
a.del_flag = 0 AND status = 0
<if test="deptName != null and deptName != ''">
AND rd1.dept_name = #{deptName}
u.del_flag = 0
<if test="userName != null and userName != ''">
and csu.user_name = #{userName}
</if>
<if test="nickName != null and nickName != ''">
and csu.nick_name = #{nickName}
</if>
<if test="deptId != null and deptId != ''">
and u.dept_id = #{deptId}
</if>
<if test="id != null and id != ''">
and u.id = #{id}
</if>
<if test="deptType != null and deptType != ''">
AND rd1.dept_type = #{deptType}
<if test="casUserId != null and casUserId != ''">
and csu.id = #{casUserId}
</if>
<if test="userType != null and userType != ''">
and u.user_type = #{userType}
</if>
</where>
limit 1
</select>
<select id="getCourierUserList" resultType="User">
select * from sys_user u where (select count(1) from common_map_logistic m where u.id = m.courier_user_id) = 0 and u.user_type='1'
<select id="getUserByParamList" resultType="com.cloud.kicc.system.api.vo.UserVo">
select
u.id,
csu.id cas_user_id,
csu.user_name,
csu.nick_name,
csu.password,
csu.email,
csu.phone,
csu.sex,
csu.avatar,
csu.login_ip,
csu.login_time,
u.user_type,
u.dept_id,
u.dept_name,
u.status,
u.map_orientation,
u.map_center,
u.create_by_id,
u.create_by_name,
u.create_time,
u.update_by_id,
u.update_by_name,
u.update_time,
csu.remarks,
csu.tenant_id,
u.del_flag
from
sys_user u
inner join
remote_cas_sso_user csu
on u.cas_user_id = csu.id
<where>
u.del_flag = 0
<if test="phone != null and phone != ''">
and csu.phone = #{phone}
</if>
</where>
order by u.create_time asc
</select>
</mapper>

Loading…
Cancel
Save