订单支付
This commit is contained in:
parent
51fde65ddb
commit
ca7435c813
|
|
@ -15,6 +15,7 @@ import com.czg.utils.AssertUtil;
|
|||
import com.czg.utils.ServletUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.NonNull;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
@ -39,142 +40,154 @@ public class OrderPayController {
|
|||
@DubboReference
|
||||
private SysParamsService paramsService;
|
||||
|
||||
@PostMapping("/creditPay")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Object> creditPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
return payService.creditPayOrder(payParam);
|
||||
}
|
||||
|
||||
@PostMapping("/cashPay")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Object> cashPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
return payService.cashPayOrder(payParam);
|
||||
}
|
||||
// @PostMapping("/creditPay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Object> creditPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// return payService.creditPayOrder(payParam);
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/cashPay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Object> cashPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// return payService.cashPayOrder(payParam);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 会员支付
|
||||
* payType 必填
|
||||
* <p>
|
||||
* scanCode(收银机使用) 会员码支付 authCode 必填
|
||||
* userPay(收银机使用) 选择用户支付 userId必填
|
||||
* <p>
|
||||
* accountPay(小程序使用) 密码支付 用户密码pwd 必填
|
||||
*/
|
||||
@PostMapping("/vipPay")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Object> vipPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
AssertUtil.isBlank(payParam.getPayType(), "支付类型不可为空");
|
||||
return payService.vipPayOrder(payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* h5支付
|
||||
*/
|
||||
@PostMapping("/h5Pay")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Map<String, Object>> h5PayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
return payService.h5PayOrder(ServletUtil.getClientIP(request, ""), payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* js支付
|
||||
* <p>
|
||||
* 充值并付款
|
||||
* payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||
* openId 必填
|
||||
*/
|
||||
@PostMapping("/jsPay")
|
||||
@PostMapping("/rechargePayOrder")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Map<String, Object>> jsPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
public CzgResult<Map<String, Object>> rechargePayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
return payService.jsPayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
return payService.rechargePayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序支付
|
||||
* payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||
* openId 必填
|
||||
*/
|
||||
@PostMapping("/ltPayOrder")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Map<String, Object>> ltPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
return payService.ltPayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 正扫
|
||||
*/
|
||||
@PostMapping("/scanPay")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Map<String, Object>> scanPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
return payService.scanPayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 反扫
|
||||
* authCode 必填 扫描码
|
||||
*/
|
||||
@PostMapping("/microPay")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Map<String, Object>> microPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
payParam.setShopId(shopId);
|
||||
return payService.microPayOrder(payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取店铺订单支付URL
|
||||
*/
|
||||
@GetMapping("/shopPayApi/orderPayUrl")
|
||||
@Debounce(value = "#checkOrderPay.orderId")
|
||||
public CzgResult<String> getOrderPayUrl(@RequestHeader Long shopId, @RequestParam(required = false) String extend,
|
||||
CheckOrderPay checkOrderPay) {
|
||||
AssertUtil.isNull(shopId, "店铺id不能为空");
|
||||
AssertUtil.isNull(checkOrderPay, "订单信息不能为空");
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("shopId", shopId);
|
||||
map.put("orderId", checkOrderPay.getOrderId());
|
||||
map.put("payAmount", checkOrderPay.getOrderAmount());
|
||||
map.put("extend", StrUtil.isEmpty(extend) ? "" : extend);
|
||||
if (checkOrderPay.getOrderId() != null) {
|
||||
OrderInfo orderInfo = orderInfoService.checkOrderPay(checkOrderPay);
|
||||
map.put("payAmount", orderInfo.getOrderAmount());
|
||||
}
|
||||
String baseUrl = paramsService.getSysParamValue(SysParamCodeEnum.SHOP_ORDER_PAY_BASE_URL.getCode());
|
||||
String buildUrl = URLUtil.buildQuery(map, Charset.defaultCharset());
|
||||
String fullUrl = baseUrl.concat("?").concat(buildUrl);
|
||||
return CzgResult.success(fullUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||
* openId 必填
|
||||
* checkOrderPay.orderAmount 必填
|
||||
*/
|
||||
@PostMapping("/shopPayApi/js2Pay")
|
||||
@Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
public CzgResult<Map<String, Object>> js2PayOrder(HttpServletRequest request, @RequestBody OrderPayParamDTO payParam) {
|
||||
return payService.js2PayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单状态
|
||||
* unpaid-待支付;in-production 制作中;wait-out 待取餐;;done-订单完成;refunding-申请退单;refund-退单;part-refund 部分退单;cancelled-取消订单
|
||||
*/
|
||||
@GetMapping("/queryOrderStatus")
|
||||
public CzgResult<String> queryOrderStatus(Long orderId) {
|
||||
CzgResult<String> result = CzgResult.success();
|
||||
String status = orderInfoService.queryChain().select(OrderInfo::getStatus).eq(OrderInfo::getId, orderId).oneAs(String.class);
|
||||
result.setData(status);
|
||||
switch (status) {
|
||||
case "unpaid" -> result.setMsg("等待用户付款");
|
||||
case "done" -> result.setMsg("支付完成");
|
||||
case "cancelled" -> result.setMsg("订单已取消");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// /**
|
||||
// * 会员支付
|
||||
// * payType 必填
|
||||
// * <p>
|
||||
// * scanCode(收银机使用) 会员码支付 authCode 必填
|
||||
// * userPay(收银机使用) 选择用户支付 userId必填
|
||||
// * <p>
|
||||
// * accountPay(小程序使用) 密码支付 用户密码pwd 必填
|
||||
// */
|
||||
// @PostMapping("/vipPay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Object> vipPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// AssertUtil.isBlank(payParam.getPayType(), "支付类型不可为空");
|
||||
// return payService.vipPayOrder(payParam);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * h5支付
|
||||
// */
|
||||
// @PostMapping("/h5Pay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Map<String, Object>> h5PayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// return payService.h5PayOrder(ServletUtil.getClientIP(request, ""), payParam);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * js支付
|
||||
// * <p>
|
||||
// * payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||
// * openId 必填
|
||||
// */
|
||||
// @PostMapping("/jsPay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Map<String, Object>> jsPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// return payService.jsPayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 小程序支付
|
||||
// * payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||
// * openId 必填
|
||||
// */
|
||||
// @PostMapping("/ltPayOrder")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Map<String, Object>> ltPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// return payService.ltPayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 正扫
|
||||
// */
|
||||
// @PostMapping("/scanPay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Map<String, Object>> scanPayOrder(@RequestHeader Long shopId, HttpServletRequest request, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// return payService.scanPayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 反扫
|
||||
// * authCode 必填 扫描码
|
||||
// */
|
||||
// @PostMapping("/microPay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Map<String, Object>> microPayOrder(@RequestHeader Long shopId, @Validated @RequestBody OrderPayParamDTO payParam) {
|
||||
// payParam.setShopId(shopId);
|
||||
// return payService.microPayOrder(payParam);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 获取店铺订单支付URL
|
||||
// */
|
||||
// @GetMapping("/shopPayApi/orderPayUrl")
|
||||
// @Debounce(value = "#checkOrderPay.orderId")
|
||||
// public CzgResult<String> getOrderPayUrl(@RequestHeader Long shopId, @RequestParam(required = false) String extend,
|
||||
// CheckOrderPay checkOrderPay) {
|
||||
// AssertUtil.isNull(shopId, "店铺id不能为空");
|
||||
// AssertUtil.isNull(checkOrderPay, "订单信息不能为空");
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// map.put("shopId", shopId);
|
||||
// map.put("orderId", checkOrderPay.getOrderId());
|
||||
// map.put("payAmount", checkOrderPay.getOrderAmount());
|
||||
// map.put("extend", StrUtil.isEmpty(extend) ? "" : extend);
|
||||
// if (checkOrderPay.getOrderId() != null) {
|
||||
// OrderInfo orderInfo = orderInfoService.checkOrderPay(checkOrderPay);
|
||||
// map.put("payAmount", orderInfo.getOrderAmount());
|
||||
// }
|
||||
// String baseUrl = paramsService.getSysParamValue(SysParamCodeEnum.SHOP_ORDER_PAY_BASE_URL.getCode());
|
||||
// String buildUrl = URLUtil.buildQuery(map, Charset.defaultCharset());
|
||||
// String fullUrl = baseUrl.concat("?").concat(buildUrl);
|
||||
// return CzgResult.success(fullUrl);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||
// * openId 必填
|
||||
// * checkOrderPay.orderAmount 必填
|
||||
// */
|
||||
// @PostMapping("/shopPayApi/js2Pay")
|
||||
// @Debounce(value = "#payParam.checkOrderPay.orderId")
|
||||
// public CzgResult<Map<String, Object>> js2PayOrder(HttpServletRequest request, @RequestBody OrderPayParamDTO payParam) {
|
||||
// return payService.js2PayOrder(ServletUtil.getClientIP(request), payParam);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 获取订单状态
|
||||
// * unpaid-待支付;in-production 制作中;wait-out 待取餐;;done-订单完成;refunding-申请退单;refund-退单;part-refund 部分退单;cancelled-取消订单
|
||||
// */
|
||||
// @GetMapping("/queryOrderStatus")
|
||||
// public CzgResult<String> queryOrderStatus(Long orderId) {
|
||||
// CzgResult<String> result = CzgResult.success();
|
||||
// String status = orderInfoService.queryChain().select(OrderInfo::getStatus).eq(OrderInfo::getId, orderId).oneAs(String.class);
|
||||
// result.setData(status);
|
||||
// switch (status) {
|
||||
// case "unpaid" -> result.setMsg("等待用户付款");
|
||||
// case "done" -> result.setMsg("支付完成");
|
||||
// case "cancelled" -> result.setMsg("订单已取消");
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper, MkShopRecharge> implements MkShopRechargeService{
|
||||
public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper, MkShopRecharge> implements MkShopRechargeService {
|
||||
@Resource
|
||||
private MkShopRechargeDetailService shopRechargeDetailService;
|
||||
@Resource
|
||||
|
|
@ -68,8 +68,8 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
|
|||
public MkShopRechargeVO detailApp(Long shopId) {
|
||||
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
|
||||
MkShopRechargeVO rechargeVO = detail(mainShopId);
|
||||
if ("part".equals(rechargeVO.getUseType())){
|
||||
return rechargeVO.getShopIdList().contains(shopId) ? rechargeVO : null;
|
||||
if ("part".equals(rechargeVO.getUseType())) {
|
||||
return rechargeVO.getShopIdList().contains(shopId) ? rechargeVO : null;
|
||||
}
|
||||
return rechargeVO;
|
||||
}
|
||||
|
|
@ -126,7 +126,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
|
|||
if (shopRechargeDTO.getRechargeDetailList() != null && !shopRechargeDTO.getRechargeDetailList().isEmpty()) {
|
||||
shopRechargeDetailService.remove(new QueryWrapper().eq(MkShopRechargeDetail::getShopRechargeId, shopRecharge.getId()));
|
||||
shopRechargeDTO.getRechargeDetailList().forEach(item -> {
|
||||
MkShopRechargeDetail mkShopRechargeDetail = BeanUtil.copyProperties(item, MkShopRechargeDetail.class,"couponInfoList");
|
||||
MkShopRechargeDetail mkShopRechargeDetail = BeanUtil.copyProperties(item, MkShopRechargeDetail.class, "couponInfoList");
|
||||
mkShopRechargeDetail.setCouponInfoList(JSONArray.toJSONString(item.getCouponInfoList()));
|
||||
mkShopRechargeDetail.setShopRechargeId(shopRecharge.getId());
|
||||
shopRechargeDetailService.save(mkShopRechargeDetail);
|
||||
|
|
@ -147,7 +147,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
|
|||
throw new CzgException("未开启自定义充值金额");
|
||||
}
|
||||
return money;
|
||||
}else {
|
||||
} else {
|
||||
MkShopRechargeDetail rechargeDetail = shopRechargeDetailService.getOne(new QueryWrapper().eq(MkShopRechargeDetail::getShopRechargeId, rechargeVO.getId()).eq(MkShopRechargeDetail::getId, rechargeDetailId));
|
||||
AssertUtil.isNull(rechargeDetail, "充值金额不存在");
|
||||
return rechargeDetail.getAmount();
|
||||
|
|
@ -181,17 +181,11 @@ public class MkShopRechargeServiceImpl extends ServiceImpl<MkShopRechargeMapper,
|
|||
.setShopId(shopId));
|
||||
});
|
||||
}
|
||||
// 自定义金额
|
||||
}else {
|
||||
// 自定义金额
|
||||
} else {
|
||||
shopUserMoneyEditDTO.setMoney(amount.divide(new BigDecimal(100), 2, RoundingMode.DOWN));
|
||||
}
|
||||
|
||||
|
||||
//TODO 以前的会员活动
|
||||
// activateService.giveActivate(shopUser, new BigDecimal(czgCallBackDto.getAmount()).divide(new BigDecimal(100), 2, RoundingMode.DOWN),
|
||||
// payment.getRelatedId(), flowId);
|
||||
//更新会员余额 并生成流水
|
||||
shopUserService.updateMoney(shopUserMoneyEditDTO);
|
||||
shopUserService.updateMoney(shopUserMoneyEditDTO);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,4 +23,6 @@ public class OrderPayParamDTO {
|
|||
private String openId;
|
||||
private String authCode;
|
||||
private String pwd;
|
||||
|
||||
private Long rechargeId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,11 @@ public interface PayService {
|
|||
*/
|
||||
CzgResult<Object> vipPayOrder(OrderPayParamDTO payParam);
|
||||
|
||||
/**
|
||||
* 充值并付款
|
||||
*/
|
||||
CzgResult<Map<String, Object>> rechargePayOrder(String clintIp, OrderPayParamDTO payParam);
|
||||
|
||||
/**
|
||||
* h5支付
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -376,7 +376,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
if (CollUtil.isNotEmpty(param.getCouponList())) {
|
||||
QueryWrapper couponRecordQuery = new QueryWrapper();
|
||||
couponRecordQuery.in(MkShopCouponRecord::getId, param.getCouponList());
|
||||
couponRecordQuery.eq(MkShopCouponRecord::getShopId, shopId);
|
||||
couponRecordQuery.gt(MkShopCouponRecord::getUseStartTime, LocalDateTime.now());
|
||||
couponRecordQuery.le(MkShopCouponRecord::getUseEndTime, LocalDateTime.now());
|
||||
couponRecordQuery.eq(MkShopCouponRecord::getStatus, 0);
|
||||
|
|
@ -865,6 +864,24 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
}
|
||||
shopRechargeService.recharge(payment.getShopId(), payment.getSourceId(), payment.getRelatedId(),
|
||||
BigDecimal.valueOf(czgCallBackDto.getAmount() / 100), payment.getId(), payment.getPayType(), bizEnum);
|
||||
//充值并支付 ↓
|
||||
OrderInfo orderInfo = getOne(new QueryWrapper()
|
||||
.eq(OrderInfo::getPayOrderId, payment.getRelatedId())
|
||||
.eq(OrderInfo::getPayType, PayEnums.VIP_PAY.getValue()));
|
||||
if (orderInfo != null) {
|
||||
updateChain().eq(OrderInfo::getPayOrderId, payment.getRelatedId())
|
||||
.eq(OrderInfo::getPayType, PayEnums.VIP_PAY.getValue())
|
||||
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
|
||||
.set(OrderInfo::getPayAmount, 0)
|
||||
.update();
|
||||
ShopUserMoneyEditDTO shopUserMoneyEditDTO = new ShopUserMoneyEditDTO()
|
||||
.setId(shopUser.getId())
|
||||
.setType(0)
|
||||
.setBizEnum(ShopUserFlowBizEnum.ORDER_PAY)
|
||||
.setRelationId(orderInfo.getId())
|
||||
.setMoney(orderInfo.getOrderAmount());
|
||||
shopUserService.updateMoney(shopUserMoneyEditDTO);
|
||||
}
|
||||
}
|
||||
} else if ("memberPay".equals(payment.getPayType())) {
|
||||
memberConfigService.joinMember(payment.getShopId(), payment.getSourceId(), payment.getRelatedId());
|
||||
|
|
|
|||
|
|
@ -19,8 +19,11 @@ import com.czg.exception.CzgException;
|
|||
import com.czg.exception.PaySuccessException;
|
||||
import com.czg.market.dto.MemberOrderDTO;
|
||||
import com.czg.market.entity.MkShopCouponRecord;
|
||||
import com.czg.market.entity.MkShopRecharge;
|
||||
import com.czg.market.entity.MkShopRechargeDetail;
|
||||
import com.czg.market.service.MemberOrderService;
|
||||
import com.czg.market.service.MkShopCouponRecordService;
|
||||
import com.czg.market.service.MkShopRechargeDetailService;
|
||||
import com.czg.market.service.MkShopRechargeService;
|
||||
import com.czg.market.vo.MkShopRechargeVO;
|
||||
import com.czg.order.dto.BigDecimalDTO;
|
||||
|
|
@ -105,6 +108,8 @@ public class PayServiceImpl implements PayService {
|
|||
private MemberOrderService memberOrderService;
|
||||
@Resource
|
||||
private MkShopRechargeService shopRechargeService;
|
||||
@Resource
|
||||
private MkShopRechargeDetailService shopRechargeDetailService;
|
||||
|
||||
private final BigDecimal MONEY_RATE = new BigDecimal("100");
|
||||
|
||||
|
|
@ -249,6 +254,36 @@ public class PayServiceImpl implements PayService {
|
|||
return CzgResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CzgResult<Map<String, Object>> rechargePayOrder(String clintIp, OrderPayParamDTO payParam) {
|
||||
OrderInfo orderInfo = checkPay(payParam.getCheckOrderPay());
|
||||
ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId());
|
||||
AssertUtil.isNull(shopInfo, "店铺不存在");
|
||||
if (!shopInfo.getIsAccountPay().equals(1)) {
|
||||
return CzgResult.failure("支付失败,店铺暂未开启会员余额支付。");
|
||||
}
|
||||
AssertUtil.isNull(payParam.getShopUserId(), "请选择付款人后重试");
|
||||
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
||||
AssertUtil.isNull(shopUser, "支付失败 该店铺用户不存在");
|
||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||
//查询活动Id 获取金额字段
|
||||
MkShopRecharge recharge = shopRechargeService.getById(payParam.getRechargeId());
|
||||
AssertUtil.isNull(recharge, "充值配置不存在");
|
||||
MkShopRechargeDetail rechargeDetail = shopRechargeDetailService.getOne(
|
||||
new QueryWrapper().eq("shop_recharge_id", recharge.getId()));
|
||||
AssertUtil.isNull(rechargeDetail, "充值配置不存在");
|
||||
if (orderInfo.getOrderAmount().compareTo(rechargeDetail.getAmount()) < 0) {
|
||||
return CzgResult.failure("支付失败 充值金额小于订单金额");
|
||||
}
|
||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
Long paymentId = initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo,
|
||||
"", rechargeDetail.getAmount(), payParam.getRechargeId()));
|
||||
upOrderPayInfo(orderInfo.getId(), PayEnums.VIP_PAY, paymentId);
|
||||
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, rechargeDetail.getAmount().multiply(MONEY_RATE).longValue(),
|
||||
payParam.getPayType(), "充值并支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(noRollbackFor = PaySuccessException.class)
|
||||
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||
|
|
@ -447,7 +482,7 @@ public class PayServiceImpl implements PayService {
|
|||
BigDecimal amount = shopRechargeService.checkRecharge(mainShopId, rechargeDTO.getShopId(), shopUser.getUserId(), rechargeDTO.getRechargeDetailId(), rechargeDTO.getAmount());
|
||||
String payOrderNo = rechargeDTO.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
initOrderPayment(new OrderPayment(rechargeDTO.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo,
|
||||
"", amount, isFree ? rechargeDTO.getOrderId() : rechargeDTO.getRechargeDetailId()));
|
||||
"", amount, isFree ? rechargeDTO.getOrderId() : rechargeDTO.getRechargeDetailId()));
|
||||
return ltPay(rechargeDTO.getShopId(), rechargeDTO.getPayType(), new CzgLtPayReq(payOrderNo, amount.multiply(MONEY_RATE).longValue(),
|
||||
rechargeDTO.getPayType(), "会员充值", "wechatPay".equals(rechargeDTO.getPayType()) ? userInfo.getWechatOpenId() : userInfo.getAlipayOpenId(), clientIP, rechargeDTO.getReturnUrl(), rechargeDTO.getBuyerRemark(), ""));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue