联合登陆信息查询代码优化,更优雅的实现

This commit is contained in:
Chopper 2021-12-01 15:21:43 +08:00
parent c224ad568e
commit b0d39324ef
6 changed files with 78 additions and 34 deletions

View File

@ -5,6 +5,7 @@ import cn.lili.common.security.token.Token;
import cn.lili.modules.connect.entity.Connect;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.entity.dto.WechatMPLoginParams;
import cn.lili.modules.member.entity.dto.ConnectQueryDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.naming.NoPermissionException;
@ -103,4 +104,12 @@ public interface ConnectService extends IService<Connect> {
* @return token
*/
Token miniProgramAutoLogin(WechatMPLoginParams params);
/**
* 根据查询dto获取查询对象
*
* @param connectQueryDTO
* @return
*/
Connect queryConnect(ConnectQueryDTO connectQueryDTO);
}

View File

@ -21,6 +21,7 @@ import cn.lili.modules.connect.entity.enums.ConnectEnum;
import cn.lili.modules.connect.mapper.ConnectMapper;
import cn.lili.modules.connect.service.ConnectService;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dto.ConnectQueryDTO;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.member.token.MemberTokenGenerate;
import cn.lili.modules.system.entity.dos.Setting;
@ -232,6 +233,16 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
return memberTokenGenerate.createToken(newMember.getUsername(), true);
}
@Override
public Connect queryConnect(ConnectQueryDTO connectQueryDTO) {
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StringUtils.isNotEmpty(connectQueryDTO.getUserId()), Connect::getUserId, connectQueryDTO.getUserId())
.eq(StringUtils.isNotEmpty(connectQueryDTO.getUnionType()), Connect::getUnionType, connectQueryDTO.getUnionType())
.eq(StringUtils.isNotEmpty(connectQueryDTO.getUnionId()), Connect::getUnionId, connectQueryDTO.getUnionId());
return this.getOne(queryWrapper);
}
/**
* 会员绑定 绑定微信小程序
* <p>

View File

@ -0,0 +1,33 @@
package cn.lili.modules.member.entity.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
/**
* ConnectQueryDTO
*
* @author Chopper
* @version v1.0
* 2021-12-01 14:34
*/
@Data
@Builder
public class ConnectQueryDTO {
/**
* 用户id
*/
private String userId;
/**
* 第三方id
*/
private String unionId;
/**
* 联合登陆类型
*/
private String unionType;
}

View File

