|
|
@@ -1,10 +1,28 @@
|
|
|
package com.yingpaipay.web.service.impl;
|
|
|
|
|
|
+import cn.dev33.satoken.stp.StpUtil;
|
|
|
+import cn.dev33.satoken.stp.parameter.SaLoginParameter;
|
|
|
+import cn.hutool.crypto.digest.BCrypt;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.yingpaipay.web.domain.bo.AppletLoginBo;
|
|
|
+import com.yingpaipay.web.domain.vo.AppletLoginVo;
|
|
|
import com.yingpaipay.web.service.IAppletAuthService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.common.core.domain.model.LoginUser;
|
|
|
+import org.dromara.common.core.exception.BusinessException;
|
|
|
+import org.dromara.common.core.utils.MessageUtils;
|
|
|
+import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
+import org.dromara.system.domain.SysUser;
|
|
|
+import org.dromara.system.domain.vo.SysClientVo;
|
|
|
+import org.dromara.system.domain.vo.SysUserVo;
|
|
|
+import org.dromara.system.mapper.SysUserMapper;
|
|
|
+import org.dromara.system.service.*;
|
|
|
+import org.dromara.web.service.SysLoginService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
/**
|
|
|
* @Author: Huanyi
|
|
|
* @CreateTime: 2025-11-26
|
|
|
@@ -16,4 +34,44 @@ import org.springframework.stereotype.Service;
|
|
|
@RequiredArgsConstructor
|
|
|
@Slf4j
|
|
|
public class AppletAuthServiceImpl implements IAppletAuthService {
|
|
|
+
|
|
|
+ private final SysUserMapper userMapper;
|
|
|
+
|
|
|
+ private final SysLoginService loginService;
|
|
|
+ private final ISysClientService clientService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AppletLoginVo login(AppletLoginBo bo) {
|
|
|
+
|
|
|
+ List<SysUserVo> userList = userMapper.selectVoList(
|
|
|
+ Wrappers.lambdaQuery(SysUser.class)
|
|
|
+ .eq(SysUser::getPhonenumber, bo.getPhoneNumber())
|
|
|
+ .orderByDesc(SysUser::getUserId)
|
|
|
+ );
|
|
|
+ if (userList.isEmpty()) {
|
|
|
+ throw new BusinessException(MessageUtils.message("applet.auth.notexists"));
|
|
|
+ }
|
|
|
+ for (SysUserVo sysUser : userList) {
|
|
|
+ if (BCrypt.checkpw(bo.getPassword(), sysUser.getPassword())) {
|
|
|
+ SysClientVo client = clientService.queryByClientId(bo.getClientId());
|
|
|
+ LoginUser loginUser = loginService.buildLoginUser(sysUser);
|
|
|
+ loginUser.setClientKey(client.getClientKey());
|
|
|
+ loginUser.setDeviceType(client.getDeviceType());
|
|
|
+ SaLoginParameter model = new SaLoginParameter();
|
|
|
+ model.setDeviceType(client.getDeviceType());
|
|
|
+ // 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置
|
|
|
+ // 例如: 后台用户30分钟过期 app用户1天过期
|
|
|
+ model.setTimeout(client.getTimeout());
|
|
|
+ model.setActiveTimeout(client.getActiveTimeout());
|
|
|
+ model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId());
|
|
|
+ // 生成token
|
|
|
+ LoginHelper.login(loginUser, model);
|
|
|
+ AppletLoginVo vo = new AppletLoginVo();
|
|
|
+ vo.setToken(StpUtil.getTokenValue());
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ throw new BusinessException(MessageUtils.message("applet.auth.passworderror"));
|
|
|
+ }
|
|
|
+
|
|
|
}
|