This commit is contained in:
韩鹏辉
2024-06-04 16:03:50 +08:00
6 changed files with 84 additions and 34 deletions

View File

@@ -20,4 +20,5 @@ public interface TbUserInfoMapper {
int updateByPrimaryKey(TbUserInfo record);
TbUserInfo selectByCardNo(String cardNo);
TbUserInfo selectByPhone(String phone);
}

View File

@@ -24,6 +24,10 @@ public class TbGroupOrderCoupon implements Serializable {
* 团购卷码
*/
private String couponNo;
/**
* 退款订单号
*/
private String mchRefundNo;
/**
* 是否已退款
* 0

View File

@@ -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);
@@ -537,6 +544,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();

View File

@@ -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<OrderReturnResp> 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<OrderReturnResp> 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());