@ -21,14 +21,12 @@ import cn.lili.common.vo.PageVO;
import cn.lili.modules.connect.config.ConnectAuthEnum;
import cn.lili.modules.connect.entity.Connect;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.entity.enums.ConnectEnum;
import cn.lili.modules.connect.service.ConnectService;
import cn.lili.common.utils.UuidUtils;
import cn.lili.modules.member.aop.annotation.PointLogPoint;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dto.ManagerMemberEditDTO;
import cn.lili.modules.member.entity.dto.MemberAddDTO;
import cn.lili.modules.member.entity.dto.MemberEditDTO;
import cn.lili.modules.member.entity.dto.MemberPointMessage;
import cn.lili.modules.member.entity.dto.*;
import cn.lili.modules.member.entity.enums.PointTypeEnum;
import cn.lili.modules.member.entity.vo.MemberDistributionVO;
import cn.lili.modules.member.entity.vo.MemberSearchVO;
@ -469,10 +467,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
* @param type 状态
*/
private void loginBindUser(Member member, String unionId, String type) {
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Connect::getUnionId, unionId);
queryWrapper.eq(Connect::getUnionType, type);
Connect connect = connectService.getOne(queryWrapper);
Connect connect = connectService.queryConnect(
ConnectQueryDTO.builder().unionId(unionId).unionType(type).build()
);
if (connect == null) {
connect = new Connect(member.getId(), unionId, type);
connectService.save(connect);
@ -496,11 +493,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
if (connectAuthUser == null) {
return;
}
//检测是否已经绑定过用户
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Connect::getUnionId, connectAuthUser.getUuid());
queryWrapper.eq(Connect::getUnionType, connectType);
Connect connect = connectService.getOne(queryWrapper);
Connect connect = connectService.queryConnect(
ConnectQueryDTO.builder().unionId(connectAuthUser.getUuid()).unionType(connectType).build()
);
if (connect == null) {
connect = new Connect(member.getId(), connectAuthUser.getUuid(), connectType);
connectService.save(connect);
@ -543,9 +538,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
}
//检测是否已经绑定过用户
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Connect::getUnionId, connectAuthUser.getUuid());
queryWrapper.eq(Connect::getUnionType, connectType);
Connect connect = connectService.getOne(queryWrapper);
Connect connect = connectService.queryConnect(
ConnectQueryDTO.builder().unionType(connectType).unionId(connectAuthUser.getUuid()).build()
);
//没有关联则返回true表示可以继续绑定
if (connect == null) {
connectAuthUser.setConnectEnum(authInterface);

View File

@ -11,6 +11,7 @@ import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.modules.connect.entity.Connect;
import cn.lili.modules.connect.entity.enums.ConnectEnum;
import cn.lili.modules.connect.service.ConnectService;
import cn.lili.modules.member.entity.dto.ConnectQueryDTO;
import cn.lili.modules.message.entity.dos.WechatMPMessage;
import cn.lili.modules.message.entity.dos.WechatMessage;
import cn.lili.modules.message.entity.enums.WechatMessageItemEnums;
@ -87,11 +88,9 @@ public class WechatMessageUtil {
return;
}
QueryWrapper<Connect> queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", order.getMemberId());
queryWrapper.eq("union_type", ConnectEnum.WECHAT.name());
Connect connect = connectService.getOne(queryWrapper);
Connect connect = connectService.queryConnect(
ConnectQueryDTO.builder().userId(order.getMemberId()).unionType(ConnectEnum.WECHAT.name()).build()
);
if (connect == null) {
return;
}
@ -147,11 +146,9 @@ public class WechatMessageUtil {
return;
}
QueryWrapper<Connect> queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", order.getMemberId());
queryWrapper.eq("union_type", ConnectEnum.WECHAT_MP_OPEN_ID.name());
Connect connect = connectService.getOne(queryWrapper);
Connect connect = connectService.queryConnect(
ConnectQueryDTO.builder().userId(order.getMemberId()).unionType(ConnectEnum.WECHAT_MP_OPEN_ID.name()).build()
);
if (connect == null) {
return;
}

View File

@ -20,6 +20,7 @@ import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.modules.connect.entity.Connect;
import cn.lili.modules.connect.entity.enums.ConnectEnum;
import cn.lili.modules.connect.service.ConnectService;
import cn.lili.modules.member.entity.dto.ConnectQueryDTO;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.payment.entity.RefundLog;
import cn.lili.modules.payment.kit.CashierSupport;
@ -166,10 +167,9 @@ public class WechatPlugin implements Payment {
public ResultMessage<Object> jsApiPay(HttpServletRequest request, PayParam payParam) {
try {
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Connect::getUserId, UserContext.getCurrentUser().getId())
.eq(Connect::getUnionType, ConnectEnum.WECHAT.name());
Connect connect = connectService.getOne(queryWrapper);
Connect connect = connectService.queryConnect(
ConnectQueryDTO.builder().userId(UserContext.getCurrentUser().getId()).unionType(ConnectEnum.WECHAT.name()).build()
);
if (connect == null) {
return null;
}
@ -359,10 +359,9 @@ public class WechatPlugin implements Payment {
public ResultMessage<Object> mpPay(HttpServletRequest request, PayParam payParam) {
try {
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Connect::getUserId, UserContext.getCurrentUser().getId())
.eq(Connect::getUnionType, ConnectEnum.WECHAT_MP_OPEN_ID.name());
Connect connect = connectService.getOne(queryWrapper);
Connect connect = connectService.queryConnect(
ConnectQueryDTO.builder().userId(UserContext.getCurrentUser().getId()).unionType(ConnectEnum.WECHAT_MP_OPEN_ID.name()).build()
);
if (connect == null) {
return null;
}