会员积分代码提交
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 取消
|
||||
*
|
||||
|
||||
@@ -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, "[]"));
|
||||
|
||||
Reference in New Issue
Block a user