2025-06-12 13:31:52 +08:00
|
|
|
package com.yupi.springbootinit.service.impl;
|
|
|
|
|
|
2026-03-16 17:15:54 +08:00
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
2025-06-20 15:58:42 +08:00
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
2025-06-12 13:31:52 +08:00
|
|
|
import cn.hutool.crypto.SecureUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
2026-03-16 17:15:54 +08:00
|
|
|
import com.yupi.springbootinit.common.ErrorCode;
|
|
|
|
|
import com.yupi.springbootinit.exception.BusinessException;
|
2025-06-20 15:58:42 +08:00
|
|
|
import com.yupi.springbootinit.mapper.SystemTenantMapper;
|
|
|
|
|
import com.yupi.springbootinit.model.entity.SystemTenant;
|
2025-06-12 13:31:52 +08:00
|
|
|
import com.yupi.springbootinit.model.entity.SystemUsers;
|
|
|
|
|
import com.yupi.springbootinit.mapper.SystemUsersMapper;
|
2026-03-16 17:15:54 +08:00
|
|
|
import com.yupi.springbootinit.model.vo.user.SystemUsersVO;
|
2025-06-12 13:31:52 +08:00
|
|
|
import com.yupi.springbootinit.service.SystemUsersService;
|
2026-03-16 17:15:54 +08:00
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
2025-06-12 13:31:52 +08:00
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
/*
|
|
|
|
|
* @author: ziin
|
|
|
|
|
* @date: 2025/6/11 20:13
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
public class SystemUsersServiceImpl extends ServiceImpl<SystemUsersMapper,SystemUsers> implements SystemUsersService{
|
|
|
|
|
|
|
|
|
|
@Value("${md5.salt}")
|
|
|
|
|
private String MD5_SALT;
|
|
|
|
|
|
2025-06-20 15:58:42 +08:00
|
|
|
@Resource
|
|
|
|
|
private SystemTenantMapper systemTenantMapper;
|
|
|
|
|
|
2025-06-12 13:31:52 +08:00
|
|
|
@Override
|
2025-06-20 15:58:42 +08:00
|
|
|
public SystemUsers getUserByUserName(String username,Long tenantId) {
|
2025-06-12 13:31:52 +08:00
|
|
|
QueryWrapper <SystemUsers> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq("username",username);
|
2025-06-20 15:58:42 +08:00
|
|
|
queryWrapper.eq("tenant_id",tenantId);
|
2025-07-17 16:37:24 +08:00
|
|
|
queryWrapper.eq("deleted",false);
|
2025-06-12 13:31:52 +08:00
|
|
|
return baseMapper.selectOne(queryWrapper);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isPasswordMatch(String rawPassword, String encodedPassword) {
|
|
|
|
|
String s = SecureUtil.md5(MD5_SALT + rawPassword);
|
|
|
|
|
return s.equals(encodedPassword);
|
|
|
|
|
}
|
2025-06-20 15:58:42 +08:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isExpired(Long tendId) {
|
|
|
|
|
SystemTenant systemTenant = systemTenantMapper.selectById(tendId);
|
|
|
|
|
long between = DateUtil.between(systemTenant.getExpireTime(), DateUtil.date(), DateUnit.DAY);
|
|
|
|
|
return between < 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Long getTenantExpiredTime(Long tenantId) {
|
|
|
|
|
SystemTenant systemTenant = systemTenantMapper.selectById(tenantId);
|
|
|
|
|
long between = DateUtil.between(systemTenant.getExpireTime(), DateUtil.date(), DateUnit.SECOND);
|
|
|
|
|
if (between > 0 ) {
|
|
|
|
|
return between;
|
|
|
|
|
}
|
|
|
|
|
return 0L;
|
|
|
|
|
|
|
|
|
|
}
|
2025-06-20 19:22:25 +08:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean checkCrawlRole(Long userId) {
|
|
|
|
|
SystemUsers systemUsers = baseMapper.selectById(userId);
|
|
|
|
|
return systemUsers.getCrawl() == 1;
|
|
|
|
|
}
|
2025-06-25 18:17:23 +08:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean checkbigBrotherlRole(Long userId) {
|
|
|
|
|
SystemUsers systemUsers = baseMapper.selectById(userId);
|
|
|
|
|
return systemUsers.getBigBrother() == 1;
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-03 15:25:33 +08:00
|
|
|
@Override
|
|
|
|
|
public boolean checkAiCHatLoginRole(Long userId) {
|
|
|
|
|
SystemUsers systemUsers = baseMapper.selectById(userId);
|
|
|
|
|
return systemUsers.getAiChat() == 1;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-05 13:57:16 +08:00
|
|
|
@Override
|
|
|
|
|
public boolean checkWebAILoginRole(Long userId) {
|
|
|
|
|
SystemUsers systemUsers = baseMapper.selectById(userId);
|
|
|
|
|
return systemUsers.getWebAi() == 1;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-16 17:15:54 +08:00
|
|
|
@Override
|
|
|
|
|
public SystemUsersVO getCurrentUserInfo() {
|
|
|
|
|
Long userId = StpUtil.getLoginIdAsLong();
|
|
|
|
|
SystemUsers user = baseMapper.selectById(userId);
|
|
|
|
|
if (user == null || Boolean.TRUE.equals(user.getDeleted())) {
|
|
|
|
|
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "用户不存在");
|
|
|
|
|
}
|
|
|
|
|
SystemTenant tenant = systemTenantMapper.selectById(user.getTenantId());
|
|
|
|
|
if (tenant == null || Boolean.TRUE.equals(tenant.getDeleted())) {
|
|
|
|
|
throw new BusinessException(ErrorCode.TENANT_NAME_NOT_EXISTS);
|
|
|
|
|
}
|
|
|
|
|
return buildSystemUsersVO(user, tenant);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SystemUsersVO buildSystemUsersVO(SystemUsers user, SystemTenant tenant) {
|
|
|
|
|
SystemUsersVO userVO = new SystemUsersVO();
|
|
|
|
|
BeanUtil.copyProperties(user, userVO);
|
|
|
|
|
userVO.setTokenName(StpUtil.getTokenName());
|
|
|
|
|
userVO.setTokenValue(StpUtil.getTokenValue());
|
|
|
|
|
userVO.setExpireTime(tenant.getExpireTime());
|
|
|
|
|
userVO.setCrawlExpireTime(tenant.getCrawlExpireTime());
|
|
|
|
|
userVO.setBrotherExpireTime(tenant.getBrotherExpireTime());
|
|
|
|
|
userVO.setAiExpireTime(tenant.getAiExpireTime());
|
|
|
|
|
fillFeatureEnabled(userVO, user);
|
|
|
|
|
return userVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void fillFeatureEnabled(SystemUsersVO userVO, SystemUsers user) {
|
|
|
|
|
userVO.setAiReplayEnabled(isEnabled(user.getAiReplay()));
|
|
|
|
|
userVO.setCrawlEnabled(isEnabled(user.getCrawl()));
|
|
|
|
|
userVO.setBigBrotherEnabled(isEnabled(user.getBigBrother()));
|
|
|
|
|
userVO.setAiChatEnabled(isEnabled(user.getAiChat()));
|
|
|
|
|
userVO.setWebAiEnabled(isEnabled(user.getWebAi()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isEnabled(Byte value) {
|
|
|
|
|
return value != null && value == 1;
|
|
|
|
|
}
|
2025-06-25 18:17:23 +08:00
|
|
|
|
2025-06-12 13:31:52 +08:00
|
|
|
}
|