Files
fys-Multi-tenant/fys-admin/src/main/java/com/fuyuanshen/mp/controller/MPAuthController.java
2025-07-12 13:57:31 +08:00

103 lines
4.0 KiB
Java

package com.fuyuanshen.mp.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.exception.NotLoginException;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.fuyuanshen.app.model.AppSmsLoginBody;
import com.fuyuanshen.app.service.AppLoginService;
import com.fuyuanshen.common.core.constant.SystemConstants;
import com.fuyuanshen.common.core.domain.R;
import com.fuyuanshen.common.core.domain.model.AppLoginUser;
import com.fuyuanshen.common.core.domain.model.LoginUser;
import com.fuyuanshen.common.core.domain.model.RegisterBody;
import com.fuyuanshen.common.core.domain.model.SmsLoginBody;
import com.fuyuanshen.common.core.utils.*;
import com.fuyuanshen.common.encrypt.annotation.ApiEncrypt;
import com.fuyuanshen.common.json.utils.JsonUtils;
import com.fuyuanshen.common.satoken.utils.LoginHelper;
import com.fuyuanshen.common.tenant.helper.TenantHelper;
import com.fuyuanshen.equipment.domain.UserApp;
import com.fuyuanshen.equipment.enums.AppUserTypeEnum;
import com.fuyuanshen.mp.domian.dto.AuthUserDto;
import com.fuyuanshen.mp.service.MPAuthService;
import com.fuyuanshen.mp.service.MPService;
import com.fuyuanshen.system.domain.bo.SysTenantBo;
import com.fuyuanshen.system.domain.vo.SysClientVo;
import com.fuyuanshen.system.domain.vo.SysTenantVo;
import com.fuyuanshen.system.domain.vo.SysUserVo;
import com.fuyuanshen.system.service.ISysClientService;
import com.fuyuanshen.system.service.ISysConfigService;
import com.fuyuanshen.system.service.ISysTenantService;
import com.fuyuanshen.web.domain.vo.LoginTenantVo;
import com.fuyuanshen.web.domain.vo.LoginVo;
import com.fuyuanshen.web.domain.vo.TenantListVo;
import com.fuyuanshen.web.service.IAuthStrategy;
import com.fuyuanshen.web.service.SysRegisterService;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* APP认证
*
* @author Lion Li
*/
@Slf4j
@SaIgnore
@RequiredArgsConstructor
@RestController
@RequestMapping("/mp")
public class MPAuthController {
private final AppLoginService loginService;
private final SysRegisterService registerService;
private final ISysConfigService configService;
private final ISysTenantService tenantService;
private final ISysClientService clientService;
private final MPAuthService mpAuthService;
private final MPService mpService;
@Operation(summary = "小程序登录授权")
@PostMapping(value = "/login")
public ResponseEntity<Object> login(@RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception {
Long phoneNumber = authUser.getPhoneNumber();
// 判断小程序用户是否存在,不存在创建
UserApp mpUser = mpService.getMpUser(phoneNumber);
if (mpUser == null) {
RegisterBody registerBody = new RegisterBody();
registerBody.setUsername(phoneNumber.toString());
registerBody.setUserType(AppUserTypeEnum.XCX_USER.getCode());
registerBody.setTenantId("894078");
registerBody.setPassword("123456");
mpAuthService.register(registerBody);
}
// 去登录
SysClientVo client = clientService.queryByClientId("ca839698e245d60aa2f0e59bd52b34f8");
UserApp user = mpService.loadUserByUsername(phoneNumber.toString());
LoginUser loginUser = mpAuthService.buildLoginUser(user);
LoginVo login = mpAuthService.login(loginUser, client);
// 返回登录信息
return ResponseEntity.ok(login);
}
}