feat(用户绑定): 添加企业微信用户与汇邦云用户绑定功能
- 在QyLoginDTO中新增qyUserId和ab98User字段,用于存储绑定信息 - 修改bindQyUser方法返回Ab98UserEntity以便前端展示 - 新增WxLoginController中的bindQyUser接口用于处理绑定请求 - 在PaymentController中完善登录返回信息,包含绑定用户数据
This commit is contained in:
parent
695e70e7a5
commit
1b057f6615
|
@ -10,6 +10,8 @@ import com.agileboot.common.exception.ApiException;
|
||||||
import com.agileboot.common.exception.error.ErrorCode;
|
import com.agileboot.common.exception.error.ErrorCode;
|
||||||
import com.agileboot.common.exception.error.ErrorCode.Client;
|
import com.agileboot.common.exception.error.ErrorCode.Client;
|
||||||
import com.agileboot.common.utils.OpenSignUtil;
|
import com.agileboot.common.utils.OpenSignUtil;
|
||||||
|
import com.agileboot.domain.ab98.user.Ab98UserApplicationService;
|
||||||
|
import com.agileboot.domain.ab98.user.db.Ab98UserEntity;
|
||||||
import com.agileboot.domain.common.dto.QyLoginDTO;
|
import com.agileboot.domain.common.dto.QyLoginDTO;
|
||||||
import com.agileboot.domain.qywx.accessToken.AccessTokenApplicationService;
|
import com.agileboot.domain.qywx.accessToken.AccessTokenApplicationService;
|
||||||
import com.agileboot.domain.qywx.accessToken.db.QyAccessTokenEntity;
|
import com.agileboot.domain.qywx.accessToken.db.QyAccessTokenEntity;
|
||||||
|
@ -68,6 +70,7 @@ public class PaymentController {
|
||||||
private final MenuApplicationService menuApplicationService;
|
private final MenuApplicationService menuApplicationService;
|
||||||
private final PaymentApplicationService paymentApplicationService;
|
private final PaymentApplicationService paymentApplicationService;
|
||||||
private final PaymentOperationLogApplicationService paymentOperationLogApplicationService;
|
private final PaymentOperationLogApplicationService paymentOperationLogApplicationService;
|
||||||
|
private final Ab98UserApplicationService ab98UserApplicationService;
|
||||||
|
|
||||||
// 新增回调接口
|
// 新增回调接口
|
||||||
/**
|
/**
|
||||||
|
@ -199,8 +202,15 @@ public class PaymentController {
|
||||||
OpenidResponse openidResponse = QywxApiUtil.convertToOpenid(qyAccessToken.getAccessToken(), userid);
|
OpenidResponse openidResponse = QywxApiUtil.convertToOpenid(qyAccessToken.getAccessToken(), userid);
|
||||||
|
|
||||||
QyUserEntity qyUserEntity = qyUserApplicationService.getUserByUserIdAndCorpid(userid, corpid);
|
QyUserEntity qyUserEntity = qyUserApplicationService.getUserByUserIdAndCorpid(userid, corpid);
|
||||||
|
Ab98UserEntity ab98User = null;
|
||||||
|
if (qyUserEntity != null && qyUserEntity.getAb98UserId() != null) {
|
||||||
|
ab98User = ab98UserApplicationService.getByAb98UserId(qyUserEntity.getAb98UserId());
|
||||||
|
}
|
||||||
|
|
||||||
return ResponseDTO.ok(new QyLoginDTO(userid, openidResponse.getOpenid(), isCabinetAdmin, qyUserEntity.getName()));
|
return ResponseDTO.ok(new QyLoginDTO(userid, openidResponse.getOpenid(), isCabinetAdmin,
|
||||||
|
qyUserEntity == null ? 0 : qyUserEntity.getId(),
|
||||||
|
qyUserEntity == null ? "" : qyUserEntity.getName(),
|
||||||
|
ab98User));
|
||||||
} catch (RestClientException e) {
|
} catch (RestClientException e) {
|
||||||
log.error("qyLogin失败", e);
|
log.error("qyLogin失败", e);
|
||||||
return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "微信服务调用失败"));
|
return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "微信服务调用失败"));
|
||||||
|
|
|
@ -5,11 +5,14 @@ import com.agileboot.common.exception.ApiException;
|
||||||
import com.agileboot.common.exception.error.ErrorCode;
|
import com.agileboot.common.exception.error.ErrorCode;
|
||||||
import com.agileboot.domain.ab98.api.SsoLoginUserinfo;
|
import com.agileboot.domain.ab98.api.SsoLoginUserinfo;
|
||||||
import com.agileboot.domain.ab98.user.Ab98UserApplicationService;
|
import com.agileboot.domain.ab98.user.Ab98UserApplicationService;
|
||||||
|
import com.agileboot.domain.ab98.user.command.BindQyUserCommand;
|
||||||
|
import com.agileboot.domain.ab98.user.db.Ab98UserEntity;
|
||||||
import com.agileboot.domain.qywx.user.QyUserApplicationService;
|
import com.agileboot.domain.qywx.user.QyUserApplicationService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import com.agileboot.domain.ab98.api.Ab98ApiUtil;
|
import com.agileboot.domain.ab98.api.Ab98ApiUtil;
|
||||||
|
|
||||||
|
@ -25,6 +28,7 @@ import java.util.Map;
|
||||||
public class WxLoginController {
|
public class WxLoginController {
|
||||||
private final QyUserApplicationService qyUserApplicationService;
|
private final QyUserApplicationService qyUserApplicationService;
|
||||||
private final Ab98UserApplicationService ab98UserApplicationService;
|
private final Ab98UserApplicationService ab98UserApplicationService;
|
||||||
|
private final Ab98UserApplicationService userApplicationService;
|
||||||
|
|
||||||
@PostMapping("/logout")
|
@PostMapping("/logout")
|
||||||
@ApiOperation(value = "用户退出登录")
|
@ApiOperation(value = "用户退出登录")
|
||||||
|
@ -152,4 +156,14 @@ public class WxLoginController {
|
||||||
|
|
||||||
return ResponseDTO.ok(data);
|
return ResponseDTO.ok(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/bindQyUser")
|
||||||
|
@ApiOperation(value = "绑定汇邦云", notes = "通过姓名身份证绑定汇邦云")
|
||||||
|
public ResponseDTO<Ab98UserEntity> bindQyUser(@RequestBody BindQyUserCommand command) {
|
||||||
|
if (command == null || command.getQyUserId() == null || StringUtils.isBlank(command.getName()) || StringUtils.isBlank(command.getIdNum())) {
|
||||||
|
return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "参数错误"));
|
||||||
|
}
|
||||||
|
Ab98UserEntity ab98User = userApplicationService.bindQyUser(command);
|
||||||
|
return ResponseDTO.ok(ab98User);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,7 +177,7 @@ public class Ab98UserApplicationService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void bindQyUser(BindQyUserCommand bindQyUserCommand) {
|
public Ab98UserEntity bindQyUser(BindQyUserCommand bindQyUserCommand) {
|
||||||
QyUserEntity qyUser = qyUserService.getById(bindQyUserCommand.getQyUserId());
|
QyUserEntity qyUser = qyUserService.getById(bindQyUserCommand.getQyUserId());
|
||||||
if (qyUser == null) {
|
if (qyUser == null) {
|
||||||
throw new ApiException(ErrorCode.Internal.INTERNAL_ERROR, "企业微信用户不存在");
|
throw new ApiException(ErrorCode.Internal.INTERNAL_ERROR, "企业微信用户不存在");
|
||||||
|
@ -186,7 +186,7 @@ public class Ab98UserApplicationService {
|
||||||
Ab98UserEntity ab98UserEntity = userService.getByIdnum(bindQyUserCommand.getIdNum());
|
Ab98UserEntity ab98UserEntity = userService.getByIdnum(bindQyUserCommand.getIdNum());
|
||||||
if (ab98UserEntity != null && StringUtils.equals(ab98UserEntity.getName(), bindQyUserCommand.getName())) {
|
if (ab98UserEntity != null && StringUtils.equals(ab98UserEntity.getName(), bindQyUserCommand.getName())) {
|
||||||
saveQyUserInfoByAb98(qyUser, ab98UserEntity);
|
saveQyUserInfoByAb98(qyUser, ab98UserEntity);
|
||||||
return;
|
return ab98UserEntity;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ab98UserDto ab98UserDto = Ab98ApiUtil.pullUserInfoByIdnum("wxshop", "34164e41f0c6694be6bbbba0dc50c14a", bindQyUserCommand.getIdNum());
|
Ab98UserDto ab98UserDto = Ab98ApiUtil.pullUserInfoByIdnum("wxshop", "34164e41f0c6694be6bbbba0dc50c14a", bindQyUserCommand.getIdNum());
|
||||||
|
@ -201,7 +201,9 @@ public class Ab98UserApplicationService {
|
||||||
Ab98UserModel model = userModelFactory.create();
|
Ab98UserModel model = userModelFactory.create();
|
||||||
model.loadAddCommand(addAb98UserCommand);
|
model.loadAddCommand(addAb98UserCommand);
|
||||||
model.insert();
|
model.insert();
|
||||||
saveQyUserInfoByAb98(qyUser, model.selectById());
|
ab98UserEntity = model.selectById();
|
||||||
|
saveQyUserInfoByAb98(qyUser, ab98UserEntity);
|
||||||
|
return ab98UserEntity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.agileboot.domain.common.dto;
|
package com.agileboot.domain.common.dto;
|
||||||
|
|
||||||
|
import com.agileboot.domain.ab98.user.db.Ab98UserEntity;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -10,5 +11,8 @@ public class QyLoginDTO {
|
||||||
private String userid;
|
private String userid;
|
||||||
private String openid;
|
private String openid;
|
||||||
private Integer isCabinetAdmin;
|
private Integer isCabinetAdmin;
|
||||||
|
private Integer qyUserId;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
private Ab98UserEntity ab98User;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue