Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.czg.controller.user;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.czg.market.dto.PpPackageOrderDTO;
|
||||
import com.czg.market.service.PpPackageOrderService;
|
||||
import com.czg.market.service.PpPackageService;
|
||||
@@ -9,11 +10,10 @@ import com.czg.market.vo.PpPackageVO;
|
||||
import com.czg.order.dto.GbOrderQueryParam;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 用户端/套餐推广
|
||||
@@ -31,6 +31,18 @@ public class UPpPackageController {
|
||||
@Resource
|
||||
private PpPackageOrderService ppPackageOrderService;
|
||||
|
||||
/**
|
||||
* 创建套餐推广订单
|
||||
* 参数: {"packageId": 123}
|
||||
*/
|
||||
@PostMapping("/order")
|
||||
public CzgResult<Long> createOrder(@RequestBody JSONObject params) {
|
||||
AssertUtil.isNull(params, "参数不能为空");
|
||||
Long packageId = params.getLong("packageId");
|
||||
AssertUtil.isNull(packageId, "参数错误");
|
||||
return CzgResult.success(ppPackageOrderService.createPackageOrder(packageId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取套餐列表
|
||||
*/
|
||||
@@ -68,6 +80,6 @@ public class UPpPackageController {
|
||||
*/
|
||||
@GetMapping("/order/detail")
|
||||
public CzgResult<PpPackageOrderDTO> getOrderDetail(Long orderId) {
|
||||
return CzgResult.success(ppPackageOrderService.getOrderDetailById(orderId));
|
||||
return CzgResult.success(ppPackageOrderService.getOrderDetailById(orderId, StpKit.USER.getLoginIdAsLong()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
package com.czg.controller.admin;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.czg.annotation.SaAdminCheckPermission;
|
||||
import com.czg.enums.OrderNoPrefixEnum;
|
||||
import com.czg.log.annotation.OperationLog;
|
||||
import com.czg.market.dto.PpPackageOrderDTO;
|
||||
import com.czg.market.service.PpPackageOrderService;
|
||||
import com.czg.order.dto.CommonRefundDTO;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.order.service.PayService;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.utils.CzgRandomUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 管理端/套餐推广
|
||||
*
|
||||
* @author yjjie
|
||||
* @date 2025/12/18 19:26
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/admin/ppOrder")
|
||||
public class PpOrderController {
|
||||
|
||||
@DubboReference
|
||||
private PpPackageOrderService ppPackageOrderService;
|
||||
|
||||
@Resource
|
||||
private PayService payService;
|
||||
|
||||
/**
|
||||
* 确认退单
|
||||
*/
|
||||
@PostMapping("/confirmRefund")
|
||||
@Transactional
|
||||
public CzgResult<Boolean> confirmRefund(@RequestBody @Validated CommonRefundDTO param) {
|
||||
PpPackageOrderDTO detail = ppPackageOrderService.getOrderDetailById(param.getRecordId(), StpKit.USER.getLoginIdAsLong());
|
||||
if (detail == null) {
|
||||
return CzgResult.failure("订单不存在");
|
||||
}
|
||||
|
||||
ppPackageOrderService.confirmRefund(param.getRecordId(), StpKit.USER.getShopId());
|
||||
|
||||
//退钱
|
||||
String refPayOrderNo = CzgRandomUtils.snowflake(OrderNoPrefixEnum.REPP);
|
||||
payService.unifyRefund(detail.getShopId(), detail.getId(), detail.getPayOrderId(), refPayOrderNo,
|
||||
StrUtil.isBlankIfStr(detail.getRefundReason()) ? "拼团退款" : detail.getRefundReason(), detail.getFinalPrice());
|
||||
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 驳回退单
|
||||
*/
|
||||
@PostMapping("/rejectRefund")
|
||||
public CzgResult<Boolean> rejectRefund(@RequestBody @Validated CommonRefundDTO param) {
|
||||
return CzgResult.success(ppPackageOrderService.cancelRefund(param.getRecordId(),
|
||||
StpKit.USER.getLoginIdAsLong(), param.getReason()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐推广-核销
|
||||
*/
|
||||
@PostMapping("checkout")
|
||||
@OperationLog("套餐推广-核销")
|
||||
@SaAdminCheckPermission(parentName = "套餐推广", value = "market:package:checkout", name = "套餐推广-核销")
|
||||
public CzgResult<Boolean> checkout(@RequestBody JSONObject param) {
|
||||
AssertUtil.isNull(param, "核销码不能为空");
|
||||
String verifyCode = param.getString("verifyCode");
|
||||
AssertUtil.isBlank(verifyCode, "核销码不能为空");
|
||||
return CzgResult.success(ppPackageOrderService.checkout(verifyCode, StpKit.USER.getShopId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package com.czg.controller.user;
|
||||
|
||||
import com.czg.market.dto.PpPackageOrderDTO;
|
||||
import com.czg.market.entity.PpPackageOrder;
|
||||
import com.czg.market.service.PpPackageOrderService;
|
||||
import com.czg.market.vo.PpPackageVO;
|
||||
import com.czg.order.dto.CommonRefundDTO;
|
||||
import com.czg.order.dto.LtPayOtherDTO;
|
||||
import com.czg.order.enums.PaymentPayTypeEnum;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.order.service.PayService;
|
||||
import com.czg.utils.ServletUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 用户端/套餐推广
|
||||
*
|
||||
* @author yjjie
|
||||
* @date 2025/12/18 18:54
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/user/ppOrder")
|
||||
public class UPpOrderController {
|
||||
|
||||
@DubboReference
|
||||
private PpPackageOrderService ppPackageOrderService;
|
||||
|
||||
@Resource
|
||||
private PayService payService;
|
||||
|
||||
/**
|
||||
* 小程序支付
|
||||
* payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||
* openId 必填
|
||||
*/
|
||||
@PostMapping("/pay")
|
||||
@Transactional
|
||||
public CzgResult<Map<String, Object>> exchange(HttpServletRequest request, @Validated @RequestBody LtPayOtherDTO param) {
|
||||
param.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||
param.setIp(ServletUtil.getClientIP(request));
|
||||
param.setRecordId(param.getParamId());
|
||||
|
||||
PpPackageOrderDTO detail = ppPackageOrderService.getOrderDetailById(param.getRecordId(), StpKit.USER.getLoginIdAsLong());
|
||||
|
||||
PpPackageVO packageInfo = detail.getPackageInfo();
|
||||
// 计算订单金额
|
||||
BigDecimal price = packageInfo.getPrice();
|
||||
// 如果存在优惠层级 并且 分享人数大于 0 则计算新的价格
|
||||
if (packageInfo.getTieredDiscount() != null && !packageInfo.getTieredDiscount().isEmpty() && detail.getShareNum() > 0) {
|
||||
// 倒序遍历优惠层级
|
||||
for (int i = packageInfo.getTieredDiscount().size() - 1; i >= 0; i--) {
|
||||
PpPackageVO.TieredDiscount tieredDiscount = packageInfo.getTieredDiscount().get(i);
|
||||
if (detail.getShareNum() >= tieredDiscount.getPeopleNum()) {
|
||||
price = tieredDiscount.getPrice();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
param.setPrice(price);
|
||||
|
||||
CzgResult<Map<String, Object>> result = CzgResult.success();
|
||||
CzgResult<Map<String, Object>> mapCzgResult = payService.ltPayOther(param, PaymentPayTypeEnum.SourceType.PP, "套餐推广购买");
|
||||
if (200 != mapCzgResult.getCode()) {
|
||||
return mapCzgResult;
|
||||
}
|
||||
Map<String, Object> resultMap = new HashMap<>(1);
|
||||
resultMap.put("payInfo", mapCzgResult.getData());
|
||||
result.setData(resultMap);
|
||||
|
||||
PpPackageOrder order = ppPackageOrderService.getById(param.getRecordId());
|
||||
order.setFinalPrice(price);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请退单
|
||||
*/
|
||||
@PostMapping("/applyRefund")
|
||||
public CzgResult<Boolean> applyRefund(@RequestBody @Validated CommonRefundDTO param) {
|
||||
return CzgResult.success(ppPackageOrderService.applyRefund(param.getRecordId(), StpKit.USER.getLoginIdAsLong(), param.getReason()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消退单
|
||||
*/
|
||||
@PostMapping("/cancelRefund")
|
||||
public CzgResult<Boolean> cancelRefund(@RequestBody @Validated CommonRefundDTO param) {
|
||||
return CzgResult.success(ppPackageOrderService.cancelRefund(param.getRecordId(), StpKit.USER.getLoginIdAsLong(), ""));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user