优惠券 信息 填充

This commit is contained in:
2025-12-11 10:13:24 +08:00
parent d4bef8ab02
commit 304e4383dc
5 changed files with 68 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
package com.czg.controller.user; package com.czg.controller.user;
import com.czg.market.entity.MkPointsGoodsRecord; import com.czg.market.entity.MkPointsGoodsRecord;
import com.czg.market.service.MkPointsGoodsRecordService;
import com.czg.market.service.MkPointsGoodsService; import com.czg.market.service.MkPointsGoodsService;
import com.czg.order.dto.PointGoodsExchangeDTO; import com.czg.order.dto.PointGoodsExchangeDTO;
import com.czg.order.dto.PointGoodsRefundDTO; import com.czg.order.dto.PointGoodsRefundDTO;
@@ -9,6 +10,7 @@ import com.czg.resp.CzgResult;
import com.czg.sa.StpKit; import com.czg.sa.StpKit;
import com.czg.utils.ServletUtil; import com.czg.utils.ServletUtil;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -28,7 +30,8 @@ public class UPointGoodsController {
@Resource @Resource
private MkPointsGoodsService pointsGoodsService; private MkPointsGoodsService pointsGoodsService;
@Resource
private MkPointsGoodsRecordService goodsRecordService;
@Resource @Resource
private PointsGoodPayService goodPayService; private PointsGoodPayService goodPayService;
@@ -87,4 +90,18 @@ public class UPointGoodsController {
Page<MkPointsGoodsRecord> pages = pointsGoodsService.getGoodsRecordPage(page, size, shopId, status, StpKit.USER.getLoginIdAsLong()); Page<MkPointsGoodsRecord> pages = pointsGoodsService.getGoodsRecordPage(page, size, shopId, status, StpKit.USER.getLoginIdAsLong());
return CzgResult.success(pages); return CzgResult.success(pages);
} }
/**
* 兑换记录详情
*/
@GetMapping("/record/one")
public CzgResult<MkPointsGoodsRecord> 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);
}
} }

View File

@@ -1,9 +1,12 @@
package com.czg.market.entity; 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.Column;
import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table; import com.mybatisflex.annotation.Table;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -14,6 +17,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/** /**
* 积分兑换记录 实体类。 * 积分兑换记录 实体类。
@@ -21,6 +25,7 @@ import lombok.NoArgsConstructor;
* @author ww * @author ww
* @since 2025-12-08 * @since 2025-12-08
*/ */
@Slf4j
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@@ -66,6 +71,10 @@ public class MkPointsGoodsRecord implements Serializable {
* 商品类型 优惠劵 其它商品 * 商品类型 优惠劵 其它商品
*/ */
private String goodsCategory; private String goodsCategory;
/**
* 优惠劵信息
*/
private String couponJson;
/** /**
* 领取方式 店内自取、系统发放 * 领取方式 店内自取、系统发放
@@ -145,4 +154,23 @@ public class MkPointsGoodsRecord implements Serializable {
* 是否删除 0否 1是 * 是否删除 0否 1是
*/ */
private Integer isDel; 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);
}
}
}
}
} }

View File

