Browse Source

perf: 优化整体推送代码,提高可维护性

master
wangxiang 2 years ago
parent
commit
d40acf3c7e
  1. 7
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java
  2. 39
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/util/SecurityUtils.java
  3. 38
      kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/enums/PushAuditStatusEnum.java
  4. 31
      kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/enums/PushConcernTypeEnum.java
  5. 36
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/enums/UserTypeEnum.java
  6. 10
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushApplicationController.java
  7. 15
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java
  8. 8
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushEnterpriseController.java
  9. 43
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushApplicationServiceImpl.java
  10. 35
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

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

@ -41,12 +41,7 @@ public class KiccUser extends User {
/** /**
* 用户类型 * 用户类型
* { label: '系统管理员', value: '0' }, * {@link com.cloud.kicc.system.api.enums.UserTypeEnum }
* { label: '普通用户', value: '1' },
* { label: '企业用户', value: '2' },
* { label: '收样员', value: '3' },
* { label: '客服', value: '4' },
* { label: '企业内部用户', value: '5' },
*/ */
@Getter @Getter
private String userType; private String userType;

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

@ -1,11 +1,19 @@
package com.cloud.kicc.common.security.util; package com.cloud.kicc.common.security.util;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.CommonConstants;
import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.core.util.SpringContextHolderUtil;
import com.cloud.kicc.common.data.entity.KiccUser; import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@ -70,6 +78,37 @@ public class SecurityUtils {
return roleIds; return roleIds;
} }
/**
* 对外开放接口临时登录会话
* @param userId 用户id
* @return User 用户对象
*/
public User openInterfaceTemporaryLoginSession(String userId){
RemoteUserService remoteUserService = SpringContextHolderUtil.getBean(RemoteUserService.class);
R<User> result = remoteUserService.selectByUserId(userId, SecurityConstants.FROM_IN);
if (result == null || result.getData() == null) {
throw new CheckedException("用户不存在");
}
User user = result.getData();
KiccUser kiccUser = new KiccUser(
user.getId(),
user.getDeptId(),
user.getUserName(),
SecurityConstants.BCRYPT + user.getPassword(),
user.getPhone(),
user.getUserType(),
user.getTenantId(),
true,
true,
true,
StrUtil.equals(user.getStatus(), CommonConstants.STATUS_NORMAL),
AuthorityUtils.createAuthorityList(user.getPermissions())
);
Authentication authentication = new UsernamePasswordAuthenticationToken(kiccUser, "N/A", kiccUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
return user;
}
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(new BCryptPasswordEncoder().encode("123456")); System.out.println(new BCryptPasswordEncoder().encode("123456"));
} }

38
kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/enums/PushAuditStatusEnum.java

@ -0,0 +1,38 @@
package com.cloud.kicc.commonbiz.api.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
*<p>
* 推送审核状态
*</p>
*
* @Author: wangxiang4
* @since: 2023/4/21
*/
@Getter
@RequiredArgsConstructor
public enum PushAuditStatusEnum {
REJECTED(-1,"驳回"),
NOT_APPLIED(0,"未提交"),
UNDER_REVIEW(1,"审核中"),
APPROVED(2,"通过");
/**
*
*/
private final Integer value;
/**
* 描述
*/
private final String description;
}

31
kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/enums/PushConcernTypeEnum.java

@ -0,0 +1,31 @@
package com.cloud.kicc.commonbiz.api.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
*<p>
* 推送关注类型
*</p>
*
* @Author: wangxiang4
* @since: 2023/4/21
*/
@Getter
@RequiredArgsConstructor
public enum PushConcernTypeEnum {
DEFAULT("0","默认类型"),
INTERNAL_COMPANY("1","内部企业");
/**
*
*/
private final String value;
/**
* 描述
*/
private final String description;
}

36
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/enums/UserTypeEnum.java

@ -0,0 +1,36 @@
package com.cloud.kicc.system.api.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
*<p>
* 用户类型枚举
*</p>
*
* @Author: wangxiang4
* @since: 2023/4/21
*/
@Getter
@RequiredArgsConstructor
public enum UserTypeEnum {
ADMIN("0", "系统管理员"),
NORMAL_USER("1", "普通用户"),
ENTERPRISE_USER("2", "企业用户"),
SAMPLE_COLLECTOR("3", "收样员"),
CUSTOMER_SERVICE("4", "客服"),
INTERNAL_USER("5", "企业内部用户");
/**
*
*/
private final String value;
/**
* 描述
*/
private final String description;
}

