拼团 订单

This commit is contained in:
2025-12-16 18:06:04 +08:00
parent 48f368c1b1
commit 01ca38079b
38 changed files with 1485 additions and 116 deletions

View File

@@ -0,0 +1,70 @@
package com.czg.controller.admin;
import com.czg.annotation.SaAdminCheckPermission;
import com.czg.log.annotation.OperationLog;
import com.czg.order.dto.CommonRefundDTO;
import com.czg.order.dto.GbOrderQueryParam;
import com.czg.order.service.GbOrderService;
import com.czg.order.vo.GbOrderDetailVO;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 拼团商品
*
* @author ww
*/
@RestController
@RequestMapping("/admin/gbOrder")
public class GbOrderController {
@Resource
private GbOrderService orderService;
/**
* 拼团商品:订单列表
*/
@GetMapping("page")
@SaAdminCheckPermission(parentName = "拼团商品", value = "ware:order:list", name = "拼团商品-订单列表")
public CzgResult<Page<GbOrderDetailVO>> getGbOrderPage(GbOrderQueryParam param) {
if (param.getShopId() == null) {
param.setShopId(StpKit.USER.getShopId());
}
Page<GbOrderDetailVO> page = orderService.getGbOrderPage(param);
return CzgResult.success(page);
}
/**
* 拼团商品:核销
*
* @param verifyCode 核销码
*/
@PostMapping("checkout")
@OperationLog("拼团商品-核销")
@SaAdminCheckPermission(parentName = "拼团商品", value = "ware:order:checkout", name = "拼团商品-核销")
public CzgResult<Boolean> checkout(@RequestBody String verifyCode) {
return CzgResult.success(orderService.checkout(verifyCode, StpKit.USER.getShopId()));
}
/**
* 退单/同意退单
*/
@PostMapping("/agreeRefund")
public CzgResult<Boolean> agreeRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(orderService.agreeRefund(param, StpKit.USER.getShopId()));
}
/**
* 驳回退单
*/
@PostMapping("/rejectRefund")
public CzgResult<Boolean> rejectRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(orderService.cancelRefund(param, null, StpKit.USER.getShopId()));
}
}

View File

@@ -6,7 +6,7 @@ import com.czg.log.annotation.OperationLog;
import com.czg.market.dto.MkPointsGoodsRecordDTO;
import com.czg.market.dto.MkPointsGoodsRecordQueryDTO;
import com.czg.market.service.MkPointsGoodsRecordService;
import com.czg.order.dto.PointGoodsRefundDTO;
import com.czg.order.dto.CommonRefundDTO;
import com.czg.order.service.PointsGoodPayService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
@@ -68,7 +68,7 @@ public class PointsGoodsRecordController {
* 退单/同意退单
*/
@PostMapping("/agreeRefund")
public CzgResult<Boolean> agreeRefund(@RequestBody @Validated PointGoodsRefundDTO param) {
public CzgResult<Boolean> agreeRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(goodPayService.agreeRefund(param, StpKit.USER.getShopId()));
}
@@ -76,7 +76,7 @@ public class PointsGoodsRecordController {
* 驳回退单
*/
@PostMapping("/rejectRefund")
public CzgResult<Boolean> rejectRefund(@RequestBody @Validated PointGoodsRefundDTO param) {
public CzgResult<Boolean> rejectRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(goodPayService.cancelRefund(param, null, StpKit.USER.getShopId()));
}

View File

@@ -0,0 +1,121 @@
package com.czg.controller.user;
import com.czg.market.dto.GbWareQueryParamDTO;
import com.czg.market.entity.GbWare;
import com.czg.market.entity.MkPointsGoodsRecord;
import com.czg.market.service.GbWareService;
import com.czg.market.service.MkPointsGoodsRecordService;
import com.czg.market.service.MkPointsGoodsService;
import com.czg.order.dto.CommonRefundDTO;
import com.czg.order.dto.GbOrderQueryParam;
import com.czg.order.dto.GroupJoinDTO;
import com.czg.order.dto.LtPayOtherDTO;
import com.czg.order.service.GbOrderService;
import com.czg.order.service.PointsGoodPayService;
import com.czg.order.vo.GbOrderDetailVO;
import com.czg.order.vo.GbWareVO;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.ServletUtil;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 用户拼团
*
* @author ww
*/
@RestController
@RequestMapping("/user/gbOrder")
public class UGbOrderController {
@Resource
private GbOrderService orderService;
@Resource
private GbWareService wareService;
/**
* 商品列表
*/
@GetMapping("/ware/page")
public CzgResult<Page<GbWare>> getPointsGoodsSettingPage(@RequestParam(defaultValue = "1", required = false) Integer page,
@RequestParam(defaultValue = "10", required = false) Integer size,
@RequestParam(required = false) String wareName,
@RequestParam(required = false) Integer groupPeopleNum,
Long shopId) {
GbWareQueryParamDTO param = new GbWareQueryParamDTO();
param.setPage(page);
param.setSize(size);
param.setOnlineStatus(1);
param.setWareName(wareName);
param.setGroupPeopleNum(groupPeopleNum);
Page<GbWare> data = wareService.getGbWarePage(param, shopId);
return CzgResult.success(data);
}
/**
* 拼团订单详情
*/
@GetMapping("/ware/detail")
public CzgResult<GbWareVO> getWareDetail(@RequestParam Long shopId, @RequestParam Long wareId) {
return CzgResult.success(orderService.getWareDetail(shopId, wareId));
}
/**
* 我的拼团记录
*/
@GetMapping("/record/page")
public CzgResult<Page<GbOrderDetailVO>> getGoodsRecordPage(@RequestParam GbOrderQueryParam param) {
param.setUserId(StpKit.USER.getLoginIdAsLong());
Page<GbOrderDetailVO> pages = orderService.getGbOrderPage(param);
return CzgResult.success(pages);
}
/**
* 拼团订单详情
*/
@GetMapping("/record/detail")
public CzgResult<GbOrderDetailVO> getGoodsRecordDetail(@RequestParam Long shopId, @RequestParam Long detailId) {
return CzgResult.success(orderService.getGoodsRecordDetail(shopId, detailId));
}
/**
* 生成订单
* 小程序支付
* payType 必填 支付方式aliPay 支付宝wechatPay 微信
* openId 必填
*/
@PostMapping("/exchange")
public CzgResult<Map<String, Object>> exchange(HttpServletRequest request, @Validated @RequestBody GroupJoinDTO param) {
param.setUserId(StpKit.USER.getLoginIdAsLong());
param.setIp(ServletUtil.getClientIP(request));
return orderService.groupJoin(param);
}
/**
* 申请退单
*/
@PostMapping("/applyRefund")
public CzgResult<Boolean> applyRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(orderService.applyRefund(param, StpKit.USER.getLoginIdAsLong()));
}
/**
* 取消退单
*/
@PostMapping("/cancelRefund")
public CzgResult<Boolean> cancelRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(orderService.cancelRefund(param, StpKit.USER.getLoginIdAsLong(), null));
}
}

