From 21008fd918cae07d1f585b109c3cc0ce8cac98c5 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 4 Jun 2024 09:15:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E5=91=98=E6=96=B0=E5=BB=BA=E5=85=B3?= =?UTF-8?q?=E8=81=94=20=E4=BC=9A=E5=91=98=E6=94=AF=E4=BB=98=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E6=A0=A1=E9=AA=8C=20=E5=9B=A2=E8=B4=AD=E5=8D=B7?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E8=AE=A2=E5=8D=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/dao/TbUserInfoMapper.java | 1 + .../entity/TbGroupOrderCoupon.java | 4 + .../cashierservice/service/MemberService.java | 15 +++- .../cashierservice/service/PayService.java | 77 ++++++++++++------- .../mapper/TbGroupOrderCouponMapper.xml | 17 ++-- .../resources/mapper/TbUserInfoMapper.xml | 4 + 6 files changed, 84 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbUserInfoMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbUserInfoMapper.java index 0b647f4..462dc5e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbUserInfoMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbUserInfoMapper.java @@ -20,4 +20,5 @@ public interface TbUserInfoMapper { int updateByPrimaryKey(TbUserInfo record); TbUserInfo selectByCardNo(String cardNo); + TbUserInfo selectByPhone(String phone); } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java index 26793e8..2dc998f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java @@ -24,6 +24,10 @@ public class TbGroupOrderCoupon implements Serializable { * 团购卷码 */ private String couponNo; + /** + * 退款订单号 + */ + private String mchRefundNo; /** * 是否已退款 * 0:否 diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java index 5d9a941..5f3a649 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java @@ -21,6 +21,7 @@ import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; @@ -41,6 +42,9 @@ public class MemberService { @Autowired TbShopUserMapper tbShopUserMapper; + @Autowired + TbUserInfoMapper tbUserInfoMapper; + @Autowired TbMemberInMapper tbMemberInMapper; @@ -122,8 +126,11 @@ public class MemberService { tbShopUserMapper.updateByPrimaryKeySelective(tbShopUser); return Result.success(CodeEnum.SUCCESS); } - TbShopUser tbShopUser = new TbShopUser(); + TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPhone(phone); + if(tbUserInfo!=null){ + tbShopUser.setUserId(tbUserInfo.getId().toString()); + } tbShopUser.setAmount(BigDecimal.ZERO); tbShopUser.setCreditAmount(BigDecimal.ZERO); tbShopUser.setConsumeAmount(BigDecimal.ZERO); @@ -544,6 +551,12 @@ public class MemberService { shopUser.setAmount(shopUser.getAmount().add(amount)); shopUser.setUpdatedAt(System.currentTimeMillis()); + if (StringUtils.isBlank(shopUser.getUserId())) { + TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPhone(shopUser.getTelephone()); + if (tbUserInfo != null) { + shopUser.setUserId(tbUserInfo.getId().toString()); + } + } tbShopUserMapper.updateByPrimaryKeySelective(shopUser); TbShopUserFlow flow = new TbShopUserFlow(); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 067e631..c47104e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -556,12 +556,12 @@ public class PayService { return Result.fail(CodeEnum.MEMBERNOEXIST); } - if (N.gt(orderInfo.getPayAmount(), user.getAmount())) { + if (N.gt(orderInfo.getOrderAmount(), user.getAmount())) { return Result.fail(CodeEnum.MEMBERINSUFFICIENTFUNDS); } user.setAmount(user.getAmount().subtract(orderInfo.getOrderAmount())); - user.setConsumeAmount(user.getConsumeAmount().add(orderInfo.getPayAmount())); + user.setConsumeAmount(user.getConsumeAmount().add(orderInfo.getOrderAmount())); user.setConsumeNumber(user.getConsumeNumber() + 1); user.setUpdatedAt(System.currentTimeMillis()); tbShopUserMapper.updateByPrimaryKeySelective(user); @@ -1093,6 +1093,53 @@ public class PayService { if (param.getNum() > tbGroupOrderCoupons.size()) { return Result.fail("可退数量不足"); } + if(groupOrderInfo.getPayType().equals("deposit")){ + TbShopUser user= tbShopUserMapper.selectByUserIdAndShopId(groupOrderInfo.getUserId().toString(),groupOrderInfo.getShopId().toString()); + if(ObjectUtil.isNull(user)||ObjectUtil.isEmpty(user)){ + return Result.fail(ACCOUNTEIXST); + } + user.setAmount(user.getAmount().add(param.getRefundAmount().setScale(2, RoundingMode.DOWN))); + user.setConsumeAmount(user.getConsumeAmount().subtract(param.getRefundAmount().setScale(2, RoundingMode.DOWN))); + user.setUpdatedAt(System.currentTimeMillis()); + tbShopUserMapper.updateByPrimaryKeySelective(user); + + TbShopUserFlow flow = new TbShopUserFlow(); + flow.setShopUserId(user.getId()); + flow.setBizCode("returnGroupOrder"); + flow.setBizName("会员储值卡退款"); + flow.setAmount(param.getRefundAmount()); + flow.setBalance(user.getAmount()); + flow.setCreateTime(new Date()); + tbShopUserFlowMapper.insert(flow); + }else { + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(groupOrderInfo.getMerchantId()); + MsgException.checkNull(thirdApply, "支付参数配置错误"); + +// TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(groupOrderInfo.getOrderNo()); + PublicResp publicResp = thirdPayService.returnOrder( + url, + thirdApply.getAppId(), +// groupOrderInfo.getOrderNo(), + "GPR"+DateUtils.getSsdfTimes(), + groupOrderInfo.getPayOrderNo(), + null, + "团购卷订单退款", + param.getRefundAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), + null, + null, + thirdApply.getAppToken()); + if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { + GroupOrderReturnResp returnInfo = com.chaozhanggui.system.cashierservice.util.JSONUtil.parseJSONStr2T(publicResp.getBizData(), GroupOrderReturnResp.class); + if ("000000".equals(publicResp.getCode())) { + //TRADE_REFUND + if (!"SUCCESS".equals(returnInfo.getState()) && !"TRADE_SUCCESS".equals(returnInfo.getState()) && !returnInfo.getState().equals("ING")) { + return Result.fail("退款渠道调用失败,"+returnInfo.getNote()); + } + } else { + return Result.fail("退款渠道调用失败,"+publicResp.getMsg()); + } + } + } for (int i = 0; i < param.getNum(); i++) { TbGroupOrderCoupon coupon = tbGroupOrderCoupons.get(i); coupon.setIsRefund(1); @@ -1101,32 +1148,6 @@ public class PayService { coupon.setRefundReason(param.getRefundReason()); couponMapper.update(coupon); } - TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(groupOrderInfo.getMerchantId()); - MsgException.checkNull(thirdApply, "支付参数配置错误"); - - TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(param.getOrderId()+""); - PublicResp publicResp = thirdPayService.returnOrder( - url, - thirdApply.getAppId(), - groupOrderInfo.getOrderNo(), - payment.getTradeNumber(), - null, - "团购卷订单退款", - param.getRefundAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), - null, - null, - thirdApply.getAppToken()); - if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { - GroupOrderReturnResp returnInfo = com.chaozhanggui.system.cashierservice.util.JSONUtil.parseJSONStr2T(publicResp.getBizData(), GroupOrderReturnResp.class); - if ("000000".equals(publicResp.getCode())) { - //TRADE_REFUND - if (!"SUCCESS".equals(returnInfo.getState()) && !"TRADE_SUCCESS".equals(returnInfo.getState()) && !returnInfo.getState().equals("ING")) { - return Result.fail("退款渠道调用失败,"+returnInfo.getNote()); - } - } else { - return Result.fail("退款渠道调用失败:" + publicResp.getMsg()); - } - } groupOrderInfo.setRefundNumber(groupOrderInfo.getRefundNumber() + param.getNum()); if (groupOrderInfo.getRefundAmount() == null) { groupOrderInfo.setRefundAmount(param.getRefundAmount()); diff --git a/src/main/resources/mapper/TbGroupOrderCouponMapper.xml b/src/main/resources/mapper/TbGroupOrderCouponMapper.xml index 012d653..932ff01 100644 --- a/src/main/resources/mapper/TbGroupOrderCouponMapper.xml +++ b/src/main/resources/mapper/TbGroupOrderCouponMapper.xml @@ -6,6 +6,7 @@ + @@ -14,7 +15,7 @@ id - , order_id, coupon_no, is_refund, refund_amount, refund_reason, refund_desc + , order_id, coupon_no,mch_refund_no, is_refund, refund_amount, refund_reason, refund_desc + select * from tb_user_info where telephone=#{phone,jdbcType=VARCHAR} + +