feat:获取标品token

This commit is contained in:
苏竹红
2025-05-29 18:32:01 +08:00
parent 861ea11bf1
commit 073de9be88
6 changed files with 319 additions and 4 deletions

View File

@@ -0,0 +1,19 @@
package com.cool.store.service;
/**
* @Author suzhuhong
* @Date 2025/5/29 16:34
* @Version 1.0
*/
public interface EnterpriseService {
/**
* 通过手机号获取登录token
* @param mobile
* @return
*/
String getAccessToken(String mobile);
}

View File

@@ -0,0 +1,113 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSON;
import com.cool.store.constants.RedisConstant;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.entity.SysRoleDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.Role;
import com.cool.store.enums.UserStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.SysRoleMapper;
import com.cool.store.service.EnterpriseService;
import com.cool.store.userholder.CurrentUser;
import com.cool.store.utils.RedisUtilPool;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.RandomNumberGenerator;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.Objects;
/**
* @Author suzhuhong
* @Date 2025/5/29 16:34
* @Version 1.0
*/
@Service
@Slf4j
public class EnterpriseServiceImpl implements EnterpriseService {
@Resource
EnterpriseUserDAO enterpriseUserDAO;
@Resource
SysRoleMapper sysRoleMapper;
@Resource
RedisUtilPool redisUtilPool;
@Value("${mybatis.configuration.variables.enterpriseId}")
private String eid;
@Override
public String getAccessToken(String mobile) {
CurrentUser currentUser = new CurrentUser();
EnterpriseUserDO enterpriseUser = enterpriseUserDAO.selectByMobile(mobile);
if (Objects.isNull(enterpriseUser)){
throw new ServiceException(ErrorCodeEnum.MOBILE_NOT_EXIST);
}
if(UserStatusEnum.WAIT_AUDIT.getCode().equals(enterpriseUser.getUserStatus())){
throw new ServiceException(ErrorCodeEnum.USER_ACCOUNT_WAIT_AUDIT);
}
//账号冻结
if(UserStatusEnum.FREEZE.getCode().equals(enterpriseUser.getUserStatus())){
throw new ServiceException(ErrorCodeEnum.USER_FREEZE);
}
SysRoleDO sysRoleDoByUserId = sysRoleMapper.getHighestPrioritySysRoleDoByUserId(enterpriseUser.getUserId());
if(sysRoleDoByUserId==null){
// 如果没有最高优先级的,给未分配的角色
sysRoleDoByUserId = sysRoleMapper.getRoleByRoleEnum(Role.EMPLOYEE.getRoleEnum());
}
currentUser.setId(enterpriseUser.getId());
currentUser.setUserId(enterpriseUser.getUserId());
currentUser.setAccount(enterpriseUser.getUserId());
currentUser.setDbName("coolcollege_intelligent_10027");
currentUser.setDepartmentIds(enterpriseUser.getDepartments());
currentUser.setRoles(enterpriseUser.getRoles());
currentUser.setLanguage(enterpriseUser.getLanguage());
currentUser.setIsAdmin(enterpriseUser.getIsAdmin());
//设置当前登录人使用的企业相关信息
currentUser.setRoleAuth(sysRoleDoByUserId.getRoleAuth());
currentUser.setSysRoleDO(sysRoleDoByUserId);
currentUser.setEnterpriseId(eid);
currentUser.setEnterpriseName("正新集团");
currentUser.setEnterpriseLogo("https://oss-store.coolcollege.cn/eid/214ac5a3a517472a87268e02a2e6410a/2405/79049713395952825.jpg");
currentUser.setActive(enterpriseUser.getActive());
// 企业开通时间
currentUser.setOpenTime(new Date("2024-05-09 18:54:28"));
currentUser.setAvatar(enterpriseUser.getAvatar());
currentUser.setEmail(enterpriseUser.getEmail());
// 水印增加员工工号
if (StringUtils.isNotEmpty(enterpriseUser.getJobnumber())) {
currentUser.setJobnumber(enterpriseUser.getJobnumber());
}
// 水印增加员工职位
if (StringUtils.isNotEmpty(enterpriseUser.getPosition())) {
currentUser.setPosition(enterpriseUser.getPosition());
}
currentUser.setMobile(enterpriseUser.getMobile());
currentUser.setName(enterpriseUser.getName());
currentUser.setDingCorpId("wpayJeDAAAklx_q1jGhyGUd4yEh8vV_g");
currentUser.setAccessToken(getToken());
currentUser.setAppType("qw_self_dkf");
currentUser.setUnionid(enterpriseUser.getUnionid());
currentUser.setUserType(enterpriseUser.getUserType());
redisUtilPool.setString(RedisConstant.ACCESS_TOKEN_PREFIX + currentUser.getAccessToken(), JSON.toJSONString(currentUser), 24 * 60 * 60);
return currentUser.getAccessToken();
}
public String getToken() {
RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator();
return randomNumberGenerator.nextBytes().toHex();
}
}