|
@@ -3,14 +3,20 @@ package com.backendsys.modules.material.service.impl;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.backendsys.exception.CustException;
|
|
|
import com.backendsys.modules.common.config.redis.utils.RedisUtil;
|
|
|
+import com.backendsys.modules.common.config.security.entity.SecurityUserInfo;
|
|
|
import com.backendsys.modules.common.config.security.utils.CaptchaUtil;
|
|
|
+import com.backendsys.modules.common.config.security.utils.JwtUtil;
|
|
|
import com.backendsys.modules.common.config.security.utils.LockStatusUtil;
|
|
|
import com.backendsys.modules.common.config.security.utils.SecurityUtil;
|
|
|
import com.backendsys.modules.material.entity.MaterialAudit;
|
|
|
import com.backendsys.modules.material.entity.MaterialUser;
|
|
|
import com.backendsys.modules.material.service.MaterialUserService;
|
|
|
+import com.backendsys.modules.sse.entity.SseResponse;
|
|
|
+import com.backendsys.modules.sse.entity.SseResponseEnum;
|
|
|
+import com.backendsys.modules.sse.utils.SseUtil;
|
|
|
import com.backendsys.modules.system.dao.SysUserDao;
|
|
|
import com.backendsys.modules.system.dao.SysUserInfoDao;
|
|
|
import com.backendsys.modules.system.dao.SysUserRoleDao;
|
|
@@ -20,6 +26,7 @@ import com.backendsys.modules.system.service.SysAuthService;
|
|
|
import com.backendsys.modules.system.service.SysCommonService;
|
|
|
import com.backendsys.modules.system.service.SysUserIntegralService;
|
|
|
import com.backendsys.modules.system.service.SysUserService;
|
|
|
+import com.backendsys.modules.system.utils.UserUtil;
|
|
|
import com.backendsys.utils.response.PageEntity;
|
|
|
import com.backendsys.utils.response.PageInfoResult;
|
|
|
import com.backendsys.utils.v2.PageUtils;
|
|
@@ -40,6 +47,11 @@ import java.util.Map;
|
|
|
@Service
|
|
|
public class MaterialUserServiceImpl implements MaterialUserService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserUtil userUtil;
|
|
|
+ @Autowired
|
|
|
+ private SseUtil sseUtil;
|
|
|
+
|
|
|
@Value("${spring.application.name}")
|
|
|
private String APPLICATION_NAME;
|
|
|
@Value("${tencent.sms.debug}")
|
|
@@ -108,11 +120,11 @@ public class MaterialUserServiceImpl implements MaterialUserService {
|
|
|
public Map<String, Object> auditMaterialUser(MaterialAudit materialAudit) {
|
|
|
|
|
|
// 判断是否为素材用户 / 用户是否存在
|
|
|
- LambdaQueryWrapper<SysUserInfo> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(SysUserInfo::getUser_id, materialAudit.getUser_id());
|
|
|
- wrapper.eq(SysUserInfo::getInvite_code, "Material");
|
|
|
- SysUserInfo user_info_detail = sysUserInfoDao.selectOne(wrapper);
|
|
|
- if (user_info_detail == null) throw new CustException("用户不存在");
|
|
|
+ SysUserInfo entity = new SysUserInfo();
|
|
|
+ entity.setUser_id(materialAudit.getUser_id());
|
|
|
+ entity.setInvite_code("Material");
|
|
|
+ SysUserInfo userInfo = sysUserService.selectUserInfo(entity);
|
|
|
+ if (userInfo == null) throw new CustException("用户不存在");
|
|
|
|
|
|
// 判断用户是否待审核状态 (-1审核拒绝, 1待审核, 2审核通过)
|
|
|
if (materialAudit.getUser_id() == SecurityUtil.getUserId()) throw new CustException("不能审核自己");
|
|
@@ -123,15 +135,19 @@ public class MaterialUserServiceImpl implements MaterialUserService {
|
|
|
if (!role_ids.contains(materialAudit.getRole_id())) throw new CustException("必须指定素材用户角色");
|
|
|
|
|
|
// [DB] 更新用户信息-审核状态/用户状态
|
|
|
- SysUserInfo entity = new SysUserInfo();
|
|
|
- entity.setAudit_status(materialAudit.getAudit_status());
|
|
|
- entity.setStatus(materialAudit.getStatus());
|
|
|
- sysUserInfoDao.update(entity, wrapper);
|
|
|
+ LambdaQueryWrapper<SysUserInfo> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(SysUserInfo::getUser_id, materialAudit.getUser_id());
|
|
|
+ wrapper.eq(SysUserInfo::getInvite_code, "Material");
|
|
|
+ //
|
|
|
+ userInfo.setAudit_status(materialAudit.getAudit_status());
|
|
|
+ userInfo.setAudit_note("素材管理审核通过");
|
|
|
+ userInfo.setStatus(materialAudit.getStatus());
|
|
|
+ sysUserInfoDao.update(userInfo, wrapper);
|
|
|
|
|
|
- // 如果是禁用状态,则清除该用户的登录信息
|
|
|
- if (materialAudit.getStatus() == -1) {
|
|
|
- sysUserService.kickUser(materialAudit.getUser_id());
|
|
|
- }
|
|
|
+// // 如果是禁用状态,则清除该用户的登录信息
|
|
|
+// if (materialAudit.getStatus() == -1) {
|
|
|
+// sysUserService.kickUser(materialAudit.getUser_id());
|
|
|
+// }
|
|
|
|
|
|
// [DB] 更新用户与角色关系 (先删,后增)
|
|
|
LambdaQueryWrapper<SysUserRoleRelation> wrapperRoleRelation = new LambdaQueryWrapper<>();
|
|
@@ -139,6 +155,21 @@ public class MaterialUserServiceImpl implements MaterialUserService {
|
|
|
sysUserRoleRelationDao.delete(wrapperRoleRelation);
|
|
|
sysUserRoleRelationDao.insertBatch(materialAudit.getUser_id(), Arrays.asList(materialAudit.getRole_id()));
|
|
|
|
|
|
+
|
|
|
+ // [2025-08-18] 需求:后台加白后,前台踢掉用户,强制让该用户重新登录;
|
|
|
+ // https://www.tapd.cn/tapd_fe/61244365/story/detail/1161244365001000497
|
|
|
+ sysUserService.kickUser(materialAudit.getUser_id());
|
|
|
+
|
|
|
+// // 重置的过期时间直接给7天
|
|
|
+// Long tokenDurationMilliseconds = userUtil.getTokenDuration(true);
|
|
|
+// Integer tokenDurationHours = Convert.toInt(tokenDurationMilliseconds / 3600000L);
|
|
|
+// // 实时更新缓存: 用户信息
|
|
|
+// SysUserInfo userInfoLasest = sysUserService.selectUserInfo(entity);
|
|
|
+// // 赋加缓存时间 { token_expiration }
|
|
|
+// SysUserInfo userInfoLasestCatch = userUtil.syncUpdateUserCatch(userInfoLasest, tokenDurationHours, true);
|
|
|
+// // 发送SSE消息到前端
|
|
|
+// sseUtil.send(userInfoLasestCatch.getUser_id(), new SseResponse(SseResponseEnum.SYSTEM_USER_UPDATE, userInfoLasestCatch).toJsonStr());
|
|
|
+
|
|
|
return Map.of("user_id", materialAudit.getUser_id());
|
|
|
}
|
|
|
|
|
@@ -187,7 +218,7 @@ public class MaterialUserServiceImpl implements MaterialUserService {
|
|
|
SysUser sysUserDetail = sysUserDao.selectOne(queryWrapper);
|
|
|
if (sysUserDetail != null) {
|
|
|
// [已注册] 返回登录信息 (并且7天免登录)
|
|
|
- SysUserInfo sysUserInfo = sysAuthService.loginSuccess(sysUserDetail.getId(), 1);
|
|
|
+ SysUserInfo sysUserInfo = sysAuthService.loginSuccess(sysUserDetail.getId(), true);
|
|
|
Map<String, Object> response = BeanUtil.beanToMap(sysUserInfo);
|
|
|
response.put("is_register", false);
|
|
|
return response;
|
|
@@ -221,7 +252,7 @@ public class MaterialUserServiceImpl implements MaterialUserService {
|
|
|
sysUserIntegralService.init(registerEntity.getId());
|
|
|
|
|
|
// [DB] 查询用户信息
|
|
|
- SysUserInfo sysUserInfo = sysAuthService.loginSuccess(registerEntity.getId(), 1);
|
|
|
+ SysUserInfo sysUserInfo = sysAuthService.loginSuccess(registerEntity.getId(), true);
|
|
|
Map<String, Object> response = BeanUtil.beanToMap(sysUserInfo);
|
|
|
response.put("is_register", true);
|
|
|
return response;
|