From 7bc766fcf4a3bf7a77e71952d37494be6dce934f Mon Sep 17 00:00:00 2001 From: wuxicheng <1441859745@qq.com> Date: Tue, 9 May 2023 17:40:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bnyer/common/core/enums/ResponseEnum.java | 1 + .../com/bnyer/common/core/vo/UserInfoVo.java | 2 +- .../common/security/utils/SecurityUtils.java | 151 +++++++++--------- .../com/bnyer/order/dto/AddVipOrderDto.java | 6 - .../vip/VipOrderPayNotifyConsumer.java | 4 +- .../order/query/VipOrderDetailsQuery.java | 19 +++ .../bnyer/order/service/VipOrderService.java | 9 ++ .../service/impl/VipOrderServiceImpl.java | 31 +++- .../com/bnyer/order/vo/VipOrderDetailsVo.java | 16 ++ .../java/com/bnyer/order/vo/VipOrderVo.java | 2 - .../java/com/bnyer/pay/bo/UnifiedOrderBo.java | 2 +- .../design/strategy/AbstractPayStrategy.java | 42 ++--- .../pay/design/strategy/DYPayStrategy.java | 88 +++++----- .../pay/design/strategy/KSPayStrategy.java | 103 ++++++------ .../pay/design/strategy/WxPayStrategy.java | 5 +- .../com/bnyer/pay/service/PayInfoService.java | 2 +- .../pay/service/impl/PayInfoServiceImpl.java | 2 +- .../service/impl/UnifiedPayServiceImpl.java | 12 +- 18 files changed, 285 insertions(+), 212 deletions(-) create mode 100644 bnyer-services/bnyer-order/src/main/java/com/bnyer/order/query/VipOrderDetailsQuery.java create mode 100644 bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderDetailsVo.java diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/ResponseEnum.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/ResponseEnum.java index 17efcb3..e0fd2ea 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/ResponseEnum.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/enums/ResponseEnum.java @@ -9,6 +9,7 @@ public enum ResponseEnum { //======================系统异常========================, SERVER_ERROR(500, "系统繁忙,请稍候重试!"), + NOT_AUTH(500, "未登录!"), PARAM_ERROR(400, "参数异常!"), NOT_EXIST(110001, "查询为空"), PAY_CONFIG_ERROR(110002, "支付配置未启用或未配置!"), diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/UserInfoVo.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/UserInfoVo.java index 61d6ea2..ae5565d 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/UserInfoVo.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/vo/UserInfoVo.java @@ -81,7 +81,7 @@ public class UserInfoVo implements Serializable { /** * 用户类型 抖音->10;快手->20;微信->30;微信艺术家->40 */ - private int userClientType; + private Integer userClientType; private static final long serialVersionUID = 1L; } diff --git a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java index 8027a6f..c0a9ac3 100644 --- a/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java +++ b/bnyer-common/bnyer-common-security/src/main/java/com/bnyer/common/security/utils/SecurityUtils.java @@ -4,6 +4,7 @@ import com.bnyer.common.core.constant.SecurityConstants; import com.bnyer.common.core.constant.TokenConstants; import com.bnyer.common.core.context.SecurityContextHolder; import com.bnyer.common.core.enums.EnumUserClientType; +import com.bnyer.common.core.enums.ResponseEnum; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.ServletUtils; import com.bnyer.common.core.utils.StringUtils; @@ -34,82 +35,82 @@ public class SecurityUtils */ public static UserInfoVo getUserInfo(){ String platform = ServletUtils.getRequest().getHeader("platform"); - if(StringUtils.isNotEmpty(platform)){ - EnumUserClientType userClientType = EnumUserClientType.getTypeByCode(platform); - switch (userClientType){ - case DU: - UserInfoVo tiktokUserInfo = new UserInfoVo(); - LoginTiktokUser loginTikTokUser = getLoginTikTokUser(); - tiktokUserInfo.setId(loginTikTokUser.getTiktokUserId()); - tiktokUserInfo.setOpenId(loginTikTokUser.getTiktokUserOpenId()); - tiktokUserInfo.setUserName(loginTikTokUser.getTiktokUserName()); - tiktokUserInfo.setIpaddr(loginTikTokUser.getIpaddr()); - tiktokUserInfo.setLastLoginTime(loginTikTokUser.getLoginTime()); - tiktokUserInfo.setImg(loginTikTokUser.getTiktokUser().getImg()); - tiktokUserInfo.setIsVip(loginTikTokUser.getTiktokUser().getIsVip()); - tiktokUserInfo.setCreateTime(loginTikTokUser.getTiktokUser().getCreateTime()); - tiktokUserInfo.setUpdateTime(loginTikTokUser.getTiktokUser().getUpdateTime()); - tiktokUserInfo.setSort(loginTikTokUser.getTiktokUser().getSort()); - tiktokUserInfo.setUserClientType(userClientType.getType()); - return tiktokUserInfo; - case WU: - UserInfoVo wechatUserInfo = new UserInfoVo(); - LoginWechatUser loginWechatUser = getLoginWechatUser(); - wechatUserInfo.setId(loginWechatUser.getWxUserId()); - wechatUserInfo.setOpenId(loginWechatUser.getWxUserOpenId()); - wechatUserInfo.setUserName(loginWechatUser.getWxUserName()); - wechatUserInfo.setIpaddr(loginWechatUser.getIpaddr()); - wechatUserInfo.setLastLoginTime(loginWechatUser.getLoginTime()); - wechatUserInfo.setImg(loginWechatUser.getWxUser().getImg()); - wechatUserInfo.setIsVip(loginWechatUser.getWxUser().getIsVip()); - wechatUserInfo.setCreateTime(loginWechatUser.getWxUser().getCreateTime()); - wechatUserInfo.setUpdateTime(loginWechatUser.getWxUser().getUpdateTime()); - wechatUserInfo.setSort(loginWechatUser.getWxUser().getSort()); - wechatUserInfo.setUserClientType(userClientType.getType()); - return wechatUserInfo; - case KU: - UserInfoVo fhUserInfo = new UserInfoVo(); - LoginFhUser loginFhUser = getLoginFhUser(); - fhUserInfo.setId(loginFhUser.getFhUserId()); - fhUserInfo.setOpenId(loginFhUser.getFhUserOpenId()); - fhUserInfo.setUserName(loginFhUser.getFhUserName()); - fhUserInfo.setIpaddr(loginFhUser.getIpaddr()); - fhUserInfo.setLastLoginTime(loginFhUser.getLoginTime()); - fhUserInfo.setImg(loginFhUser.getFhUser().getImg()); - fhUserInfo.setIsVip(loginFhUser.getFhUser().getIsVip()); - fhUserInfo.setCreateTime(loginFhUser.getFhUser().getCreateTime()); - fhUserInfo.setUpdateTime(loginFhUser.getFhUser().getUpdateTime()); - fhUserInfo.setSort(loginFhUser.getFhUser().getSort()); - fhUserInfo.setUserClientType(userClientType.getType()); - return fhUserInfo; - case WY: - UserInfoVo creatorInfo = new UserInfoVo(); - LoginCreator loginCreator = getLoginCreator(); - creatorInfo.setId(loginCreator.getCreatorId()); - creatorInfo.setPhone(loginCreator.getCreatorPhone()); - creatorInfo.setScanCode(loginCreator.getCreator().getScanCode()); - creatorInfo.setAmt(loginCreator.getCreator().getAmt()); - creatorInfo.setInviteCode(loginCreator.getCreator().getInviteCode()); - creatorInfo.setStatus(loginCreator.getCreator().getStatus()); - creatorInfo.setUrl(loginCreator.getCreator().getUrl()); - creatorInfo.setIsHot(loginCreator.getCreator().getIsHot()); - creatorInfo.setIsShow(loginCreator.getCreator().getIsShow()); - creatorInfo.setIntro(loginCreator.getCreator().getIntro()); - creatorInfo.setUserName(loginCreator.getCreator().getName()); - creatorInfo.setIpaddr(loginCreator.getIpaddr()); - creatorInfo.setLastLoginTime(loginCreator.getLoginTime()); - creatorInfo.setImg(loginCreator.getCreator().getImg()); - creatorInfo.setIsShow(loginCreator.getCreator().getIsShow()); - creatorInfo.setCreateTime(loginCreator.getCreator().getCreateTime()); - creatorInfo.setUpdateTime(loginCreator.getCreator().getUpdateTime()); - creatorInfo.setSort(loginCreator.getCreator().getSort()); - creatorInfo.setUserClientType(userClientType.getType()); - return creatorInfo; - default: - throw new ServiceException("userClientType 未匹配上对应用户类型"); - } + if(StringUtils.isBlank(platform)){ + throw new ServiceException(ResponseEnum.NOT_AUTH); + } + EnumUserClientType userClientType = EnumUserClientType.getTypeByCode(platform); + switch (userClientType){ + case DU: + UserInfoVo tiktokUserInfo = new UserInfoVo(); + LoginTiktokUser loginTikTokUser = getLoginTikTokUser(); + tiktokUserInfo.setId(loginTikTokUser.getTiktokUserId()); + tiktokUserInfo.setOpenId(loginTikTokUser.getTiktokUserOpenId()); + tiktokUserInfo.setUserName(loginTikTokUser.getTiktokUserName()); + tiktokUserInfo.setIpaddr(loginTikTokUser.getIpaddr()); + tiktokUserInfo.setLastLoginTime(loginTikTokUser.getLoginTime()); + tiktokUserInfo.setImg(loginTikTokUser.getTiktokUser().getImg()); + tiktokUserInfo.setIsVip(loginTikTokUser.getTiktokUser().getIsVip()); + tiktokUserInfo.setCreateTime(loginTikTokUser.getTiktokUser().getCreateTime()); + tiktokUserInfo.setUpdateTime(loginTikTokUser.getTiktokUser().getUpdateTime()); + tiktokUserInfo.setSort(loginTikTokUser.getTiktokUser().getSort()); + tiktokUserInfo.setUserClientType(userClientType.getType()); + return tiktokUserInfo; + case WU: + UserInfoVo wechatUserInfo = new UserInfoVo(); + LoginWechatUser loginWechatUser = getLoginWechatUser(); + wechatUserInfo.setId(loginWechatUser.getWxUserId()); + wechatUserInfo.setOpenId(loginWechatUser.getWxUserOpenId()); + wechatUserInfo.setUserName(loginWechatUser.getWxUserName()); + wechatUserInfo.setIpaddr(loginWechatUser.getIpaddr()); + wechatUserInfo.setLastLoginTime(loginWechatUser.getLoginTime()); + wechatUserInfo.setImg(loginWechatUser.getWxUser().getImg()); + wechatUserInfo.setIsVip(loginWechatUser.getWxUser().getIsVip()); + wechatUserInfo.setCreateTime(loginWechatUser.getWxUser().getCreateTime()); + wechatUserInfo.setUpdateTime(loginWechatUser.getWxUser().getUpdateTime()); + wechatUserInfo.setSort(loginWechatUser.getWxUser().getSort()); + wechatUserInfo.setUserClientType(userClientType.getType()); + return wechatUserInfo; + case KU: + UserInfoVo fhUserInfo = new UserInfoVo(); + LoginFhUser loginFhUser = getLoginFhUser(); + fhUserInfo.setId(loginFhUser.getFhUserId()); + fhUserInfo.setOpenId(loginFhUser.getFhUserOpenId()); + fhUserInfo.setUserName(loginFhUser.getFhUserName()); + fhUserInfo.setIpaddr(loginFhUser.getIpaddr()); + fhUserInfo.setLastLoginTime(loginFhUser.getLoginTime()); + fhUserInfo.setImg(loginFhUser.getFhUser().getImg()); + fhUserInfo.setIsVip(loginFhUser.getFhUser().getIsVip()); + fhUserInfo.setCreateTime(loginFhUser.getFhUser().getCreateTime()); + fhUserInfo.setUpdateTime(loginFhUser.getFhUser().getUpdateTime()); + fhUserInfo.setSort(loginFhUser.getFhUser().getSort()); + fhUserInfo.setUserClientType(userClientType.getType()); + return fhUserInfo; + case WY: + UserInfoVo creatorInfo = new UserInfoVo(); + LoginCreator loginCreator = getLoginCreator(); + creatorInfo.setId(loginCreator.getCreatorId()); + creatorInfo.setPhone(loginCreator.getCreatorPhone()); + creatorInfo.setScanCode(loginCreator.getCreator().getScanCode()); + creatorInfo.setAmt(loginCreator.getCreator().getAmt()); + creatorInfo.setInviteCode(loginCreator.getCreator().getInviteCode()); + creatorInfo.setStatus(loginCreator.getCreator().getStatus()); + creatorInfo.setUrl(loginCreator.getCreator().getUrl()); + creatorInfo.setIsHot(loginCreator.getCreator().getIsHot()); + creatorInfo.setIsShow(loginCreator.getCreator().getIsShow()); + creatorInfo.setIntro(loginCreator.getCreator().getIntro()); + creatorInfo.setUserName(loginCreator.getCreator().getName()); + creatorInfo.setIpaddr(loginCreator.getIpaddr()); + creatorInfo.setLastLoginTime(loginCreator.getLoginTime()); + creatorInfo.setImg(loginCreator.getCreator().getImg()); + creatorInfo.setIsShow(loginCreator.getCreator().getIsShow()); + creatorInfo.setCreateTime(loginCreator.getCreator().getCreateTime()); + creatorInfo.setUpdateTime(loginCreator.getCreator().getUpdateTime()); + creatorInfo.setSort(loginCreator.getCreator().getSort()); + creatorInfo.setUserClientType(userClientType.getType()); + return creatorInfo; + default: + throw new ServiceException("userClientType 未匹配上对应用户类型"); } - return null; } //******************************通用获取信息结束********************************************* diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java index 5ece95d..f42a1cc 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java @@ -1,11 +1,9 @@ package com.bnyer.order.dto; -import com.bnyer.common.core.annotation.CustomParamsValidation; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.hibernate.validator.constraints.Range; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -29,8 +27,4 @@ public class AddVipOrderDto implements Serializable { @ApiModelProperty(value="vip表id") private Long vipId; - @NotNull(message = "用户客户端类型不能为空!") - @ApiModelProperty(value="用户客户端类型:10用户-抖音 20用户-快手 30用户-微信 40艺术家-微信") - private Integer userClientType; - } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java index 33b4a2d..9292742 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java @@ -34,6 +34,9 @@ public class VipOrderPayNotifyConsumer implements RocketMQListener { @Resource private VipOrderMapper vipOrderMapper; + @Resource + private VipOrderService vipOrderService; + @Resource private RocketMQTemplate vipRecordMqTemplate; @@ -41,7 +44,6 @@ public class VipOrderPayNotifyConsumer implements RocketMQListener { public void onMessage(String message) { log.info("收到消息:{}", message); //修改订单并添加会员记录 - VipOrderService vipOrderService = SpringUtils.getBean(VipOrderService.class); JSONObject orderObj = JSON.parseObject(message); String orderNo = orderObj.getString("orderNo"); VipOrder vipOrder = vipOrderMapper.selectOne(new LambdaQueryWrapper().eq(VipOrder::getOrderNo, orderNo)); diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/query/VipOrderDetailsQuery.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/query/VipOrderDetailsQuery.java new file mode 100644 index 0000000..d0e17cf --- /dev/null +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/query/VipOrderDetailsQuery.java @@ -0,0 +1,19 @@ +package com.bnyer.order.query; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +/** + * @author :WXC + * @Date :2023/05/09 + * @description : + */ +@Getter +@Setter +@Builder +public class VipOrderDetailsQuery { + @ApiModelProperty(value="订单号") + private String orderNo; +} diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java index 83e70f1..90c10ab 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bnyer.common.core.domain.VipOrder; import com.bnyer.order.dto.QueryVipOrderDto; import com.bnyer.order.dto.AddVipOrderDto; +import com.bnyer.order.query.VipOrderDetailsQuery; +import com.bnyer.order.vo.VipOrderDetailsVo; import com.bnyer.order.vo.VipOrderVo; import java.util.List; @@ -37,6 +39,13 @@ public interface VipOrderService extends IService { */ List getVipOrderList(QueryVipOrderDto dto); + /** + * 查询会员订单详情 + * @param query + * @return + */ + VipOrderDetailsVo queryVipOrder(VipOrderDetailsQuery query); + /** * 更新订单信息 * @param vipOrder diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java index eeadbe1..e1e37cc 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java @@ -11,17 +11,21 @@ import com.bnyer.common.core.enums.*; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.DateUtils; import com.bnyer.common.core.utils.OrderUtil; +import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.bean.EntityConvertUtil; +import com.bnyer.common.core.vo.UserInfoVo; import com.bnyer.common.rocketmq.config.RocketMqConstant; import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.img.api.dto.QueryUserVipDto; import com.bnyer.img.api.remote.RemoteWxMiniService; import com.bnyer.img.api.vo.UserVipInfoVo; import com.bnyer.order.dto.AddVipOrderDto; +import com.bnyer.order.query.VipOrderDetailsQuery; import com.bnyer.order.dto.QueryVipOrderDto; import com.bnyer.order.enums.EnumVipOrderStatus; import com.bnyer.order.mapper.VipOrderMapper; import com.bnyer.order.service.VipOrderService; +import com.bnyer.order.vo.VipOrderDetailsVo; import com.bnyer.order.vo.VipOrderVo; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.producer.SendStatus; @@ -66,6 +70,25 @@ public class VipOrderServiceImpl extends ServiceImpl i return vipOrderVoList; } + /** + * 查询会员订单详情 + * @param query + * @return + */ + @Override + public VipOrderDetailsVo queryVipOrder(VipOrderDetailsQuery query) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotBlank(query.getOrderNo())){ + queryWrapper.eq(VipOrder::getOrderNo,query.getOrderNo()); + } + VipOrder vipOrder = vipOrderMapper.selectOne(queryWrapper); + if (Objects.isNull(vipOrder)){ + throw new ServiceException(ResponseEnum.NOT_EXIST,"会员订单"); + } + VipOrderDetailsVo orderDetailsVo = EntityConvertUtil.copy(vipOrder, VipOrderDetailsVo.class); + return orderDetailsVo; + } + /** * 生成会员订单,返回订单号 @@ -132,7 +155,9 @@ public class VipOrderServiceImpl extends ServiceImpl i * @return */ private VipOrder buildImgVipOrder(UserVipInfoVo userVipInfoVo, AddVipOrderDto addVipOrderDto) { - Long userId = SecurityUtils.getUserId(); + UserInfoVo userInfo = SecurityUtils.getUserInfo(); + Long userId = userInfo.getId(); + Integer userClientType = userInfo.getUserClientType(); VipOrder vipOrder = new VipOrder(); vipOrder.setVipId(userVipInfoVo.getId()); vipOrder.setVipCode(userVipInfoVo.getVipCode()); @@ -153,8 +178,8 @@ public class VipOrderServiceImpl extends ServiceImpl i vipOrder.setEndTime(DateUtils.getDateByType(enumTimeUnitByUnit,nowDate, userVipInfoVo.getValidTimeNum())); //开通的天数 vipOrder.setDays((int) DateUtil.betweenDay(vipOrder.getStartTime(), vipOrder.getEndTime(), true)); - vipOrder.setUserClientType(addVipOrderDto.getUserClientType()); - vipOrder.setOrderNo(OrderUtil.getOrderNo("RV",nowDate, EnumUserClientType.getCodeByType(addVipOrderDto.getUserClientType()),String.valueOf(userId))); + vipOrder.setUserClientType(userClientType); + vipOrder.setOrderNo(OrderUtil.getOrderNo("RV",nowDate, EnumUserClientType.getCodeByType(userClientType),String.valueOf(userId))); vipOrder.setCreateTime(nowDate); return vipOrder; } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderDetailsVo.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderDetailsVo.java new file mode 100644 index 0000000..4f48dfe --- /dev/null +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderDetailsVo.java @@ -0,0 +1,16 @@ +package com.bnyer.order.vo; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author :WXC + * @Date :2023/03/27 + * @description : + */ +@Getter +@Setter +public class VipOrderDetailsVo extends VipOrderVo{ + + +} diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderVo.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderVo.java index cf40fc4..4d8ed14 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderVo.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/vo/VipOrderVo.java @@ -1,7 +1,5 @@ package com.bnyer.order.vo; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/UnifiedOrderBo.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/UnifiedOrderBo.java index 42340fe..6196ffb 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/UnifiedOrderBo.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/UnifiedOrderBo.java @@ -49,7 +49,7 @@ public class UnifiedOrderBo { */ private String goodsSubject; /** - * 商品描述: 会员充值 + * 商品描述: 支付场景名称:会员类型-会员名称 */ private String goodsDesc; } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AbstractPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AbstractPayStrategy.java index 9ade772..9f8142d 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AbstractPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AbstractPayStrategy.java @@ -3,18 +3,17 @@ package com.bnyer.pay.design.strategy; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alipay.api.msg.MsgConstants; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bnyer.common.core.constant.RedisKeyConstant; -import com.bnyer.common.core.domain.PayInfo; import com.bnyer.common.core.enums.EnumPayType; import com.bnyer.common.redis.service.RedissonService; import com.bnyer.pay.dto.PayNotifyCheckDto; -import com.bnyer.pay.mapper.PayInfoMapper; -import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; +import com.bnyer.pay.service.PayInfoService; +import com.bnyer.pay.vo.PayInfoDetailsVo; +import com.github.binarywang.wxpay.bean.notify.WxPayNotifyV3Response; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RLock; +import org.springframework.beans.factory.annotation.Autowired; -import javax.annotation.Resource; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -26,11 +25,15 @@ import java.util.concurrent.TimeUnit; @Slf4j public abstract class AbstractPayStrategy implements IPayStrategy { - @Resource - private PayInfoMapper payInfoMapper; + private static PayInfoService payInfoService; - @Resource - private RedissonService redissonService; + private static RedissonService redissonService; + + @Autowired + public void setBean(PayInfoService payInfoService, RedissonService redissonService) { + AbstractPayStrategy.payInfoService = payInfoService; + AbstractPayStrategy.redissonService = redissonService; + } /** * 校验是否已支付避免重复调用 @@ -38,38 +41,35 @@ public abstract class AbstractPayStrategy implements IPayStrategy { * @return */ public String payNotifyCheck(PayNotifyCheckDto checkDto){ - log.error("回调结果校验开始,支付单号:{}",checkDto.getPayId()); + log.info("回调结果校验开始,支付单号:{}",checkDto.getPayId()); String resultMsg = ""; RLock rLock = redissonService.getRLock(RedisKeyConstant.PAY_NOTIFY_LOCK_KEY + checkDto.getPayId()); try{ if(rLock.tryLock(2L, 10L, TimeUnit.SECONDS)){ - PayInfo payInfo = payInfoMapper.selectOne(new LambdaQueryWrapper().eq(PayInfo::getPayId, checkDto.getPayId()).eq(PayInfo::getIsShow, "1")); - if (Objects.isNull(payInfo)){ - return buildNotifyCheckResultMsg(checkDto.getPayType(),false,"business fail"); - } - log.info("查询到支付订单信息为:{}", JSON.toJSONString(payInfo)); + PayInfoDetailsVo payInfoDetailsVo = payInfoService.queryPayInfo(checkDto.getPayId()); + log.info("查询到支付订单信息为:{}", JSON.toJSONString(payInfoDetailsVo)); //订单中的金额 - String payInfoPayAmount = payInfo.getPayAmount().toString(); + String payInfoPayAmount = payInfoDetailsVo.getPayAmount().toString(); //回调中的金额 String notifyPayAmount = checkDto.getPayAmount(); //对账状态 - Integer singleStatus = payInfo.getSingleStatus(); + Integer singleStatus = payInfoDetailsVo.getSingleStatus(); log.info("回调中的金额:{},订单中的金额:{}",notifyPayAmount,payInfoPayAmount); if (payInfoPayAmount.equals(notifyPayAmount)){ if (Objects.nonNull(singleStatus)){ resultMsg = buildNotifyCheckResultMsg(checkDto.getPayType(),true,checkDto.getMsg()); } }else { - resultMsg = buildNotifyCheckResultMsg(checkDto.getPayType(),false,"business fail"); + resultMsg = buildNotifyCheckResultMsg(checkDto.getPayType(),false,"trade fail"); } }else { log.error("获取锁失败,支付单号:{}",checkDto.getPayId()); - resultMsg = buildNotifyCheckResultMsg(checkDto.getPayType(),false,"business fail"); + resultMsg = buildNotifyCheckResultMsg(checkDto.getPayType(),false,"trade fail"); } }catch (Exception e){ e.printStackTrace(); log.error("回调结果校验失败,支付单号:{}",checkDto.getPayId()); - resultMsg = buildNotifyCheckResultMsg(checkDto.getPayType(),false,"business fail"); + resultMsg = buildNotifyCheckResultMsg(checkDto.getPayType(),false,"trade fail"); }finally { rLock.unlock(); } @@ -86,7 +86,7 @@ public abstract class AbstractPayStrategy implements IPayStrategy { public String buildNotifyCheckResultMsg(EnumPayType payType,boolean isSuccess,String msg){ String result = ""; if (EnumPayType.WX_PAY == payType){ - result = isSuccess?WxPayNotifyResponse.success(msg):WxPayNotifyResponse.fail(msg); + result = isSuccess?WxPayNotifyV3Response.success(msg): WxPayNotifyV3Response.fail(msg); }else if (EnumPayType.ALI_PAY == payType){ result = isSuccess?MsgConstants.SUCCESS:MsgConstants.FAIL; } else if (EnumPayType.KS_PAY == payType) { diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java index 2c2783b..6ecf4fb 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java @@ -173,53 +173,57 @@ public class DYPayStrategy extends AbstractPayStrategy{ //订单信息的json字符串 String message = object.getString("msg"); JSONObject msgJsonObj = JSON.parseObject(message); + log.info("快手支付:统一回调处理,params:{}",message); + if (StringUtils.isBlank(msgSignature)) { + log.info("抖音支付回调参数丢失,payId:{}",object.getString("cp_orderno")); + return super.buildNotifyCheckResultMsg(EnumPayType.DY_PAY,false,"trade fail"); + } //校验回调签名 String signMessage = dyPayUtil.getCallbackSignature(timestamp, nonce, message,token); //签名校验 - if (msgSignature.equals(signMessage)) { - //固定值SUCCESS - String status = msgJsonObj.getString("status"); - //开发者侧的订单号 - String outOrderNo = msgJsonObj.getString("cp_orderno"); - //支付渠道: 1-微信支付,2-支付宝支付,10-抖音支付 - String payChannel = msgJsonObj.getString("way"); - //支付金额,单位为分 - Integer totalAmount = msgJsonObj.getInteger("total_amount"); - //支付渠道侧PC单号,支付页面可见(微信支付宝侧的订单号) - String paymentOrderNo = msgJsonObj.getString("payment_order_no"); - //抖音侧订单号 - String dyOrderId = msgJsonObj.getString("order_id"); - //这里无论回调失败还是成功,都需要都各个业务层去处理相关逻辑 - if("success".equals(status)){ - //处理业务 - PayNotifyCheckDto payNotifyCheckDto = new PayNotifyCheckDto(); - payNotifyCheckDto.setPayType(EnumPayType.DY_PAY); - payNotifyCheckDto.setPayAmount(BaseWxPayResult.fenToYuan(totalAmount)); - payNotifyCheckDto.setPayId(outOrderNo); - payNotifyCheckDto.setMsg("success"); - String notifyCheck = super.payNotifyCheck(payNotifyCheckDto); - if (StringUtils.isNotBlank(notifyCheck)){ - return notifyCheck; - } - log.info("抖音支付回调,交易正常:封装参数修改内部支付单信息"); - EditPayInfoNotifyDto editPayInfoNotifyDto = new EditPayInfoNotifyDto(); - editPayInfoNotifyDto.setPayAmount(MoneyUtil.fenToYuan(String.valueOf(totalAmount))); - editPayInfoNotifyDto.setPayTime(DateUtil.formatDateTime(new Date())); - editPayInfoNotifyDto.setAppId(appId); - editPayInfoNotifyDto.setPayId(outOrderNo); - editPayInfoNotifyDto.setPayNo(dyOrderId); - editPayInfoNotifyDto.setTradeNo(paymentOrderNo); - editPayInfoNotifyDto.setPayChannel(EnumPayChannel.getPayChannelName(payChannel,EnumPayType.DY_PAY)); - payInfoService.editPayInfoNotify(editPayInfoNotifyDto); - //正确处理后返回以下内容格式通知小程序平台不再持续回调 - return super.buildNotifyCheckResultMsg(EnumPayType.DY_PAY,true,"success"); - }else { - log.info("抖音支付回调不是支付成功不做处理:支付状态:{},payId:{}",status,outOrderNo); - } - } else { + if (!msgSignature.equals(signMessage)) { log.info("抖音支付回调签名校验失败,payId:{}",msgJsonObj.getString("cp_orderno")); + return super.buildNotifyCheckResultMsg(EnumPayType.DY_PAY,false,"trade fail"); + } + //固定值SUCCESS + String status = msgJsonObj.getString("status"); + //开发者侧的订单号 + String outOrderNo = msgJsonObj.getString("cp_orderno"); + //支付渠道: 1-微信支付,2-支付宝支付,10-抖音支付 + String payChannel = msgJsonObj.getString("way"); + //支付金额,单位为分 + Integer totalAmount = msgJsonObj.getInteger("total_amount"); + //支付渠道侧PC单号,支付页面可见(微信支付宝侧的订单号) + String paymentOrderNo = msgJsonObj.getString("payment_order_no"); + //抖音侧订单号 + String dyOrderId = msgJsonObj.getString("order_id"); + //这里无论回调失败还是成功,都需要都各个业务层去处理相关逻辑 + if(!"success".equals(status)){ + log.info("抖音支付回调不是支付成功不做处理:支付状态:{},payId:{}",status,outOrderNo); + return super.buildNotifyCheckResultMsg(EnumPayType.DY_PAY,false,"trade fail"); + } + //处理业务 + PayNotifyCheckDto payNotifyCheckDto = new PayNotifyCheckDto(); + payNotifyCheckDto.setPayType(EnumPayType.DY_PAY); + payNotifyCheckDto.setPayAmount(BaseWxPayResult.fenToYuan(totalAmount)); + payNotifyCheckDto.setPayId(outOrderNo); + payNotifyCheckDto.setMsg("success"); + String notifyCheck = super.payNotifyCheck(payNotifyCheckDto); + if (StringUtils.isNotBlank(notifyCheck)){ + return notifyCheck; } - return super.buildNotifyCheckResultMsg(EnumPayType.DY_PAY,true,"business fail"); + log.info("抖音支付回调,交易正常:封装参数修改内部支付单信息"); + EditPayInfoNotifyDto editPayInfoNotifyDto = new EditPayInfoNotifyDto(); + editPayInfoNotifyDto.setPayAmount(MoneyUtil.fenToYuan(String.valueOf(totalAmount))); + editPayInfoNotifyDto.setPayTime(DateUtil.formatDateTime(new Date())); + editPayInfoNotifyDto.setAppId(appId); + editPayInfoNotifyDto.setPayId(outOrderNo); + editPayInfoNotifyDto.setPayNo(dyOrderId); + editPayInfoNotifyDto.setTradeNo(paymentOrderNo); + editPayInfoNotifyDto.setPayChannel(EnumPayChannel.getPayChannelName(payChannel,EnumPayType.DY_PAY)); + payInfoService.editPayInfoNotify(editPayInfoNotifyDto); + //正确处理后返回以下内容格式通知小程序平台不再持续回调 + return super.buildNotifyCheckResultMsg(EnumPayType.DY_PAY,true,"success"); } @Override diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java index dbe1f1c..fbe071f 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java @@ -82,7 +82,7 @@ public class KSPayStrategy extends AbstractPayStrategy{ public ThirdUnifiedOrderVo unifiedOrder(UnifiedOrderBo bo) { String result = ""; KspayConfig kspayConfig = getKspayConfig(); - String openId = SecurityContextHolder.getFhOpenId(); + String openId = bo.getOpenId(); String appId = kspayConfig.getAppid(); String backurl = kspayConfig.getBackurl(); String secret = kspayConfig.getSecret(); @@ -173,59 +173,58 @@ public class KSPayStrategy extends AbstractPayStrategy{ String kwaisign = jsonObject.getString("sign"); String jsonString = JSONObject.toJSONString(object, SerializerFeature.WRITE_MAP_NULL_FEATURES, SerializerFeature.QuoteFieldNames); log.info("快手支付:统一回调处理,params:{}",jsonString); - if (StringUtils.isNotBlank(kwaisign)) { - jsonString = jsonString + secret; - //签名校验 - if (kwaisign.equals(DigestUtils.md5Hex(jsonString))) { - //当前回调消息的唯一ID,在同一个消息多次通知时,保持一致。 - String messageId = object.getString("message_id"); - JSONObject data = object.getJSONObject("data"); - //支付渠道。取值:UNKNOWN - 未知|WECHAT-微信|ALIPAY-支付宝 - String channel = data.getString("channel"); - //订单支付状态。 取值: PROCESSING-处理中|SUCCESS-成功|FAILED-失败 - String status = data.getString("status"); - //订单金额 - Integer orderAmount = data.getInteger("order_amount"); - //用户侧支付页交易单号 - String tradeNo = data.getString("trade_no"); - //商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一 - String outOrderNo = data.getString("out_order_no"); - //快手小程序平台订单号。 - String ksOrderNo = data.getString("ks_order_no"); - //回调支付成功 - if ("SUCCESS".equals(status)) { - //处理业务 - PayNotifyCheckDto payNotifyCheckDto = new PayNotifyCheckDto(); - payNotifyCheckDto.setPayType(EnumPayType.KS_PAY); - payNotifyCheckDto.setPayAmount(MoneyUtil.fenToYuan(String.valueOf(orderAmount))); - payNotifyCheckDto.setPayId(outOrderNo); - payNotifyCheckDto.setMsg(messageId); - String notifyCheck = super.payNotifyCheck(payNotifyCheckDto); - if (StringUtils.isNotBlank(notifyCheck)){ - return notifyCheck; - } - log.info("快手支付回调,交易正常:封装参数修改内部支付单信息"); - EditPayInfoNotifyDto editPayInfoNotifyDto = new EditPayInfoNotifyDto(); - editPayInfoNotifyDto.setPayAmount(MoneyUtil.fenToYuan(String.valueOf(orderAmount))); - editPayInfoNotifyDto.setPayTime(DateUtil.formatDateTime(new Date())); - editPayInfoNotifyDto.setAppId(appId); - editPayInfoNotifyDto.setPayId(outOrderNo); - editPayInfoNotifyDto.setPayNo(ksOrderNo); - editPayInfoNotifyDto.setTradeNo(tradeNo); - editPayInfoNotifyDto.setPayChannel(EnumPayChannel.getPayChannelName(channel,EnumPayType.KS_PAY)); - payInfoService.editPayInfoNotify(editPayInfoNotifyDto); - //正确处理后返回以下内容格式通知小程序平台不再持续回调 - return super.buildNotifyCheckResultMsg(EnumPayType.KS_PAY,true,messageId); - }else { - log.info("快手支付回调不是支付成功不做处理:支付状态:{},payId:{}",status,object.getString("trade_no")); - } - } else { - log.info("快手支付回调签名校验失败,payId:{}",object.getString("trade_no")); - } - } else { + if (StringUtils.isBlank(kwaisign)) { log.info("快手支付回调参数丢失,payId:{}",object.getString("trade_no")); + return super.buildNotifyCheckResultMsg(EnumPayType.KS_PAY,false,"trade fail"); } - return super.buildNotifyCheckResultMsg(EnumPayType.KS_PAY,true,"business fail"); + jsonString = jsonString + secret; + //签名校验 + if (!kwaisign.equals(DigestUtils.md5Hex(jsonString))) { + log.info("快手支付回调签名校验失败,payId:{}",object.getString("trade_no")); + return super.buildNotifyCheckResultMsg(EnumPayType.KS_PAY,false,"trade fail"); + } + //当前回调消息的唯一ID,在同一个消息多次通知时,保持一致。 + String messageId = object.getString("message_id"); + JSONObject data = object.getJSONObject("data"); + //支付渠道。取值:UNKNOWN - 未知|WECHAT-微信|ALIPAY-支付宝 + String channel = data.getString("channel"); + //订单支付状态。 取值: PROCESSING-处理中|SUCCESS-成功|FAILED-失败 + String status = data.getString("status"); + //订单金额 + Integer orderAmount = data.getInteger("order_amount"); + //用户侧支付页交易单号 + String tradeNo = data.getString("trade_no"); + //商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一 + String outOrderNo = data.getString("out_order_no"); + //快手小程序平台订单号。 + String ksOrderNo = data.getString("ks_order_no"); + //回调支付成功 + if (!"SUCCESS".equals(status)) { + log.info("快手支付回调不是支付成功不做处理:支付状态:{},payId:{}",status,object.getString("trade_no")); + return super.buildNotifyCheckResultMsg(EnumPayType.KS_PAY,false,"trade fail"); + } + //处理业务 + PayNotifyCheckDto payNotifyCheckDto = new PayNotifyCheckDto(); + payNotifyCheckDto.setPayType(EnumPayType.KS_PAY); + payNotifyCheckDto.setPayAmount(MoneyUtil.fenToYuan(String.valueOf(orderAmount))); + payNotifyCheckDto.setPayId(outOrderNo); + payNotifyCheckDto.setMsg(messageId); + String notifyCheck = super.payNotifyCheck(payNotifyCheckDto); + if (StringUtils.isNotBlank(notifyCheck)){ + return notifyCheck; + } + log.info("快手支付回调,交易正常:封装参数修改内部支付单信息"); + EditPayInfoNotifyDto editPayInfoNotifyDto = new EditPayInfoNotifyDto(); + editPayInfoNotifyDto.setPayAmount(MoneyUtil.fenToYuan(String.valueOf(orderAmount))); + editPayInfoNotifyDto.setPayTime(DateUtil.formatDateTime(new Date())); + editPayInfoNotifyDto.setAppId(appId); + editPayInfoNotifyDto.setPayId(outOrderNo); + editPayInfoNotifyDto.setPayNo(ksOrderNo); + editPayInfoNotifyDto.setTradeNo(tradeNo); + editPayInfoNotifyDto.setPayChannel(EnumPayChannel.getPayChannelName(channel,EnumPayType.KS_PAY)); + payInfoService.editPayInfoNotify(editPayInfoNotifyDto); + //正确处理后返回以下内容格式通知小程序平台不再持续回调 + return super.buildNotifyCheckResultMsg(EnumPayType.KS_PAY,true,messageId); } @Override diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java index 55a1a03..9506372 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java @@ -82,7 +82,7 @@ public class WxPayStrategy extends AbstractPayStrategy { private ThirdUnifiedOrderVo jsApiPay(UnifiedOrderBo bo) { WxpayConfig wxPayConfig = wxPayManager.getWxPayConfigByTradeType(bo.getTradeType()); WxPayService wxPayService = wxPayManager.getWxPayService(wxPayConfig); - String openId = SecurityContextHolder.getWechatOpenId(); + String openId = bo.getOpenId(); try { WxPayUnifiedOrderV3Request orderRequest = new WxPayUnifiedOrderV3Request(); WxPayUnifiedOrderV3Request.Payer payer = new WxPayUnifiedOrderV3Request.Payer(); @@ -147,8 +147,9 @@ public class WxPayStrategy extends AbstractPayStrategy { String timeEnd = result.getSuccessTime(); //支付状态 String tradeState = result.getTradeState(); + //如果不是交易成功不往下走 if (!EnumWxPayStatus.SUCCESS.getStatus().equals(tradeState)){ - return super.buildNotifyCheckResultMsg(EnumPayType.WX_PAY,false,"交易失败"); + return super.buildNotifyCheckResultMsg(EnumPayType.WX_PAY,false,"trade fail"); } //校验是否已支付避免重复调用 PayNotifyCheckDto payNotifyCheckDto = new PayNotifyCheckDto(); diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayInfoService.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayInfoService.java index 4e9896b..b58473c 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayInfoService.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayInfoService.java @@ -29,5 +29,5 @@ public interface PayInfoService extends IService{ * @param payId * @return */ - PayInfoDetailsVo queryOrder(String payId); + PayInfoDetailsVo queryPayInfo(String payId); } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java index 834e1e1..037e772 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java @@ -127,7 +127,7 @@ public class PayInfoServiceImpl extends ServiceImpl impl * @return */ @Override - public PayInfoDetailsVo queryOrder(String payId) { + public PayInfoDetailsVo queryPayInfo(String payId) { PayInfo payInfo = payInfoMapper.selectOne(new LambdaQueryWrapper().eq(PayInfo::getPayId, payId)); if (Objects.isNull(payInfo)){ throw new ServiceException(ResponseEnum.NOT_EXIST,"支付订单"); diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java index e79a0b3..c909c3d 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java @@ -6,6 +6,8 @@ import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.OrderUtil; import com.bnyer.common.core.utils.bean.EntityConvertUtil; import com.bnyer.common.core.utils.ip.IpUtils; +import com.bnyer.common.core.vo.UserInfoVo; +import com.bnyer.common.security.utils.SecurityUtils; import com.bnyer.order.api.dto.QueryVipOrderDto; import com.bnyer.order.api.remote.RemoteVipOrderService; import com.bnyer.order.api.vo.VipOrderVo; @@ -15,8 +17,8 @@ import com.bnyer.pay.constant.KSPayConstants; import com.bnyer.pay.design.factory.PayFactory; import com.bnyer.pay.design.strategy.IPayStrategy; import com.bnyer.pay.dto.AddPayInfoDto; -import com.bnyer.pay.dto.UnifiedOrderDto; import com.bnyer.pay.dto.QueryOrderDto; +import com.bnyer.pay.dto.UnifiedOrderDto; import com.bnyer.pay.enums.EnumAliPayStatus; import com.bnyer.pay.enums.EnumDyPayStatus; import com.bnyer.pay.enums.EnumKsPayStatus; @@ -131,7 +133,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { * 构建统一下单请求实体 * * @param dto 入参 - * @param goodsDesc + * @param goodsDesc 商品描述 * @param goodsType 商品类型 * @param payAmount 不同支付场景下的支付金额 * @param payId 内部系统支付单号 @@ -139,12 +141,14 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { * @return */ private UnifiedOrderBo buildUnifiedOrderDto(UnifiedOrderDto dto, String goodsDesc, int goodsType, String payAmount, String payId, HttpServletRequest request) { - String openId = ""; + UserInfoVo userInfo = SecurityUtils.getUserInfo(); + String openId = userInfo.getOpenId(); //当前时间 Date currDate = new Date(); //ip地址 String ip = IpUtils.getIpAddr(request); UnifiedOrderBo unifiedOrderBo = EntityConvertUtil.copy(dto, UnifiedOrderBo.class); + unifiedOrderBo.setOpenId(openId); unifiedOrderBo.setPayId(payId); unifiedOrderBo.setIp(ip); unifiedOrderBo.setCurrDate(currDate); @@ -163,7 +167,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { @Override public QueryOrderVo queryOrder(QueryOrderDto dto) { //先查询系统支付单是否已经完成支付,如果因为延迟导致没有及时同步,在调用第三方接口查询支付状态返回 - PayInfoDetailsVo payInfoDetailsVo = payInfoService.queryOrder(dto.getPayId()); + PayInfoDetailsVo payInfoDetailsVo = payInfoService.queryPayInfo(dto.getPayId()); if (Objects.isNull(payInfoDetailsVo)){ throw new ServiceException(ResponseEnum.NOT_EXIST); }