diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/PpPackageOrderDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/PpPackageOrderDTO.java index 2832c898d..80835f5db 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/PpPackageOrderDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/PpPackageOrderDTO.java @@ -132,13 +132,18 @@ public class PpPackageOrderDTO implements Serializable { private Integer isMyself; /** - * 阶梯优惠 + * 套餐信息 */ - private List tieredDiscount; + private PpPackageVO packageInfo; /** - * 分享期限(小时) + * 店铺名称 */ - private Integer expireHours; + private String shopName; + + /** + * 店铺地址 + */ + private String shopAddress; } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/PpPackage.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/PpPackage.java index 238c14558..7d0ceb6a2 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/PpPackage.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/PpPackage.java @@ -1,5 +1,6 @@ package com.czg.market.entity; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; @@ -66,6 +67,7 @@ public class PpPackage implements Serializable { /** * 套餐图片 */ + @JsonIgnore private String images; /** @@ -81,6 +83,7 @@ public class PpPackage implements Serializable { /** * 套餐内容 json */ + @JsonIgnore private String packageContent; /** @@ -101,6 +104,7 @@ public class PpPackage implements Serializable { /** * 阶梯优惠 */ + @JsonIgnore private String tieredDiscount; /** @@ -116,6 +120,7 @@ public class PpPackage implements Serializable { /** * 商品详情图片 */ + @JsonIgnore private String detailImages; /** diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageOrderService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageOrderService.java index e97567478..785955f2e 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageOrderService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageOrderService.java @@ -1,6 +1,9 @@ package com.czg.market.service; import com.czg.market.dto.PpPackageOrderDTO; +import com.czg.market.vo.PpOrderListVO; +import com.czg.order.dto.GbOrderQueryParam; +import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; import com.czg.market.entity.PpPackageOrder; @@ -28,12 +31,12 @@ public interface PpPackageOrderService extends IService { boolean helpOrder(Long orderId); /** - * 获取进行中的套餐推广订单数量 + * 查询订单分页 */ - long getProgressingPackageOrderCount(Long packageId); + Page queryOrderList(Long shopId, Long userId, GbOrderQueryParam param); /** - * 将所有正在进行的推广订单设置为取消 + * 取消订单 */ - void cancelProgressingPackageOrder(Long shopId, Long packageId); + Boolean cancelOrder(Long orderId); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageService.java index 047486c02..72a2ed654 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/PpPackageService.java @@ -48,4 +48,8 @@ public interface PpPackageService extends IService { * 获取套餐分页 */ Page getPackagePage(PpPackagePageReqVo reqVo, boolean isAdmin); + + PpPackage getPackageById(Long id); + + PpPackageVO convertPackageToVo(PpPackage ppPackage); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/PpOrderListVO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/PpOrderListVO.java new file mode 100644 index 000000000..53e18a868 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/PpOrderListVO.java @@ -0,0 +1,98 @@ +package com.czg.market.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author yjjie + * @date 2025/12/18 16:36 + */ +@Data +public class PpOrderListVO { + + /** + * 自增主键 + */ + private Long id; + + /** + * 店铺 Id + */ + private Long shopId; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 套餐 Id + */ + private Long packageId; + + /** + * 分享人数 + */ + private Integer shareNum; + + /** + * 订单状态:ing进行中, wait_verify 待核销,finish 已核销,refunding 退款中,refund 已退款,cancel 已取消,timeout 超时 + * {@link com.czg.constants.PpPackageConstants.OrderStatus} + */ + private String status; + + /** + * 店铺名称 + */ + private String shopName; + + /** + * 店铺地址 + */ + private String shopAddress; + + /** + * 套餐名称 + */ + private String packageName; + + /** + * 套餐原价 + */ + private BigDecimal originPrice; + + /** + * 销售价格 + */ + private BigDecimal price; + + /** + * 套餐图片 + */ + @JsonIgnore + private String imagesStr; + + /** + * 套餐图片Json + */ + private List images; + + /** + * 阶梯优惠 + */ + @JsonIgnore + private String tieredDiscountStr; + + /** + * 阶梯优惠Json + */ + private List tieredDiscount; + + /** + * 分享期限(小时) + */ + private Integer expireHours; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/GbOrderQueryParam.java b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/GbOrderQueryParam.java index 1c48fb266..ecc0d95c7 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/GbOrderQueryParam.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/GbOrderQueryParam.java @@ -23,10 +23,12 @@ public class GbOrderQueryParam extends BaseQueryParam { /** * 下单 开始时间 yyyy-MM-dd HH:mm:ss + * 支付 开始时间 yyyy-MM-dd HH:mm:ss */ private String orderStartTime; /** * 下单 结束时间 yyyy-MM-dd HH:mm:ss + * 支付 结束时间 yyyy-MM-dd HH:mm:ss */ private String orderEndTime; @@ -53,6 +55,11 @@ public class GbOrderQueryParam extends BaseQueryParam { */ private String groupOrderNo; + /** + * 名称 + */ + private String name; + public String getOrderStartTime() { diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/PpPackageOrderMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/PpPackageOrderMapper.java index 394dcf289..511cfc6a9 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/PpPackageOrderMapper.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/PpPackageOrderMapper.java @@ -1,7 +1,12 @@ package com.czg.service.market.mapper; +import com.czg.market.vo.PpOrderListVO; +import com.czg.order.dto.GbOrderQueryParam; import com.mybatisflex.core.BaseMapper; import com.czg.market.entity.PpPackageOrder; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 套餐推广订单 映射层。 @@ -11,4 +16,7 @@ import com.czg.market.entity.PpPackageOrder; */ public interface PpPackageOrderMapper extends BaseMapper { + List getOrderList(@Param("shopId") Long shopId, + @Param("userId") Long userId, + @Param("param") GbOrderQueryParam param); } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageOrderServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageOrderServiceImpl.java index b735cd45e..dbcf0c385 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageOrderServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageOrderServiceImpl.java @@ -1,6 +1,9 @@ package com.czg.service.market.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson2.JSONArray; +import com.czg.account.entity.ShopInfo; +import com.czg.account.service.ShopInfoService; import com.czg.constants.PpPackageConstants; import com.czg.constants.SystemConstants; import com.czg.enums.OrderNoPrefixEnum; @@ -10,18 +13,26 @@ import com.czg.market.entity.PpPackage; import com.czg.market.entity.PpPackageOrder; import com.czg.market.service.PpHelpRecordService; import com.czg.market.service.PpPackageOrderService; +import com.czg.market.service.PpPackageService; +import com.czg.market.vo.PpOrderListVO; +import com.czg.market.vo.PpPackageVO; +import com.czg.order.dto.GbOrderQueryParam; import com.czg.sa.StpKit; -import com.czg.service.market.mapper.PpPackageMapper; import com.czg.service.market.mapper.PpPackageOrderMapper; import com.czg.utils.CzgRandomUtils; -import com.mybatisflex.core.query.QueryWrapper; +import com.czg.utils.PageUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.update.UpdateChain; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; +import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.List; /** * 套餐推广订单 服务层实现。 @@ -33,15 +44,17 @@ import java.time.LocalDateTime; public class PpPackageOrderServiceImpl extends ServiceImpl implements PpPackageOrderService { @Resource - private PpPackageMapper ppPackageMapper; + private PpPackageService ppPackageService; @Resource private PpHelpRecordService ppHelpRecordService; + @DubboReference + private ShopInfoService shopInfoService; + @Override public Long createPackageOrder(Long packageId) { - PpPackage aPackage = ppPackageMapper.selectOneByQuery(QueryWrapper.create().eq(PpPackage::getId, packageId) - .eq(PpPackage::getIsDel, SystemConstants.OneZero.ZERO)); + PpPackage aPackage = ppPackageService.getPackageById(packageId); if (aPackage == null) { throw new CzgException("套餐不存在"); } @@ -85,6 +98,15 @@ public class PpPackageOrderServiceImpl extends ServiceImpl queryOrderList(Long shopId, Long userId, GbOrderQueryParam param) { + PageHelper.startPage(param.getPage(), param.getSize()); + List result = mapper.getOrderList(shopId, userId, param); + result.forEach(vo -> { + vo.setImages(vo.getImagesStr() == null ? null : JSONArray.parseArray(vo.getImagesStr(), String.class)); + vo.setTieredDiscount(vo.getTieredDiscountStr() == null ? null : JSONArray.parseArray(vo.getTieredDiscountStr(), PpPackageVO.TieredDiscount.class)); + }); + return PageUtil.convert(new PageInfo<>(result)); } @Override - public void cancelProgressingPackageOrder(Long shopId, Long packageId) { - UpdateChain update = UpdateChain.of(PpPackageOrder.class) + public Boolean cancelOrder(Long orderId) { + PpPackageOrder order = getById(orderId); + if (order == null) { + throw new CzgException("订单不存在"); + } + + if (!PpPackageConstants.OrderStatus.PROCESSING.equals(order.getStatus()) && !PpPackageConstants.OrderStatus.TIMEOUT.equals(order.getStatus())) { + throw new CzgException("不允许取消"); + } + + if (!order.getUserId().equals(StpKit.USER.getLoginIdAsLong())) { + throw new CzgException("无权限"); + } + + return UpdateChain.of(PpPackageOrder.class) .set(PpPackageOrder::getStatus, PpPackageConstants.OrderStatus.CANCEL) .set(PpPackageOrder::getCancelTime, LocalDateTime.now()) - .set(PpPackageOrder::getCancelReason, "商家下架套餐"); - if (packageId != null && packageId > 0L) { - update.eq(PpPackageOrder::getPackageId, packageId); - } - update.eq(PpPackageOrder::getShopId, shopId) - .eq(PpPackageOrder::getStatus, PpPackageConstants.OrderStatus.PROCESSING) + .set(PpPackageOrder::getCancelReason, "用户取消") + .eq(PpPackageOrder::getId, orderId) .update(); } } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageServiceImpl.java index c66fa2108..e4574e6c7 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/PpPackageServiceImpl.java @@ -5,15 +5,17 @@ import com.alibaba.fastjson2.JSONArray; import com.czg.account.entity.ShopConfig; import com.czg.account.service.ShopConfigService; import com.czg.account.service.ShopInfoService; +import com.czg.constants.PpPackageConstants; import com.czg.constants.SystemConstants; import com.czg.exception.CzgException; import com.czg.market.entity.PpPackage; -import com.czg.market.service.PpPackageOrderService; +import com.czg.market.entity.PpPackageOrder; import com.czg.market.service.PpPackageService; import com.czg.market.vo.PpPackagePageReqVo; import com.czg.market.vo.PpPackageVO; import com.czg.sa.StpKit; import com.czg.service.market.mapper.PpPackageMapper; +import com.czg.service.market.mapper.PpPackageOrderMapper; import com.czg.utils.AssertUtil; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; @@ -21,9 +23,11 @@ import com.mybatisflex.core.update.UpdateChain; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -37,13 +41,15 @@ import java.util.List; public class PpPackageServiceImpl extends ServiceImpl implements PpPackageService { @Resource - private PpPackageOrderService ppPackageOrderService; + private PpPackageOrderMapper ppPackageOrderMapper; @DubboReference private ShopInfoService shopInfoService; @DubboReference private ShopConfigService shopConfigService; + @Autowired + private PpPackageMapper ppPackageMapper; @Override public Integer getPackagePromotionSwitch() { @@ -64,7 +70,7 @@ public class PpPackageServiceImpl extends ServiceImpl 0) { return orderCount; } @@ -144,7 +152,7 @@ public class PpPackageServiceImpl extends ServiceImpl page = page(Page.of(reqVo.getPage(), reqVo.getSize()), queryWrapper); List voList = new ArrayList<>(); - page.getRecords().forEach(item -> { - PpPackageVO packageVO = BeanUtil.copyProperties(item, PpPackageVO.class); - - packageVO.setUseWeeks(JSONArray.parseArray(item.getUseWeeks(), String.class)); - packageVO.setPackageContent(JSONArray.parseArray(item.getPackageContent(), PpPackageVO.PackageContent.class)); - packageVO.setTieredDiscount(JSONArray.parseArray(item.getTieredDiscount(), PpPackageVO.TieredDiscount.class)); - packageVO.setImages(JSONArray.parseArray(item.getImages(), String.class)); - packageVO.setDetailImages(JSONArray.parseArray(item.getDetailImages(), String.class)); - - voList.add(packageVO); - }); + page.getRecords().forEach(item -> voList.add(convertPackageToVo(item))); Page voPage = new Page<>(); BeanUtil.copyProperties(page, voPage, "records"); @@ -194,7 +192,8 @@ public class PpPackageServiceImpl extends ServiceImpl update = UpdateChain.of(PpPackageOrder.class) + .set(PpPackageOrder::getStatus, PpPackageConstants.OrderStatus.CANCEL) + .set(PpPackageOrder::getCancelTime, LocalDateTime.now()) + .set(PpPackageOrder::getCancelReason, "商家下架套餐"); + if (packageId != null && packageId > 0L) { + update.eq(PpPackageOrder::getPackageId, packageId); + } + update.eq(PpPackageOrder::getShopId, shopId) + .eq(PpPackageOrder::getStatus, PpPackageConstants.OrderStatus.PROCESSING) + .update(); + } } diff --git a/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml b/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml index 693fb3ab4..e08f75f50 100644 --- a/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml +++ b/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml @@ -4,4 +4,38 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/GbOrderMapper.java b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/GbOrderMapper.java index 5f554be51..40854beed 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/GbOrderMapper.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/GbOrderMapper.java @@ -20,7 +20,7 @@ public interface GbOrderMapper extends BaseMapper { GbOrderCountVO countOrder(@Param("param") GbOrderQueryParam param); - List getGbOrderPage(@Param("param")GbOrderQueryParam param, Long shopId, Long mainShopId); + List getGbOrderPage(@Param("param") GbOrderQueryParam param, Long shopId, Long mainShopId); GbOrderDetailVO getDetailByDetailId(Long mainShopId, Long shopId, Long detailId);