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); } }