View File

@@ -3,8 +3,8 @@ package com.czg.controller.user;
import com.czg.market.entity.MkPointsGoodsRecord;
import com.czg.market.service.MkPointsGoodsRecordService;
import com.czg.market.service.MkPointsGoodsService;
import com.czg.order.dto.PointGoodsExchangeDTO;
import com.czg.order.dto.PointGoodsRefundDTO;
import com.czg.order.dto.CommonRefundDTO;
import com.czg.order.dto.LtPayOtherDTO;
import com.czg.order.service.PointsGoodPayService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
@@ -58,16 +58,17 @@ public class UPointGoodsController {
* openId 必填
*/
@PostMapping("/exchange")
public CzgResult<Map<String, Object>> exchange(HttpServletRequest request, @Validated @RequestBody PointGoodsExchangeDTO param) {
public CzgResult<Map<String, Object>> exchange(HttpServletRequest request, @Validated @RequestBody LtPayOtherDTO param) {
param.setUserId(StpKit.USER.getLoginIdAsLong());
return goodPayService.exchange(ServletUtil.getClientIP(request), param);
param.setIp(ServletUtil.getClientIP(request));
return goodPayService.exchange(param);
}
/**
* 申请退单
*/
@PostMapping("/applyRefund")
public CzgResult<Boolean> applyRefund(@RequestBody @Validated PointGoodsRefundDTO param) {
public CzgResult<Boolean> applyRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(goodPayService.applyRefund(param, StpKit.USER.getLoginIdAsLong()));
}
@@ -75,7 +76,7 @@ public class UPointGoodsController {
* 取消退单
*/
@PostMapping("/cancelRefund")
public CzgResult<Boolean> cancelRefund(@RequestBody @Validated PointGoodsRefundDTO param) {
public CzgResult<Boolean> cancelRefund(@RequestBody @Validated CommonRefundDTO param) {
return CzgResult.success(goodPayService.cancelRefund(param, StpKit.USER.getLoginIdAsLong(), null));
}

View File

@@ -2,14 +2,17 @@ package com.czg.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.czg.enums.OrderNoPrefixEnum;
import com.czg.market.service.OrderInfoService;
import com.czg.order.entity.CashierCart;
import com.czg.order.entity.OrderInfo;
import com.czg.order.entity.OrderPayment;
import com.czg.order.enums.PaymentPayTypeEnum;
import com.czg.order.service.CashierCartService;
import com.czg.order.service.OrderPaymentService;
import com.czg.service.order.enums.OrderStatusEnums;
import com.czg.service.order.service.PayService;
import com.czg.utils.CzgRandomUtils;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -66,10 +69,10 @@ public class OTimeTask {
List<OrderPayment> list = orderPaymentService.list(QueryWrapper.create()
.gt(OrderPayment::getUpdateTime, thirdDayAgo)
.lt(OrderPayment::getUpdateTime, tenMinutesAgo)
.eq(OrderPayment::getPayType, "refund")
.eq(OrderPayment::getPayType, PaymentPayTypeEnum.REFUND.getValue())
.ne(OrderPayment::getPayStatus, "success"));
for (OrderPayment payment : list) {
String refPayOrderNo = "REP" + IdUtil.getSnowflakeNextId();
String refPayOrderNo = CzgRandomUtils.snowflake(OrderNoPrefixEnum.REP);
payService.unifyRefund(payment, refPayOrderNo);
}
}