policeSecurity/policeSecurityServer/src/main/java/com/changhu/enums/handler/ManagementPoliceUnitLogin.java

79 lines
3.2 KiB
Java

package com.changhu.enums.handler;
import cn.dev33.satoken.stp.SaTokenInfo;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.toolkit.Db;
import com.changhu.common.annotation.UserType;
import com.changhu.common.db.enums.IsEnable;
import com.changhu.common.enums.ResultCode;
import com.changhu.common.exception.MessageException;
import com.changhu.common.pojo.vo.TokenInfo;
import com.changhu.common.utils.RsaUtil;
import com.changhu.common.utils.UserUtil;
import com.changhu.common.utils.ValidatorUtil;
import com.changhu.module.management.pojo.entity.ManagementPoliceUnitUser;
import com.changhu.module.management.pojo.entity.PoliceUnit;
import com.changhu.pojo.params.ManagementPoliceUnitLoginParams;
import com.changhu.support.mybatisplus.pojo.entity.BaseEntity;
/**
* @author 20252
* @createTime 2024/9/2 下午4:52
* @desc ManagementPoliceUnitLogin...
*/
public class ManagementPoliceUnitLogin extends AbstractLoginHandler {
public static final ManagementPoliceUnitLogin instance = new ManagementPoliceUnitLogin();
private ManagementPoliceUnitLogin() {
}
@Override
public TokenInfo login(JSONObject jsonObject) {
ManagementPoliceUnitLoginParams managementPoliceUnitLoginParams = jsonObject.to(ManagementPoliceUnitLoginParams.class);
ValidatorUtil.manual(managementPoliceUnitLoginParams);
String accountOrTelephone = managementPoliceUnitLoginParams.getAccountOrTelephone();
String password = RsaUtil.decrypt(managementPoliceUnitLoginParams.getPassword());
//查看 账号/手机号 是否存在
ManagementPoliceUnitUser managementPoliceUnitUser = Db.lambdaQuery(ManagementPoliceUnitUser.class)
.eq(ManagementPoliceUnitUser::getAccount, accountOrTelephone)
.or()
.eq(ManagementPoliceUnitUser::getTelephone, accountOrTelephone)
.oneOpt()
.orElseThrow(() -> new MessageException(ResultCode.USER_NOT_FOUND));
//判断用户是否禁用
if (managementPoliceUnitUser.getIsEnable().equals(IsEnable.FALSE)) {
throw new MessageException(ResultCode.USER_IS_DISABLE);
}
//判断单位是否禁用
IsEnable unitEnable = Db.lambdaQuery(PoliceUnit.class)
.eq(BaseEntity::getSnowFlakeId, managementPoliceUnitUser.getPoliceUnitId())
.oneOpt()
.map(PoliceUnit::getIsEnable)
.orElseThrow(() -> new MessageException("单位不存在"));
if (unitEnable.equals(IsEnable.FALSE)) {
throw new MessageException("单位被禁用");
}
//判断密码是否正确
if (!UserUtil.verifyPassWord(password, managementPoliceUnitUser.getSalt(), managementPoliceUnitUser.getPassword())) {
throw new MessageException(ResultCode.PASSWORD_ERROR);
}
//登录
SaTokenInfo saTokenInfo = UserUtil.loginAndTokenInfo(
managementPoliceUnitUser.getSnowFlakeId(),
UserType.MANAGEMENT_POLICE,
managementPoliceUnitUser.getPoliceUnitId()
);
//返回token
return new TokenInfo(saTokenInfo.getTokenName(), saTokenInfo.getTokenValue());
}
}