优惠券 信息 填充

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;
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<MkPointsGoodsRecord> pages = pointsGoodsService.getGoodsRecordPage(page, size, shopId, status, StpKit.USER.getLoginIdAsLong());
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;
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);
}
}
}
}
}

View File

@@ -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<MkPointsGoodsRec
.like(MkPointsGoodsRecord::getGoodsCategory, param.getGoodsCategory())
, MkPointsGoodsRecordDTO.class);
pages.getRecords().forEach(data -> {
data.fillCouponInfo();
ShopUser shopUser = shopUserService.getOne(query().eq(ShopUser::getId, data.getShopUserId()).eq(ShopUser::getMainShopId, mainIdByShopId));
data.setHeadImg(shopUser.getHeadImg());
data.setNickName(shopUser.getNickName());

View File

@@ -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<MkPointsGoodsMapper, M
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

View File

@@ -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);