@@ -1,6 +1,5 @@
package com.czg.service.market.service.impl; package com.czg.service.market.service.impl;
import cn.hutool.core.util.NumberUtil;
import com.czg.account.entity.ShopUser; import com.czg.account.entity.ShopUser;
import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopInfoService;
import com.czg.account.service.ShopUserService; import com.czg.account.service.ShopUserService;
@@ -8,13 +7,12 @@ import com.czg.account.vo.PointsExchangeSummaryVo;
import com.czg.exception.CzgException; import com.czg.exception.CzgException;
import com.czg.market.dto.MkPointsGoodsRecordDTO; import com.czg.market.dto.MkPointsGoodsRecordDTO;
import com.czg.market.dto.MkPointsGoodsRecordQueryDTO; 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.entity.MkPointsGoodsRecord;
import com.czg.market.service.MkPointsGoodsRecordService; import com.czg.market.service.MkPointsGoodsRecordService;
import com.czg.service.market.mapper.MkPointsGoodsRecordMapper; 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.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -47,6 +45,7 @@ public class MkPointsGoodsRecordServiceImpl extends ServiceImpl<MkPointsGoodsRec
.like(MkPointsGoodsRecord::getGoodsCategory, param.getGoodsCategory()) .like(MkPointsGoodsRecord::getGoodsCategory, param.getGoodsCategory())
, MkPointsGoodsRecordDTO.class); , MkPointsGoodsRecordDTO.class);
pages.getRecords().forEach(data -> { pages.getRecords().forEach(data -> {
data.fillCouponInfo();
ShopUser shopUser = shopUserService.getOne(query().eq(ShopUser::getId, data.getShopUserId()).eq(ShopUser::getMainShopId, mainIdByShopId)); ShopUser shopUser = shopUserService.getOne(query().eq(ShopUser::getId, data.getShopUserId()).eq(ShopUser::getMainShopId, mainIdByShopId));
data.setHeadImg(shopUser.getHeadImg()); data.setHeadImg(shopUser.getHeadImg());
data.setNickName(shopUser.getNickName()); data.setNickName(shopUser.getNickName());

View File

@@ -3,20 +3,22 @@ package com.czg.service.market.service.impl;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.czg.BaseQueryParam; import com.czg.BaseQueryParam;
import com.czg.exception.CzgException; 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.MkPointsGoodsRecordService;
import com.czg.market.service.MkPointsGoodsService;
import com.czg.market.service.MkPointsUserService; import com.czg.market.service.MkPointsUserService;
import com.czg.market.service.ShopCouponService; import com.czg.market.service.ShopCouponService;
import com.czg.order.dto.PointGoodsRefundDTO; 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.czg.utils.PageUtil;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl; 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 jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -97,7 +99,9 @@ public class MkPointsGoodsServiceImpl extends ServiceImpl<MkPointsGoodsMapper, M
queryWrapper.eq(MkPointsGoodsRecord::getStatus, status); queryWrapper.eq(MkPointsGoodsRecord::getStatus, status);
} }
} }
return goodsRecordService.page(Page.of(page, size), queryWrapper); Page<MkPointsGoodsRecord> pages = goodsRecordService.page(Page.of(page, size), queryWrapper);
pages.getRecords().forEach(MkPointsGoodsRecord::fillCouponInfo);
return pages;
} }
@Override @Override

View File

@@ -3,6 +3,7 @@ package com.czg.service.order.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson2.JSONObject;
import com.czg.account.entity.ShopUser; import com.czg.account.entity.ShopUser;
import com.czg.account.service.ShopUserService; import com.czg.account.service.ShopUserService;
import com.czg.exception.CzgException; 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.MkPointsGoods;
import com.czg.market.entity.MkPointsGoodsRecord; import com.czg.market.entity.MkPointsGoodsRecord;
import com.czg.market.entity.MkPointsUser; import com.czg.market.entity.MkPointsUser;
import com.czg.market.entity.ShopCoupon;
import com.czg.market.enums.PointsConstant; import com.czg.market.enums.PointsConstant;
import com.czg.market.service.MkPointsGoodsRecordService; import com.czg.market.service.*;
import com.czg.market.service.MkPointsGoodsService;
import com.czg.market.service.MkPointsUserService;
import com.czg.market.service.MkShopCouponRecordService;
import com.czg.order.dto.PointGoodsExchangeDTO; import com.czg.order.dto.PointGoodsExchangeDTO;
import com.czg.order.dto.PointGoodsRefundDTO; import com.czg.order.dto.PointGoodsRefundDTO;
import com.czg.order.service.PointsGoodPayService; import com.czg.order.service.PointsGoodPayService;
@@ -46,6 +45,8 @@ public class PointsGoodPayServiceImpl implements PointsGoodPayService {
@Resource @Resource
private MkPointsGoodsRecordService goodsRecordService; private MkPointsGoodsRecordService goodsRecordService;
@Resource @Resource
private ShopCouponService shopCouponService;
@Resource
private MkShopCouponRecordService couponRecordService; private MkShopCouponRecordService couponRecordService;
@Resource @Resource
@Lazy @Lazy
@@ -151,6 +152,10 @@ public class PointsGoodPayServiceImpl implements PointsGoodPayService {
} }
record.setIsDel(0); record.setIsDel(0);
if ("优惠券".equals(goods.getGoodsCategory())) { if ("优惠券".equals(goods.getGoodsCategory())) {
ShopCoupon coupon = shopCouponService.getById(goods.getCouponId());
if (coupon != null) {
record.setCouponJson(JSONObject.toJSONString(coupon));
}
record.setStatus("已完成"); record.setStatus("已完成");
record.setCheckoutTime(LocalDateTime.now()); record.setCheckoutTime(LocalDateTime.now());
goodsRecordService.save(record); goodsRecordService.save(record);