Files
apes-Authon-Server/src/main/java/cn/apes/cloud/controller/UserController.java
T
2026-08-09 08:06:26 +08:00

208 lines
7.2 KiB
Java

package cn.apes.cloud.controller;
import cn.apes.commons.Res;
import cn.apes.commons.auth.AuthContext;
import cn.apes.commons.auth.Login;
import cn.apes.cloud.config.TenantSource;
import cn.apes.cloud.domain.dto.LoginDTO;
import cn.apes.cloud.domain.dto.PwdDTO;
import cn.apes.cloud.domain.dto.RegisterDTO;
import cn.apes.cloud.domain.dto.SelectCustomerDTO;
import cn.apes.cloud.domain.dto.UserSearchDTO;
import cn.apes.cloud.domain.dto.EnterpriseCertifyDTO;
import cn.apes.cloud.domain.entity.CustomerInfo;
import cn.apes.cloud.domain.entity.UserInfo;
import cn.apes.cloud.service.impl.UserInfoServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@TenantSource
@RequestMapping("/user")
public class UserController {
@Autowired
UserInfoServiceImpl userInfoService;
@Login
@PostMapping("/saveUserInfo")
public Res saveUserInfo(@RequestBody UserInfo userInfo) {
return userInfoService.saveUserInfo(userInfo);
}
@Login
// @CrossOrigin("*")
@PostMapping("/pageUser")
public Res pageUser(@RequestBody UserSearchDTO searchDTO) {
return userInfoService.pageUser(searchDTO);
}
@PostMapping("/loginPwd")
public Res loginPwd(@RequestBody LoginDTO loginDTO) {
log.info("开始登录了");
return userInfoService.loginPwd(loginDTO);
}
/**
* 用户注册
*/
@PostMapping("/register")
public Res register(@RequestBody RegisterDTO dto) {
return userInfoService.register(dto);
}
@Login
@PostMapping("/resetPwd")
public Res resetPwd(@RequestBody UserInfo userInfo) {
return userInfoService.resetPwd(userInfo);
}
@Login
@GetMapping("/getCurrentUser")
public Res getCurrentUser() {
try {
Object loginInfo = AuthContext.getLoginInfo();
if (loginInfo == null) {
return Res.fail("未登录");
}
return Res.success(loginInfo);
} catch (Exception e) {
return Res.fail("获取用户信息失败");
}
}
@Login
@PostMapping("/editPwd")
public Res editPwd(@RequestBody PwdDTO pwdDTO) {
return userInfoService.editPwd(pwdDTO);
}
@Login
@GetMapping("/getUserByPhone")
public Res getUserByPhone(String phone) {
return userInfoService.getUser(phone);
}
@Login
@GetMapping("/getCustomerUser")
public Res getCustomerUser(Long customerId) {
return userInfoService.getCustomerUser(customerId);
}
/**
* 多客户时用户选择企业
*/
@PostMapping("/selectCustomer")
public Res selectCustomer(@RequestBody SelectCustomerDTO dto) {
return userInfoService.selectCustomer(dto.getToken(), dto.getCustomerId());
}
/**
* 获取当前用户关联的企业列表(用于切换企业场景)
*/
@Login
@GetMapping("/getMyCustomers")
public Res getMyCustomers() {
return userInfoService.getMyCustomers();
}
/**
* 编辑当前用户的个人资料(昵称、头像)
*/
@Login
@PostMapping("/editProfile")
public Res editProfile(@RequestBody UserInfo userInfo) {
return userInfoService.editProfile(userInfo);
}
/**
* 编辑当前企业信息(仅更新当前登录用户的所属企业)
*/
@Login
@PostMapping("/customer/editCurrent")
public Res editCurrentCustomer(@RequestBody CustomerInfo customerInfo) {
return userInfoService.editCurrentCustomer(customerInfo);
}
/**
* 获取当前企业信息(从数据库直接读取,不走Redis缓存)
*/
@Login
@GetMapping("/customer/getCurrent")
public Res getCurrentCustomer() {
return userInfoService.getCurrentCustomerFromDb();
}
/**
* 企业认证:用户提交认证表单,创建客户记录并关联当前用户
* 使用登录返回的 token(无需额外登录态校验)
*/
@PostMapping("/certifyEnterprise")
public Res certifyEnterprise(@RequestBody EnterpriseCertifyDTO dto) {
if (dto == null || cn.hutool.core.util.StrUtil.isBlank(dto.getToken())) {
return Res.fail("token不能为空");
}
CustomerInfo customerInfo = new CustomerInfo();
customerInfo.setCustomerName(dto.getCustomerName());
customerInfo.setLogo(dto.getLogo());
customerInfo.setShortName(dto.getShortName());
customerInfo.setCustomerType(dto.getCustomerType());
customerInfo.setCustomerIdNumber(dto.getCustomerIdNumber());
customerInfo.setLegalName(dto.getLegalName());
customerInfo.setLegalIdFront(dto.getLegalIdFront());
customerInfo.setLegalIdBack(dto.getLegalIdBack());
customerInfo.setAdminName(dto.getAdminName());
customerInfo.setAdminPhone(dto.getAdminPhone());
customerInfo.setAdminIdNumber(dto.getAdminIdNumber());
customerInfo.setResponsibleIdFront(dto.getResponsibleIdFront());
customerInfo.setResponsibleIdBack(dto.getResponsibleIdBack());
customerInfo.setIndustry(dto.getIndustry());
customerInfo.setIndustrySub(dto.getIndustrySub());
customerInfo.setSalesChannel(dto.getSalesChannel());
customerInfo.setIndustryType(dto.getIndustryType());
customerInfo.setProvince(dto.getProvince());
customerInfo.setCity(dto.getCity());
customerInfo.setBusinessLicense(dto.getBusinessLicense());
return userInfoService.certifyEnterprise(dto.getToken(), customerInfo);
}
/**
* 获取当前用户的企业信息(用于重新编辑)
*/
@GetMapping("/getPendingCustomer")
public Res getPendingCustomer(@RequestParam("token") String token) {
return userInfoService.getPendingCustomer(token);
}
/**
* 重新提交企业认证
*/
@PostMapping("/recertifyEnterprise")
public Res recertifyEnterprise(@RequestBody EnterpriseCertifyDTO dto) {
CustomerInfo customerInfo = new CustomerInfo();
customerInfo.setCustomerName(dto.getCustomerName());
customerInfo.setShortName(dto.getShortName());
customerInfo.setCustomerIdNumber(dto.getCustomerIdNumber());
customerInfo.setAdminName(dto.getAdminName());
customerInfo.setAdminPhone(dto.getAdminPhone());
customerInfo.setAdminIdNumber(dto.getAdminIdNumber());
customerInfo.setLegalName(dto.getLegalName());
customerInfo.setLegalIdFront(dto.getLegalIdFront());
customerInfo.setLegalIdBack(dto.getLegalIdBack());
customerInfo.setResponsibleIdFront(dto.getResponsibleIdFront());
customerInfo.setResponsibleIdBack(dto.getResponsibleIdBack());
customerInfo.setLogo(dto.getLogo());
customerInfo.setIndustry(dto.getIndustry());
customerInfo.setIndustrySub(dto.getIndustrySub());
customerInfo.setSalesChannel(dto.getSalesChannel());
customerInfo.setIndustryType(dto.getIndustryType());
customerInfo.setProvince(dto.getProvince());
customerInfo.setCity(dto.getCity());
customerInfo.setBusinessLicense(dto.getBusinessLicense());
return userInfoService.recertifyEnterprise(dto.getToken(), customerInfo);
}
}