会员积分代码提交

This commit is contained in:
Tankaikai
2025-02-26 14:14:45 +08:00
parent 6488a55355
commit 9b1961c77a
11 changed files with 508 additions and 46 deletions

View File

@@ -0,0 +1,50 @@
package com.czg.account.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.List;
/**
* 积分兑换订单支付类型枚举
*
* @author tankaikai
* @since 2025-02-26 10:29
*/
@Getter
@RequiredArgsConstructor
public enum PointsOrderPayTypeEnum {
/**
* 积分
*/
POINTS("POINTS", "积分支付"),
/**
* 积分+微信
*/
WECHAT("WECHAT", "积分+微信"),
/**
* 积分+支付宝
*/
ALIPAY("ALIPAY", "积分+支付宝"),
;
private final String value;
private final String text;
public static List<String> getValues() {
return Arrays.stream(values()).map(PointsOrderPayTypeEnum::getValue).toList();
}
public static String getText(String value) {
PointsOrderPayTypeEnum item = Arrays.stream(values()).filter(obj -> value.equals(obj.getValue())).findFirst().orElse(null);
if (item != null) {
return item.getText();
}
return null;
}
}

View File

@@ -0,0 +1,67 @@
package com.czg.account.param;
import com.alibaba.fastjson2.annotation.JSONField;
import com.czg.validator.group.InsertGroup;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 积分订单创建入参
*
* @author tankaikai
* @since 2025-02-26 10:03
*/
@Data
public class PointsOrderCreateParam implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 店铺id
*/
@JSONField(serialize = false)
@NotNull(message = "店铺id不能为空", groups = InsertGroup.class)
private Long shopId;
/**
* 积分商品id
*/
@NotNull(message = "积分商品id不能为空", groups = InsertGroup.class)
private Long pointsGoodsId;
/**
* 领取方式 self-自取 post-邮寄
*/
@NotBlank(message = "领取方式不能为空", groups = InsertGroup.class)
private String pickupMethod;
/**
* 用户id
*/
@NotNull(message = "用户id不能为空", groups = InsertGroup.class)
private Long userId;
/**
* 用户昵称
*/
@NotBlank(message = "用户昵称不能为空", groups = InsertGroup.class)
private String nickName;
/**
* 手机号码
*/
private String mobile;
/**
* 会员头像
*/
private String avatarUrl;
/**
* 积分商品名称
*/
@JSONField(serialize = false)
private String pointsGoodsName;
/**
* 商品图片URL
*/
@JSONField(serialize = false)
private String goodsImageUrl;
}

View File

@@ -0,0 +1,37 @@
package com.czg.account.param;
import com.czg.validator.group.DefaultGroup;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 积分订单支付入参
*
* @author tankaikai
* @since 2025-02-26 10:03
*/
@Data
public class PointsOrderPayParam implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 订单id(积分兑换记录id)
*/
@NotNull(message = "订单id不能为空", groups = DefaultGroup.class)
private Long id;
/**
* 支付类型 POINTS-积分 WECHAT-微信 ALIPAY-支付宝 UNIONPAY-银联云闪付
*/
@NotBlank(message = "支付类型不能为空", groups = DefaultGroup.class)
private String payType;
/**
* 微信openId/支付完userId
*/
@NotBlank(message = "openId不能为空", groups = DefaultGroup.class)
private String openId;
}

View File

@@ -4,6 +4,8 @@ import com.czg.account.dto.points.PointsExchangeRecordDTO;
import com.czg.account.entity.PointsExchangeRecord;
import com.czg.account.param.PointsExchangeCfParam;
import com.czg.account.param.PointsExchangeRecordParam;
import com.czg.account.param.PointsOrderCreateParam;
import com.czg.account.param.PointsOrderPayParam;
import com.czg.account.vo.PointsExchangeSummaryVo;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
@@ -39,6 +41,22 @@ public interface PointsExchangeRecordService extends IService<PointsExchangeReco
*/
void checkout(String couponCode);
/**
* 创建兑换订单
*
* @param param 兑换入参
* @return 兑换详情
*/
PointsExchangeRecordDTO create(PointsOrderCreateParam param);
/**
* 支付兑换订单
*
* @param param 支付入参
* @return 支付结果
*/
PointsExchangeRecordDTO pay(PointsOrderPayParam param);
/**
* 取消
*

View File

@@ -3,12 +3,14 @@ package com.czg.product.vo;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.annotation.JSONField;
import com.czg.product.dto.ProdSkuDTO;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalTime;
import java.util.List;
/**
* 商品规格详情
@@ -105,6 +107,10 @@ public class ShopProductInfoVo implements Serializable {
*/
@JSONField(serialize = false)
private LocalTime endTime;
/**
* 商品规格列表
*/
private List<ProdSkuDTO> skuList;
public Object getImages() {
return JSON.parseArray(Convert.toStr(images, "[]"));