|
@@ -1,14 +1,19 @@
|
|
|
package cn.iocoder.byzs.module.web.service.user;
|
|
package cn.iocoder.byzs.module.web.service.user;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.iocoder.byzs.framework.common.enums.CommonStatusEnum;
|
|
import cn.iocoder.byzs.framework.common.enums.CommonStatusEnum;
|
|
|
|
|
+import cn.iocoder.byzs.framework.common.util.collection.CollectionUtils;
|
|
|
import cn.iocoder.byzs.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.byzs.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.byzs.framework.web.core.util.WebFrameworkUtils;
|
|
import cn.iocoder.byzs.framework.web.core.util.WebFrameworkUtils;
|
|
|
import cn.iocoder.byzs.module.system.controller.admin.invitecode.vo.InviteCodeSaveReqVO;
|
|
import cn.iocoder.byzs.module.system.controller.admin.invitecode.vo.InviteCodeSaveReqVO;
|
|
|
import cn.iocoder.byzs.module.system.controller.admin.userwebexpiretime.vo.UserWebExpireTimeSaveReqVO;
|
|
import cn.iocoder.byzs.module.system.controller.admin.userwebexpiretime.vo.UserWebExpireTimeSaveReqVO;
|
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.invitecode.InviteCodeDO;
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.invitecode.InviteCodeDO;
|
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.permission.RoleDO;
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.permission.RoleDO;
|
|
|
|
|
+import cn.iocoder.byzs.module.system.dal.dataobject.permission.UserRoleDO;
|
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.user.AdminUserDO;
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.user.AdminUserDO;
|
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.userwebexpiretime.UserWebExpireTimeDO;
|
|
import cn.iocoder.byzs.module.system.dal.dataobject.userwebexpiretime.UserWebExpireTimeDO;
|
|
|
|
|
+import cn.iocoder.byzs.module.system.dal.mysql.permission.UserRoleMapper;
|
|
|
import cn.iocoder.byzs.module.system.service.invitecode.InviteCodeService;
|
|
import cn.iocoder.byzs.module.system.service.invitecode.InviteCodeService;
|
|
|
import cn.iocoder.byzs.module.system.service.permission.PermissionService;
|
|
import cn.iocoder.byzs.module.system.service.permission.PermissionService;
|
|
|
import cn.iocoder.byzs.module.system.service.permission.RoleService;
|
|
import cn.iocoder.byzs.module.system.service.permission.RoleService;
|
|
@@ -21,13 +26,12 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.Arrays;
|
|
|
|
|
-import java.util.HashSet;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Set;
|
|
|
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
import static cn.iocoder.byzs.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.byzs.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
|
+import static cn.iocoder.byzs.framework.common.util.collection.CollectionUtils.convertSet;
|
|
|
import static cn.iocoder.byzs.module.system.enums.ErrorCodeConstants.USER_CODE_FAILURE;
|
|
import static cn.iocoder.byzs.module.system.enums.ErrorCodeConstants.USER_CODE_FAILURE;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@@ -44,6 +48,10 @@ public class WebUserInfoServiceImpl {
|
|
|
private RoleService roleService;
|
|
private RoleService roleService;
|
|
|
@Resource
|
|
@Resource
|
|
|
private UserWebExpireTimeService userWebExpireTimeService;
|
|
private UserWebExpireTimeService userWebExpireTimeService;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private WebLoginServiceImpl webLoginServiceImpl;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private UserRoleMapper userRoleMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -60,7 +68,20 @@ public class WebUserInfoServiceImpl {
|
|
|
//补充用户角色
|
|
//补充用户角色
|
|
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
|
|
AdminUserDO user = userService.getUser(userId);
|
|
AdminUserDO user = userService.getUser(userId);
|
|
|
- permissionService.assignUserRole(userId, codeRoleIds);
|
|
|
|
|
|
|
+// permissionService.assignUserRole(userId, codeRoleIds);
|
|
|
|
|
+
|
|
|
|
|
+ // 获得角色拥有角色编号
|
|
|
|
|
+ Set<Long> dbRoleIds = convertSet(userRoleMapper.selectListByUserId(userId),
|
|
|
|
|
+ UserRoleDO::getRoleId);
|
|
|
|
|
+ Collection<Long> createRoleIds = CollUtil.subtract(codeRoleIds, dbRoleIds);
|
|
|
|
|
+ if (!CollectionUtil.isEmpty(createRoleIds)) {
|
|
|
|
|
+ userRoleMapper.insertBatch(CollectionUtils.convertList(createRoleIds, roleId -> {
|
|
|
|
|
+ UserRoleDO entity = new UserRoleDO();
|
|
|
|
|
+ entity.setUserId(userId);
|
|
|
|
|
+ entity.setRoleId(roleId);
|
|
|
|
|
+ return entity;
|
|
|
|
|
+ }));
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 更新邀请码为已使用
|
|
// 更新邀请码为已使用
|
|
|
inviteCodeService.updateInviteCode(new InviteCodeSaveReqVO()
|
|
inviteCodeService.updateInviteCode(new InviteCodeSaveReqVO()
|
|
@@ -69,7 +90,7 @@ public class WebUserInfoServiceImpl {
|
|
|
.setUseUserTenantId(user.getTenantId())
|
|
.setUseUserTenantId(user.getTenantId())
|
|
|
.setUseTime(LocalDateTime.now())
|
|
.setUseTime(LocalDateTime.now())
|
|
|
.setExpireTime(LocalDateTime.now().plusDays(inviteCodeDo.getValidTime()))
|
|
.setExpireTime(LocalDateTime.now().plusDays(inviteCodeDo.getValidTime()))
|
|
|
- .setStatus("2"));
|
|
|
|
|
|
|
+ .setStatus("1"));
|
|
|
|
|
|
|
|
// 更新用户web过期时间
|
|
// 更新用户web过期时间
|
|
|
List<RoleDO> roleList = roleService.getRoleList(codeRoleIds);
|
|
List<RoleDO> roleList = roleService.getRoleList(codeRoleIds);
|
|
@@ -85,13 +106,25 @@ public class WebUserInfoServiceImpl {
|
|
|
UserWebExpireTimeDO userWebExpireTime = userWebExpireTimeService.getUserWebExpireTime(userId);
|
|
UserWebExpireTimeDO userWebExpireTime = userWebExpireTimeService.getUserWebExpireTime(userId);
|
|
|
if (userWebExpireTime != null) {
|
|
if (userWebExpireTime != null) {
|
|
|
if(roleWebMap.contains("course")){
|
|
if(roleWebMap.contains("course")){
|
|
|
- userWebExpireTime.setCourseExpireTime(userWebExpireTime.getCourseExpireTime().plusDays(inviteCodeDo.getValidTime()));
|
|
|
|
|
|
|
+ LocalDateTime courseExpireTime = userWebExpireTime.getCourseExpireTime();
|
|
|
|
|
+ if(courseExpireTime == null){
|
|
|
|
|
+ courseExpireTime = LocalDateTime.now();
|
|
|
|
|
+ }
|
|
|
|
|
+ userWebExpireTime.setCourseExpireTime(courseExpireTime.plusDays(inviteCodeDo.getValidTime()));
|
|
|
}
|
|
}
|
|
|
if(roleWebMap.contains("blockly")){
|
|
if(roleWebMap.contains("blockly")){
|
|
|
- userWebExpireTime.setBlocklyExpireTime(userWebExpireTime.getBlocklyExpireTime().plusDays(inviteCodeDo.getValidTime()));
|
|
|
|
|
|
|
+ LocalDateTime blocklyExpireTime = userWebExpireTime.getBlocklyExpireTime();
|
|
|
|
|
+ if(blocklyExpireTime == null){
|
|
|
|
|
+ blocklyExpireTime = LocalDateTime.now();
|
|
|
|
|
+ }
|
|
|
|
|
+ userWebExpireTime.setBlocklyExpireTime(blocklyExpireTime.plusDays(inviteCodeDo.getValidTime()));
|
|
|
}
|
|
}
|
|
|
if (roleWebMap.contains("aiCourse")){
|
|
if (roleWebMap.contains("aiCourse")){
|
|
|
- userWebExpireTime.setAiCourseExpireTime(userWebExpireTime.getAiCourseExpireTime().plusDays(inviteCodeDo.getValidTime()));
|
|
|
|
|
|
|
+ LocalDateTime aiCourseExpireTime = userWebExpireTime.getAiCourseExpireTime();
|
|
|
|
|
+ if(aiCourseExpireTime == null){
|
|
|
|
|
+ aiCourseExpireTime = LocalDateTime.now();
|
|
|
|
|
+ }
|
|
|
|
|
+ userWebExpireTime.setAiCourseExpireTime(aiCourseExpireTime.plusDays(inviteCodeDo.getValidTime()));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 更新用户web过期时间
|
|
// 更新用户web过期时间
|
|
@@ -115,18 +148,39 @@ public class WebUserInfoServiceImpl {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 中文年月日格式
|
|
|
|
|
+ private static final DateTimeFormatter CHINESE_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
|
|
|
|
|
+
|
|
|
public WebUserVO getUserInfo(Long userId) {
|
|
public WebUserVO getUserInfo(Long userId) {
|
|
|
AdminUserDO user = userService.getUser(userId);
|
|
AdminUserDO user = userService.getUser(userId);
|
|
|
WebUserVO webUserVO = BeanUtils.toBean(user, WebUserVO.class);
|
|
WebUserVO webUserVO = BeanUtils.toBean(user, WebUserVO.class);
|
|
|
|
|
|
|
|
|
|
+ //平台角色路由
|
|
|
|
|
+ Set<String> roleRouteSet = webLoginServiceImpl.getRoleRoute(userId);
|
|
|
|
|
+ webUserVO.setRoleRouteSet(roleRouteSet);
|
|
|
|
|
+
|
|
|
|
|
+ //是否是注册用户
|
|
|
|
|
+ List<InviteCodeDO> inviteCodes = inviteCodeService.getInviteCodeByUserId(userId);
|
|
|
|
|
+ webUserVO.setIsRegister(!inviteCodes.isEmpty());
|
|
|
|
|
+ if (inviteCodes.isEmpty()) {
|
|
|
|
|
+ return webUserVO;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
UserWebExpireTimeDO userWebExpireTime = userWebExpireTimeService.getUserWebExpireTime(userId);
|
|
UserWebExpireTimeDO userWebExpireTime = userWebExpireTimeService.getUserWebExpireTime(userId);
|
|
|
if (userWebExpireTime != null) {
|
|
if (userWebExpireTime != null) {
|
|
|
- webUserVO.setCourseExpireTime(userWebExpireTime.getCourseExpireTime());
|
|
|
|
|
- webUserVO.setBlocklyExpireTime(userWebExpireTime.getBlocklyExpireTime());
|
|
|
|
|
- webUserVO.setAiCourseExpireTime(userWebExpireTime.getAiCourseExpireTime());
|
|
|
|
|
|
|
+ // 将LocalDateTime格式化为中文年月日字符串
|
|
|
|
|
+ if (userWebExpireTime.getCourseExpireTime() != null) {
|
|
|
|
|
+ webUserVO.setCourseExpireTime(userWebExpireTime.getCourseExpireTime());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (userWebExpireTime.getBlocklyExpireTime() != null) {
|
|
|
|
|
+ webUserVO.setBlocklyExpireTime(userWebExpireTime.getBlocklyExpireTime());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (userWebExpireTime.getAiCourseExpireTime() != null) {
|
|
|
|
|
+ webUserVO.setAiCourseExpireTime(userWebExpireTime.getAiCourseExpireTime());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 用户id
|
|
// 用户id
|
|
|
return webUserVO;
|
|
return webUserVO;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+}
|