diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/WxLoginController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/WxLoginController.java index 19b50fa..5a6d458 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/WxLoginController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/WxLoginController.java @@ -4,6 +4,7 @@ import com.agileboot.common.core.dto.ResponseDTO; import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; import com.agileboot.domain.ab98.api.SsoLoginUserinfo; +import com.agileboot.domain.ab98.user.Ab98UserApplicationService; import com.agileboot.domain.qywx.user.QyUserApplicationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -23,6 +24,7 @@ import java.util.Map; @Api(tags = "微信登录接口") public class WxLoginController { private final QyUserApplicationService qyUserApplicationService; + private final Ab98UserApplicationService ab98UserApplicationService; @PostMapping("/logout") @ApiOperation(value = "用户退出登录") @@ -83,7 +85,8 @@ public class WxLoginController { @RequestParam String token, @RequestParam String tel, @RequestParam String vcode, - @RequestParam(required = false) String userid) { + @RequestParam(required = false) String userid, + @RequestParam(required = false) String openid) { try { Ab98ApiUtil.LoginResponse loginResponse = Ab98ApiUtil.verifySmsCode(token, tel, vcode); Ab98ApiUtil.LoginData data = new Ab98ApiUtil.LoginData(); @@ -97,6 +100,12 @@ public class WxLoginController { try { qyUserApplicationService.saveQyUserInfoByAb98(userid, loginResponse.getOutputData(), null); + } catch (Exception e) { + log.error("保存汇邦云用户信息到企业用户失败: ", e); + } + + try { + ab98UserApplicationService.saveAb98User(openid, loginResponse.getOutputData()); } catch (Exception e) { log.error("保存汇邦云用户信息失败: ", e); } @@ -111,7 +120,8 @@ public class WxLoginController { @GetMapping("/tokenLogin") @ApiOperation(value = "通过token登录", notes = "用于快速登录,无需验证码") public ResponseDTO tokenLogin(@RequestParam String token, - @RequestParam(required = false) String userid) { + @RequestParam(required = false) String userid, + @RequestParam(required = false) String openid) { SsoLoginUserinfo loginUserinfo = Ab98ApiUtil.getLoginUserInfoRemote("wxshop", "34164e41f0c6694be6bbbba0dc50c14a", token, ""); Ab98ApiUtil.LoginData data = new Ab98ApiUtil.LoginData(); @@ -128,9 +138,16 @@ public class WxLoginController { try { qyUserApplicationService.saveQyUserInfoByAb98(userid, null, loginUserinfo); + } catch (Exception e) { + log.error("保存汇邦云用户信息到企业用户失败: ", e); + } + + try { + ab98UserApplicationService.saveAb98UserByToken(openid, loginUserinfo); } catch (Exception e) { log.error("保存汇邦云用户信息失败: ", e); } + return ResponseDTO.ok(data); } } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java index 26f3959..a5f81ed 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java @@ -1,6 +1,8 @@ package com.agileboot.domain.ab98.user; import com.agileboot.common.core.page.PageDTO; +import com.agileboot.domain.ab98.api.Ab98ApiUtil; +import com.agileboot.domain.ab98.api.SsoLoginUserinfo; import com.agileboot.domain.common.command.BulkOperationCommand; import com.agileboot.domain.ab98.user.command.AddAb98UserCommand; import com.agileboot.domain.ab98.user.command.UpdateAb98UserCommand; @@ -15,6 +17,7 @@ import java.util.List; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @Service @@ -51,11 +54,80 @@ public class Ab98UserApplicationService { } } - public Ab98UserEntity getByUserId(Long userId) { - return userService.getById(userId); + public Ab98UserEntity getByUserId(String userId) { + return userService.getByUserid(userId); } public Ab98UserEntity getByOpenid(String openid) { return userService.getByOpenid(openid); } + + public void saveAb98User(String openid, Ab98ApiUtil.LoginData loginData) { + Ab98UserEntity ab98UserEntity = getByUserId(loginData.getUserid()); + if (ab98UserEntity != null && + StringUtils.equals(openid, ab98UserEntity.getOpenid()) && + StringUtils.equals(loginData.getName(), ab98UserEntity.getName()) + ) { + UpdateAb98UserCommand command = new UpdateAb98UserCommand(); + command.setAb98UserId(ab98UserEntity.getAb98UserId()); + command.setTel(loginData.getTel()); + command.setSex(loginData.getSex()); + command.setIdnum(loginData.getIdnum()); + command.setIdcardFront(loginData.getIdcard_front()); + command.setIdcardBack(loginData.getIdcard_back()); + command.setFaceImg(loginData.getFace_img()); + command.setAddress(loginData.getAddress()); + command.setRegistered(loginData.isRegistered()); + updateUser(command); + } else { + AddAb98UserCommand command = new AddAb98UserCommand(); + command.setOpenid(openid); + command.setUserid(loginData.getUserid()); + command.setName(loginData.getName()); + command.setTel(loginData.getTel()); + command.setSex(loginData.getSex()); + command.setIdnum(loginData.getIdnum()); + command.setIdcardFront(loginData.getIdcard_front()); + command.setIdcardBack(loginData.getIdcard_back()); + command.setFaceImg(loginData.getFace_img()); + command.setAddress(loginData.getAddress()); + command.setRegistered(loginData.isRegistered()); + addUser(command); + } + } + + + public void saveAb98UserByToken(String openid, SsoLoginUserinfo loginUserinfo) { + Ab98UserEntity ab98UserEntity = getByUserId(String.valueOf(loginUserinfo.getId())); + if (ab98UserEntity != null && + StringUtils.equals(openid, ab98UserEntity.getOpenid()) && + StringUtils.equals(loginUserinfo.getName(), ab98UserEntity.getName()) + ) { + UpdateAb98UserCommand command = new UpdateAb98UserCommand(); + command.setAb98UserId(ab98UserEntity.getAb98UserId()); + command.setTel(loginUserinfo.getPhone()); + command.setSex(loginUserinfo.getSex()); + command.setIdnum(loginUserinfo.getIdCardNo()); + command.setIdcardFront(loginUserinfo.getIdCardFront()); + command.setIdcardBack(loginUserinfo.getIdCardBack()); + command.setFaceImg(loginUserinfo.getFace()); + command.setAddress(loginUserinfo.getAddress()); + command.setRegistered(true); + updateUser(command); + } else { + AddAb98UserCommand command = new AddAb98UserCommand(); + command.setOpenid(openid); + command.setUserid(String.valueOf(loginUserinfo.getId())); + command.setName(loginUserinfo.getName()); + command.setTel(loginUserinfo.getPhone()); + command.setSex(loginUserinfo.getSex()); + command.setIdnum(loginUserinfo.getIdCardNo()); + command.setIdcardFront(loginUserinfo.getIdCardFront()); + command.setIdcardBack(loginUserinfo.getIdCardBack()); + command.setFaceImg(loginUserinfo.getFace()); + command.setAddress(loginUserinfo.getAddress()); + command.setRegistered(true); + addUser(command); + } + } } \ No newline at end of file