From 304e4383dc73bbd12ce4d13ba2aab29bca35280e Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Thu, 11 Dec 2025 10:13:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=20=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=20=E5=A1=AB=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/UPointGoodsController.java | 19 ++++++++++++- .../market/entity/MkPointsGoodsRecord.java | 28 +++++++++++++++++++ .../impl/MkPointsGoodsRecordServiceImpl.java | 9 +++--- .../impl/MkPointsGoodsServiceImpl.java | 14 ++++++---- .../impl/PointsGoodPayServiceImpl.java | 13 ++++++--- 5 files changed, 68 insertions(+), 15 deletions(-) diff --git a/cash-api/order-server/src/main/java/com/czg/controller/user/UPointGoodsController.java b/cash-api/order-server/src/main/java/com/czg/controller/user/UPointGoodsController.java index f7d2d8056..e517838f6 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/user/UPointGoodsController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/user/UPointGoodsController.java @@ -1,6 +1,7 @@ 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; @@ -9,6 +10,7 @@ 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; @@ -28,7 +30,8 @@ public class UPointGoodsController { @Resource private MkPointsGoodsService pointsGoodsService; - + @Resource + private MkPointsGoodsRecordService goodsRecordService; @Resource private PointsGoodPayService goodPayService; @@ -87,4 +90,18 @@ public class UPointGoodsController { Page pages = pointsGoodsService.getGoodsRecordPage(page, size, shopId, status, StpKit.USER.getLoginIdAsLong()); return CzgResult.success(pages); } + + /** + * 兑换记录详情 + */ + @GetMapping("/record/one") + public CzgResult getGoodsRecordOne(@RequestParam Long id, + @RequestParam Long shopId) { + QueryWrapper queryWrapper = QueryWrapper.create().eq(MkPointsGoodsRecord::getId, id).eq(MkPointsGoodsRecord::getShopId, shopId).eq(MkPointsGoodsRecord::getUserId, StpKit.USER.getLoginIdAsLong()); + MkPointsGoodsRecord one = goodsRecordService.getOne(queryWrapper); + if (one != null) { + one.fillCouponInfo(); + } + return CzgResult.success(one); + } } \ No newline at end of file diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkPointsGoodsRecord.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkPointsGoodsRecord.java index 6812a6dc3..3e1512374 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkPointsGoodsRecord.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkPointsGoodsRecord.java @@ -1,9 +1,12 @@ package com.czg.market.entity; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONObject; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.Table; + import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -14,6 +17,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; /** * 积分兑换记录 实体类。 @@ -21,6 +25,7 @@ import lombok.NoArgsConstructor; * @author ww * @since 2025-12-08 */ +@Slf4j @Data @Builder @NoArgsConstructor @@ -66,6 +71,10 @@ public class MkPointsGoodsRecord implements Serializable { * 商品类型 优惠劵 其它商品 */ private String goodsCategory; + /** + * 优惠劵信息 + */ + private String couponJson; /** * 领取方式 店内自取、系统发放 @@ -145,4 +154,23 @@ public class MkPointsGoodsRecord implements Serializable { * 是否删除 0否 1是 */ private Integer isDel; + + /** + * 优惠券信息 + */ + @Column(ignore = true) + private ShopCoupon couponInfo; + + + public void fillCouponInfo() { + if ("优惠券".equals(goodsCategory)) { + if (StrUtil.isNotBlank(couponJson)) { + try { + couponInfo = JSONObject.parseObject(couponJson, ShopCoupon.class); + } catch (Exception e) { + log.error("解析优惠券信息失败", e); + } + } + } + } } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsRecordServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsRecordServiceImpl.java index 01c042a06..ddee88991 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsRecordServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsRecordServiceImpl.java @@ -1,6 +1,5 @@ package com.czg.service.market.service.impl; -import cn.hutool.core.util.NumberUtil; import com.czg.account.entity.ShopUser; import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopUserService; @@ -8,13 +7,12 @@ import com.czg.account.vo.PointsExchangeSummaryVo; import com.czg.exception.CzgException; import com.czg.market.dto.MkPointsGoodsRecordDTO; import com.czg.market.dto.MkPointsGoodsRecordQueryDTO; -import com.czg.sa.StpKit; -import com.mybatisflex.core.paginate.Page; -import com.mybatisflex.core.query.QueryWrapper; -import com.mybatisflex.spring.service.impl.ServiceImpl; import com.czg.market.entity.MkPointsGoodsRecord; import com.czg.market.service.MkPointsGoodsRecordService; import com.czg.service.market.mapper.MkPointsGoodsRecordMapper; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; @@ -47,6 +45,7 @@ public class MkPointsGoodsRecordServiceImpl extends ServiceImpl { + data.fillCouponInfo(); ShopUser shopUser = shopUserService.getOne(query().eq(ShopUser::getId, data.getShopUserId()).eq(ShopUser::getMainShopId, mainIdByShopId)); data.setHeadImg(shopUser.getHeadImg()); data.setNickName(shopUser.getNickName()); diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsServiceImpl.java index 7a9ca3845..fc89a6661 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsGoodsServiceImpl.java @@ -3,20 +3,22 @@ package com.czg.service.market.service.impl; import cn.hutool.core.util.StrUtil; import com.czg.BaseQueryParam; import com.czg.exception.CzgException; -import com.czg.market.entity.*; +import com.czg.market.entity.MkPointsGoods; +import com.czg.market.entity.MkPointsGoodsRecord; +import com.czg.market.entity.MkPointsUser; +import com.czg.market.entity.ShopCoupon; import com.czg.market.service.MkPointsGoodsRecordService; +import com.czg.market.service.MkPointsGoodsService; import com.czg.market.service.MkPointsUserService; import com.czg.market.service.ShopCouponService; import com.czg.order.dto.PointGoodsRefundDTO; -import com.czg.utils.CzgStrUtils; +import com.czg.service.market.mapper.MkPointsGoodsMapper; 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.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; -import com.czg.market.service.MkPointsGoodsService; -import com.czg.service.market.mapper.MkPointsGoodsMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -97,7 +99,9 @@ public class MkPointsGoodsServiceImpl extends ServiceImpl pages = goodsRecordService.page(Page.of(page, size), queryWrapper); + pages.getRecords().forEach(MkPointsGoodsRecord::fillCouponInfo); + return pages; } @Override diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PointsGoodPayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PointsGoodPayServiceImpl.java index 7c7127188..a0756ed8b 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PointsGoodPayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PointsGoodPayServiceImpl.java @@ -3,6 +3,7 @@ package com.czg.service.order.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; +import com.alibaba.fastjson2.JSONObject; import com.czg.account.entity.ShopUser; import com.czg.account.service.ShopUserService; import com.czg.exception.CzgException; @@ -10,11 +11,9 @@ import com.czg.market.dto.MkShopCouponGiftDTO; import com.czg.market.entity.MkPointsGoods; import com.czg.market.entity.MkPointsGoodsRecord; import com.czg.market.entity.MkPointsUser; +import com.czg.market.entity.ShopCoupon; import com.czg.market.enums.PointsConstant; -import com.czg.market.service.MkPointsGoodsRecordService; -import com.czg.market.service.MkPointsGoodsService; -import com.czg.market.service.MkPointsUserService; -import com.czg.market.service.MkShopCouponRecordService; +import com.czg.market.service.*; import com.czg.order.dto.PointGoodsExchangeDTO; import com.czg.order.dto.PointGoodsRefundDTO; import com.czg.order.service.PointsGoodPayService; @@ -46,6 +45,8 @@ public class PointsGoodPayServiceImpl implements PointsGoodPayService { @Resource private MkPointsGoodsRecordService goodsRecordService; @Resource + private ShopCouponService shopCouponService; + @Resource private MkShopCouponRecordService couponRecordService; @Resource @Lazy @@ -151,6 +152,10 @@ public class PointsGoodPayServiceImpl implements PointsGoodPayService { } record.setIsDel(0); if ("优惠券".equals(goods.getGoodsCategory())) { + ShopCoupon coupon = shopCouponService.getById(goods.getCouponId()); + if (coupon != null) { + record.setCouponJson(JSONObject.toJSONString(coupon)); + } record.setStatus("已完成"); record.setCheckoutTime(LocalDateTime.now()); goodsRecordService.save(record);