优化
This commit is contained in:
@ -0,0 +1,13 @@
|
||||
package cn.iocoder.yudao.module.member.api.card;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author zt
|
||||
* @description <description class purpose>
|
||||
* @since 2024/10/9
|
||||
*/
|
||||
public interface CardApi {
|
||||
|
||||
Boolean recharge(BigDecimal money);
|
||||
}
|
@ -62,6 +62,7 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_004_013_001, "订单不存在");
|
||||
ErrorCode ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_004_013_002, "订单明细不存在");
|
||||
ErrorCode RECHARGE_AMOUNT_NOT_EXISTS = new ErrorCode(1_004_013_003, "订单明细不存在");
|
||||
ErrorCode RECHARGE_AMOUNT_ALREADY_EXISTS = new ErrorCode(1_004_013_004, "该金额已存在");
|
||||
//ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_013_004, "订单明细不存在");
|
||||
ErrorCode USER_EXPAND_NOT_EXISTS = new ErrorCode(1_004_013_005, "订单明细不存在");
|
||||
ErrorCode USER_PREFERENCE_NOT_EXISTS = new ErrorCode(1_004_013_006, "订单明细不存在");
|
||||
|
@ -0,0 +1,36 @@
|
||||
package cn.iocoder.yudao.module.member.api.card;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.rechargeamount.RechargeAmountDO;
|
||||
import cn.iocoder.yudao.module.member.service.card.CardService;
|
||||
import cn.iocoder.yudao.module.member.service.rechargeamount.RechargeAmountService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author zt
|
||||
* @description <description class purpose>
|
||||
* @since 2024/10/9
|
||||
*/
|
||||
@Service
|
||||
public class CardApiImpl implements CardApi{
|
||||
@Resource
|
||||
private CardService cardService;
|
||||
@Resource
|
||||
private RechargeAmountService rechargeAmountService;
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean recharge(BigDecimal money){
|
||||
RechargeAmountDO recharge = rechargeAmountService.getRecharge(money);
|
||||
BigDecimal giftMoney = BigDecimal.ZERO;
|
||||
if(ObjectUtil.isNotEmpty(recharge.getDonateMoney())){
|
||||
giftMoney = giftMoney.add(recharge.getDonateMoney());
|
||||
}
|
||||
money = money.divide(new BigDecimal("100"));
|
||||
return cardService.recharge(money, CardDO.ADD,giftMoney);
|
||||
}
|
||||
}
|
@ -100,7 +100,8 @@ public class AppCardController {
|
||||
//@PreAuthorize("@ss.hasPermission('member:card:update')")
|
||||
public CommonResult<Boolean> recharge(BigDecimal money,BigDecimal giftMoney) {
|
||||
//BigDecimal bigDecimal = money.divide(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
|
||||
return success(cardService.recharge(money,CardDO.ADD,giftMoney));
|
||||
//cardService.recharge(money,CardDO.ADD,giftMoney);
|
||||
return success(true);
|
||||
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.member.controller.admin.rechargeamount.vo.Recharg
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.rechargeamount.RechargeAmountDO;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -55,4 +56,5 @@ public interface RechargeAmountService {
|
||||
|
||||
List<RechargeAmountDO> getAmount();
|
||||
|
||||
RechargeAmountDO getRecharge(BigDecimal money);
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.member.service.rechargeamount;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.rechargeamount.vo.RechargeAmountPageReqVO;
|
||||
@ -11,10 +12,11 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.RECHARGE_AMOUNT_ALREADY_EXISTS;
|
||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.RECHARGE_AMOUNT_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
@ -34,6 +36,7 @@ public class RechargeAmountServiceImpl implements RechargeAmountService {
|
||||
// 插入
|
||||
RechargeAmountDO rechargeAmount = BeanUtils.toBean(createReqVO, RechargeAmountDO.class);
|
||||
rechargeAmountMapper.insert(rechargeAmount);
|
||||
check(rechargeAmount.getMoney());
|
||||
// 返回
|
||||
return rechargeAmount.getId();
|
||||
}
|
||||
@ -78,4 +81,25 @@ public class RechargeAmountServiceImpl implements RechargeAmountService {
|
||||
.orderByAsc(RechargeAmountDO::getMoney));
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RechargeAmountDO getRecharge(BigDecimal money) {
|
||||
List<RechargeAmountDO> rechargeAmountDOS = rechargeAmountMapper.selectList(Wrappers.<RechargeAmountDO>lambdaQuery()
|
||||
.eq(RechargeAmountDO::getMoney, money)
|
||||
.eq(RechargeAmountDO::getStatus, RechargeAmountDO.ON)
|
||||
.orderByDesc(RechargeAmountDO::getCreateTime));
|
||||
if(CollectionUtil.isNotEmpty(rechargeAmountDOS)){
|
||||
return rechargeAmountDOS.get(0);
|
||||
}
|
||||
return new RechargeAmountDO();
|
||||
}
|
||||
|
||||
public void check(BigDecimal money){
|
||||
|
||||
List<RechargeAmountDO> list =rechargeAmountMapper.selectList(Wrappers.<RechargeAmountDO>lambdaQuery()
|
||||
.eq(RechargeAmountDO::getMoney, money));
|
||||
if(CollectionUtil.isNotEmpty(list)){
|
||||
throw exception(RECHARGE_AMOUNT_ALREADY_EXISTS);
|
||||
}
|
||||
}
|
||||
}
|
@ -10,18 +10,16 @@ import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO;
|
||||
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundRespDTO;
|
||||
import cn.iocoder.yudao.framework.pay.core.enums.divide.PayDivideRefundStatusRespEnum;
|
||||
import cn.iocoder.yudao.framework.pay.core.enums.refund.PayRefundStatusRespEnum;
|
||||
import cn.iocoder.yudao.module.member.api.card.CardApi;
|
||||
import cn.iocoder.yudao.module.pay.controller.admin.notify.vo.PayNotifyTaskDetailRespVO;
|
||||
import cn.iocoder.yudao.module.pay.controller.admin.notify.vo.PayNotifyTaskPageReqVO;
|
||||
import cn.iocoder.yudao.module.pay.controller.admin.notify.vo.PayNotifyTaskRespVO;
|
||||
import cn.iocoder.yudao.module.pay.convert.notify.PayNotifyTaskConvert;
|
||||
import cn.iocoder.yudao.module.pay.dal.dataobject.app.PayAppDO;
|
||||
import cn.iocoder.yudao.module.pay.dal.dataobject.divide.DivideDO;
|
||||
import cn.iocoder.yudao.module.pay.dal.dataobject.notify.PayNotifyLogDO;
|
||||
import cn.iocoder.yudao.module.pay.dal.dataobject.notify.PayNotifyTaskDO;
|
||||
import cn.iocoder.yudao.module.pay.dal.dataobject.refundrecord.RefundRecordDO;
|
||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wxorder.WxOrderDO;
|
||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wxrefund.WxRefundDO;
|
||||
import cn.iocoder.yudao.module.pay.dal.mysql.refundrecord.RefundRecordMapper;
|
||||
import cn.iocoder.yudao.module.pay.dal.mysql.wxorder.WxOrderMapper;
|
||||
import cn.iocoder.yudao.module.pay.dal.mysql.wxrefund.WxRefundMapper;
|
||||
import cn.iocoder.yudao.module.pay.service.app.PayAppService;
|
||||
@ -51,7 +49,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
import javax.annotation.Resource;
|
||||
import javax.annotation.security.PermitAll;
|
||||
import javax.validation.Valid;
|
||||
import java.util.ArrayList;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -87,6 +85,8 @@ public class PayNotifyController {
|
||||
private WxOrderMapper wxOrderMapper;
|
||||
@Resource
|
||||
private StringRedisTemplate notifyRedisTemplate;
|
||||
@Resource
|
||||
private CardApi cardApi;
|
||||
|
||||
@PostMapping(value = "/order/{channelId}")
|
||||
@Operation(summary = "支付渠道的统一【支付】回调")
|
||||
@ -106,6 +106,11 @@ public class PayNotifyController {
|
||||
// 2. 解析通知数据
|
||||
PayOrderRespDTO notify = payClient.parseOrderNotify(params, body);
|
||||
orderService.notifyOrder(channelId, notify);
|
||||
String re = notifyRedisTemplate.opsForValue().get("ADD" + notify.getOutTradeNo());
|
||||
if(StringUtils.isNotBlank(re)){
|
||||
cardApi.recharge(new BigDecimal(re));
|
||||
notifyRedisTemplate.delete("ADD" + notify.getOutTradeNo());
|
||||
}
|
||||
return "success";
|
||||
}
|
||||
|
||||
|
@ -10,11 +10,9 @@ import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
|
||||
import cn.iocoder.yudao.framework.pay.core.client.PayClient;
|
||||
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO;
|
||||
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO;
|
||||
import cn.iocoder.yudao.framework.pay.core.enums.divide.PayDivideStatusRespEnum;
|
||||
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderStatusRespEnum;
|
||||
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
||||
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
||||
import cn.iocoder.yudao.module.pay.controller.admin.divide.vo.DivideSaveReqVO;
|
||||
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderExportReqVO;
|
||||
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderSubmitReqVO;
|
||||
@ -38,6 +36,7 @@ import cn.iocoder.yudao.module.pay.service.notify.PayNotifyService;
|
||||
import cn.iocoder.yudao.module.pay.service.wxorder.WxOrderService;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -86,6 +85,9 @@ public class PayOrderServiceImpl implements PayOrderService {
|
||||
@Resource
|
||||
private WxOrderService wxOrderService;
|
||||
|
||||
@Resource
|
||||
private StringRedisTemplate payRedis;
|
||||
|
||||
|
||||
@Override
|
||||
public PayOrderDO getOrder(Long id) {
|
||||
@ -315,6 +317,8 @@ public class PayOrderServiceImpl implements PayOrderService {
|
||||
// .setChannelUserId(payOrderDO.getChannelUserId());
|
||||
// divideService.createDivide(divideSaveReqVO);
|
||||
|
||||
payRedis.opsForValue().set("ADD"+payOrderDO.getNo(),payOrderDO.getPrice().toString());
|
||||
|
||||
WxOrderSaveReqVO wxOrderSaveReqVO = new WxOrderSaveReqVO();
|
||||
wxOrderSaveReqVO.setChannelId(channel.getId())
|
||||
.setChannelCode(channel.getCode())
|
||||
|
Reference in New Issue
Block a user