10
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushApplicationController.java

@ -15,8 +15,10 @@ import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.entity.PushApplication; import com.cloud.kicc.commonbiz.api.entity.PushApplication;
import com.cloud.kicc.commonbiz.api.entity.PushChatMessage; import com.cloud.kicc.commonbiz.api.entity.PushChatMessage;
import com.cloud.kicc.commonbiz.api.entity.PushEnterprise; import com.cloud.kicc.commonbiz.api.entity.PushEnterprise;
import com.cloud.kicc.commonbiz.api.enums.PushAuditStatusEnum;
import com.cloud.kicc.commonbiz.service.IPushApplicationService; import com.cloud.kicc.commonbiz.service.IPushApplicationService;
import com.cloud.kicc.commonbiz.service.IPushEnterpriseService; import com.cloud.kicc.commonbiz.service.IPushEnterpriseService;
import com.cloud.kicc.system.api.enums.UserTypeEnum;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -67,9 +69,11 @@ public class PushApplicationController {
@PostMapping("/save") @PostMapping("/save")
public R save(@Valid @RequestBody PushApplication pushApplication) { public R save(@Valid @RequestBody PushApplication pushApplication) {
// 企业用户需要验证是否进行企业认证 // 企业用户需要验证是否进行企业认证
if (StrUtil.equals(SecurityUtils.getUser().getUserType(), "2") && if (StrUtil.equals(SecurityUtils.getUser().getUserType(), UserTypeEnum.ENTERPRISE_USER.getValue()) &&
iPushEnterpriseService.count(Wrappers.<PushEnterprise>lambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){ iPushEnterpriseService.count(Wrappers.<PushEnterprise>lambdaQuery()
throw new CheckedException("当前企业用户未进行企业认证,请认证后在试!"); .eq(PushEnterprise::getStatus, PushAuditStatusEnum.APPROVED.getValue())
.eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){
throw new CheckedException("该企业用户未进行企业认证,禁止操作!");
} }
pushApplication.setMessageSecret(UUID.randomUUID().toString().replace("-","")); pushApplication.setMessageSecret(UUID.randomUUID().toString().replace("-",""));
iPushApplicationService.save(pushApplication); iPushApplicationService.save(pushApplication);

15
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java

@ -7,8 +7,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants; import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.security.annotation.Inner; import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.entity.*; import com.cloud.kicc.commonbiz.api.entity.*;
import com.cloud.kicc.commonbiz.api.enums.PushAuditStatusEnum;
import com.cloud.kicc.commonbiz.api.enums.PushConcernTypeEnum;
import com.cloud.kicc.commonbiz.service.*; import com.cloud.kicc.commonbiz.service.*;
import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.entity.User;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -70,12 +71,12 @@ public class PushConcernFanController {
public R save(@Valid @RequestBody PushConcernFan pushConcernFan) { public R save(@Valid @RequestBody PushConcernFan pushConcernFan) {
// 关注可以重复申请,后者信息覆盖前者信息需先删除前者的关注数据 // 关注可以重复申请,后者信息覆盖前者信息需先删除前者的关注数据
iPushConcernFanService.remove(Wrappers.<PushConcernFan>lambdaQuery() iPushConcernFanService.remove(Wrappers.<PushConcernFan>lambdaQuery()
.eq(PushConcernFan::getStatus, 0) .in(PushConcernFan::getStatus, PushAuditStatusEnum.NOT_APPLIED.getValue(), PushAuditStatusEnum.UNDER_REVIEW.getValue())
.eq(PushConcernFan::getFanUserId, pushConcernFan.getFanUserId()) .eq(PushConcernFan::getFanUserId, pushConcernFan.getFanUserId())
.eq(PushConcernFan::getConcernUserId, pushConcernFan.getConcernUserId())); .eq(PushConcernFan::getConcernUserId, pushConcernFan.getConcernUserId()));
iPushConcernFanService.save(pushConcernFan); iPushConcernFanService.save(pushConcernFan);
// 同步推送类型 // 同步推送类型
if (pushConcernFan.getStatus() == 1) { if (pushConcernFan.getStatus() == PushAuditStatusEnum.APPROVED.getValue()) {
List<PushType> pushTypes = iPushTypeService.list(Wrappers.<PushType>lambdaQuery().eq(PushType::getCreateById, pushConcernFan.getConcernUserId())); List<PushType> pushTypes = iPushTypeService.list(Wrappers.<PushType>lambdaQuery().eq(PushType::getCreateById, pushConcernFan.getConcernUserId()));
List<PushConcernFanType> pushConcernFanTypes = pushTypes.stream().map(item -> new PushConcernFanType() List<PushConcernFanType> pushConcernFanTypes = pushTypes.stream().map(item -> new PushConcernFanType()
.setName(item.getName()) .setName(item.getName())
@ -113,8 +114,8 @@ public class PushConcernFanController {
PushConcernFan pushConcernFan = new PushConcernFan(); PushConcernFan pushConcernFan = new PushConcernFan();
pushConcernFan.setFanUserId(item.getId()); pushConcernFan.setFanUserId(item.getId());
pushConcernFan.setConcernUserId(innerEnterpriseUserId); pushConcernFan.setConcernUserId(innerEnterpriseUserId);
pushConcernFan.setType("1"); pushConcernFan.setType(PushConcernTypeEnum.INTERNAL_COMPANY.getValue());
pushConcernFan.setStatus(1); pushConcernFan.setStatus(PushAuditStatusEnum.APPROVED.getValue());
iPushConcernFanService.save(pushConcernFan); iPushConcernFanService.save(pushConcernFan);
}); });
return R.ok(); return R.ok();
@ -127,7 +128,7 @@ public class PushConcernFanController {
.set(PushConcernFan::getStatus, status) .set(PushConcernFan::getStatus, status)
.eq(PushConcernFan::getId, id)); .eq(PushConcernFan::getId, id));
// 同步推送类型 // 同步推送类型
if (status == 1) { if (status == PushAuditStatusEnum.APPROVED.getValue()) {
PushConcernFan pushConcernFan = iPushConcernFanService.getById(id); PushConcernFan pushConcernFan = iPushConcernFanService.getById(id);
List<PushType> pushTypes = iPushTypeService.list(Wrappers.<PushType>lambdaQuery() List<PushType> pushTypes = iPushTypeService.list(Wrappers.<PushType>lambdaQuery()
.eq(PushType::getCreateById, pushConcernFan.getConcernUserId())); .eq(PushType::getCreateById, pushConcernFan.getConcernUserId()));
@ -154,7 +155,7 @@ public class PushConcernFanController {
@PutMapping("/rejectAuth/{ids:[\\w,]+}") @PutMapping("/rejectAuth/{ids:[\\w,]+}")
public R<Boolean> rejectAuth(@PathVariable String[] ids) { public R<Boolean> rejectAuth(@PathVariable String[] ids) {
iPushConcernFanService.update(Wrappers.<PushConcernFan>lambdaUpdate() iPushConcernFanService.update(Wrappers.<PushConcernFan>lambdaUpdate()
.set(PushConcernFan::getStatus, -1) .set(PushConcernFan::getStatus, PushAuditStatusEnum.REJECTED.getValue())
.in(PushConcernFan::getId, ids)); .in(PushConcernFan::getId, ids));
return R.ok(true); return R.ok(true);
} }

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

@ -12,7 +12,9 @@ import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.core.exception.CheckedException; import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.security.util.SecurityUtils; import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.entity.PushEnterprise; import com.cloud.kicc.commonbiz.api.entity.PushEnterprise;
import com.cloud.kicc.commonbiz.api.enums.PushAuditStatusEnum;
import com.cloud.kicc.commonbiz.service.IPushEnterpriseService; import com.cloud.kicc.commonbiz.service.IPushEnterpriseService;
import com.cloud.kicc.system.api.enums.UserTypeEnum;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -68,12 +70,12 @@ public class PushEnterpriseController {
@PostMapping("/save") @PostMapping("/save")
public R save(@Valid @RequestBody PushEnterprise pushEnterprise) { public R save(@Valid @RequestBody PushEnterprise pushEnterprise) {
// 限制只能有企业用户进行认证 // 限制只能有企业用户进行认证
if (!StrUtil.equals(SecurityUtils.getUser().getUserType(), "2")) { if (!StrUtil.equals(SecurityUtils.getUser().getUserType(), UserTypeEnum.ENTERPRISE_USER.getValue())) {
throw new CheckedException("当前用户不是企业用户请用企业用户登录后重试!"); throw new CheckedException("当前用户不是企业用户请用企业用户登录后重试!");
} }
if(iPushEnterpriseService.count(Wrappers.<PushEnterprise>lambdaQuery() if(iPushEnterpriseService.count(Wrappers.<PushEnterprise>lambdaQuery()
.eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) > 0) { .eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) > 0) {
throw new CheckedException("当前企业用户下已经存在认证数据!"); throw new CheckedException("企业用户下已经存在认证数据!");
} }
if (StrUtil.isBlank(pushEnterprise.getUserId())) pushEnterprise.setUserId(SecurityUtils.getUser().getId()); if (StrUtil.isBlank(pushEnterprise.getUserId())) pushEnterprise.setUserId(SecurityUtils.getUser().getId());
iPushEnterpriseService.save(pushEnterprise); iPushEnterpriseService.save(pushEnterprise);
@ -98,7 +100,7 @@ public class PushEnterpriseController {
@PutMapping("/rejectAuth/{ids:[\\w,]+}") @PutMapping("/rejectAuth/{ids:[\\w,]+}")
public R<Boolean> rejectAuth(@PathVariable String[] ids) { public R<Boolean> rejectAuth(@PathVariable String[] ids) {
iPushEnterpriseService.update(Wrappers.<PushEnterprise>lambdaUpdate() iPushEnterpriseService.update(Wrappers.<PushEnterprise>lambdaUpdate()
.set(PushEnterprise::getStatus, -1) .set(PushEnterprise::getStatus, PushAuditStatusEnum.REJECTED.getValue())
.in(PushEnterprise::getId, ids)); .in(PushEnterprise::getId, ids));
return R.ok(true); return R.ok(true);
} }

43
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushApplicationServiceImpl.java

@ -1,6 +1,7 @@
package com.cloud.kicc.commonbiz.service.impl; package com.cloud.kicc.commonbiz.service.impl;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.extra.servlet.ServletUtil;
@ -14,10 +15,12 @@ import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.data.entity.KiccUser; import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.util.SecurityUtils; import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.entity.*; import com.cloud.kicc.commonbiz.api.entity.*;
import com.cloud.kicc.commonbiz.api.enums.PushAuditStatusEnum;
import com.cloud.kicc.commonbiz.mapper.PushApplicationMapper; import com.cloud.kicc.commonbiz.mapper.PushApplicationMapper;
import com.cloud.kicc.commonbiz.service.*; import com.cloud.kicc.commonbiz.service.*;
import com.cloud.kicc.commonbiz.util.PushClientUtil; import com.cloud.kicc.commonbiz.util.PushClientUtil;
import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.enums.UserTypeEnum;
import com.cloud.kicc.system.api.feign.RemoteUserService; import com.cloud.kicc.system.api.feign.RemoteUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
@ -55,7 +58,6 @@ public class PushApplicationServiceImpl extends ServiceImpl<PushApplicationMappe
private final IPushBlacklistService iPushBlacklistService; private final IPushBlacklistService iPushBlacklistService;
private final IPushChatMessageService iPushChatMessageService; private final IPushChatMessageService iPushChatMessageService;
private final IPushConcernFanTypeService iPushConcernFanTypeService; private final IPushConcernFanTypeService iPushConcernFanTypeService;
private final RemoteUserService remoteUserService;
private final IPushEnterpriseService iPushEnterpriseService; private final IPushEnterpriseService iPushEnterpriseService;
@Override @Override
@ -65,39 +67,16 @@ public class PushApplicationServiceImpl extends ServiceImpl<PushApplicationMappe
throw new CheckedException("当前推送方用户ID与推送应用密钥必填!"); throw new CheckedException("当前推送方用户ID与推送应用密钥必填!");
} }
R<User> result = remoteUserService.selectByUserId(pushChatMessage.getUserId(), SecurityConstants.FROM_IN); SecurityUtils.openInterfaceTemporaryLoginSession(pushChatMessage.getUserId());
if (result == null || result.getData() == null) { if (!ArrayUtil.contains(new String[]{ UserTypeEnum.ENTERPRISE_USER.getValue(), UserTypeEnum.INTERNAL_USER.getValue() }, SecurityUtils.getUser().getUserType())) {
throw new CheckedException("用户不存在"); throw new CheckedException("该用户不是企业用户,禁止操作!");
} }
// todo: // 待处理需要统一封装公开接口用户信息登录 if (StrUtil.equals(SecurityUtils.getUser().getUserType(), UserTypeEnum.ENTERPRISE_USER.getValue()) &&
User user = result.getData(); iPushEnterpriseService.count(Wrappers.<PushEnterprise>lambdaQuery()
KiccUser kiccUser = new KiccUser( .eq(PushEnterprise::getStatus, PushAuditStatusEnum.APPROVED.getValue())
user.getId(), .eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){
user.getDeptId(), throw new CheckedException("该企业用户未进行企业认证,禁止操作!");
user.getUserName(),
SecurityConstants.BCRYPT + user.getPassword(),
user.getPhone(),
user.getUserType(),
user.getTenantId(),
true,
true,
true,
StrUtil.equals(user.getStatus(), CommonConstants.STATUS_NORMAL),
AuthorityUtils.createAuthorityList(user.getPermissions())
);
Authentication authentication = new UsernamePasswordAuthenticationToken(kiccUser, "N/A", kiccUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
// todo: // 待处理需要使用枚举规范用户类型参数,不好维护
if (!StrUtil.equals(SecurityUtils.getUser().getUserType(), "2") &&
!StrUtil.equals(SecurityUtils.getUser().getUserType(), "5")) {
throw new CheckedException("当前用户不是企业用户,禁止操作!");
}
if (StrUtil.equals(SecurityUtils.getUser().getUserType(), "2") &&
iPushEnterpriseService.count(Wrappers.<PushEnterprise>lambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){
throw new CheckedException("当前企业用户未进行企业认证,请认证后在试!");
} }
PushApplication pushApplication = baseMapper.selectOne(Wrappers.<PushApplication>lambdaQuery() PushApplication pushApplication = baseMapper.selectOne(Wrappers.<PushApplication>lambdaQuery()

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

@ -1,7 +1,9 @@
package com.cloud.kicc.system.controller; package com.cloud.kicc.system.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -21,6 +23,7 @@ import com.cloud.kicc.system.api.entity.Menu;
import com.cloud.kicc.system.api.entity.Role; import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.entity.UserRole; 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.ResultVo;
import com.cloud.kicc.system.service.MenuService; import com.cloud.kicc.system.service.MenuService;
import com.cloud.kicc.system.service.RoleService; import com.cloud.kicc.system.service.RoleService;
@ -92,6 +95,18 @@ public class UserController {
return R.ok(userService.getCurrentUserInfo()); return R.ok(userService.getCurrentUserInfo());
} }
@GetMapping("/getUserTypeList")
public R getUserTypeList() {
List<Map<String, String>> result = CollectionUtil.newArrayList();
for (UserTypeEnum userTypeEnum : UserTypeEnum.values()) {
Map select = MapUtil.<String, String>newHashMap();
select.put("value", userTypeEnum.getValue());
select.put("label", userTypeEnum.getDescription());
result.add(select);
}
return R.ok(result);
}
@GetMapping("/{id:\\w+}") @GetMapping("/{id:\\w+}")
public R getById(@PathVariable("id") String id) { public R getById(@PathVariable("id") String id) {
User user = userService.getById(id); User user = userService.getById(id);
@ -137,24 +152,8 @@ public class UserController {
@SysLog("新增外部系统用户") @SysLog("新增外部系统用户")
@PostMapping("/saveExternalUser") @PostMapping("/saveExternalUser")
public R saveExternalUser(@RequestBody User externalUser) { public R saveExternalUser(@RequestBody User externalUser) {
User user = userService.getById("1510539584287346688"); // todo: 使用管理员临时ID,需调整
userService.getUserAuthority(user); SecurityUtils.openInterfaceTemporaryLoginSession("1510539584287346688");
KiccUser kiccUser = new KiccUser(
user.getId(),
user.getDeptId(),
user.getUserName(),
SecurityConstants.BCRYPT + user.getPassword(),
user.getPhone(),
user.getUserType(),
user.getTenantId(),
true,
true,
true,
StrUtil.equals(user.getStatus(), CommonConstants.STATUS_NORMAL),
AuthorityUtils.createAuthorityList(user.getPermissions())
);
Authentication authentication = new UsernamePasswordAuthenticationToken(kiccUser, "N/A", kiccUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
externalUser.setPassword(ENCODER.encode(externalUser.getPassword())); externalUser.setPassword(ENCODER.encode(externalUser.getPassword()));
userService.saveUser(externalUser); userService.saveUser(externalUser);
return R.ok(externalUser); return R.ok(externalUser);

Loading…
Cancel
Save