Merge remote-tracking branch 'origin/master'

This commit is contained in:
Tankaikai
2025-02-17 18:13:01 +08:00
55 changed files with 2254 additions and 83 deletions

View File

@@ -0,0 +1,75 @@
package com.czg.account.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 活动 实体类。
*
* @author ww
* @since 2025-02-17
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShopActivateDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@NotNull(message = "主键不能为空", groups = {UpdateGroup.class})
private Long id;
private Long shopId;
/**
* 充值金额
*/
@NotNull(message = "充值金额不能为空", groups = {InsertGroup.class, UpdateGroup.class})
private Integer amount;
/**
* 赠送金额
*/
private Integer giftAmount;
/**
* 赠送积分
*/
private Integer giftPoints;
/**
* 是否赠送优惠卷 0否 1是
*/
private Integer isGiftCoupon = 0;
/**
* 优惠卷id
*/
private Long couponId;
/**
* 优惠卷数量
*/
private Integer num;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,142 @@
package com.czg.account.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Time;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 优惠券 实体类。
*
* @author ww
* @since 2025-02-17
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShopCouponDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 自增
*/
private Long id;
/**
* 状态0-关闭 1 正常
*/
private Integer status;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/**
* 名称(无意义)
*/
private String title;
private String shopId;
/**
* 已使用数量
*/
private Integer useNumber;
/**
* 发放数量
*/
private Integer number;
/**
* 剩余数量
*/
private Integer leftNumber;
/**
* 有效期类型,可选值为 fixed固定时间/custom自定义时间
*/
private String validityType;
/**
* 有效天数
*/
private Integer validDays;
/**
* 隔多少天生效
*/
private Integer daysToTakeEffect;
/**
* 有效开始时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime validStartTime;
/**
* 有效结束时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime validEndTime;
/**
* 周 数组["周一","周二"]
*/
private String userDays;
/**
* all-全时段 custom-指定时段
*/
private String useTimeType;
/**
* 可用开始时间
*/
@JSONField(format = "HH:mm:ss")
private Time useStartTime;
/**
* 可用结束时间
*/
@JSONField(format = "HH:mm:ss")
private Time useEndTime;
/**
* 1-满减 2-商品
*/
private Integer type;
/**
* 满多少金额
*/
private BigDecimal fullAmount;
/**
* 减多少金额
*/
private BigDecimal discountAmount;
/**
* 描述
*/
private String description;
/**
* 发放人
*/
private String editor;
}

View File

@@ -0,0 +1,24 @@
package com.czg.account.dto.user.userinfo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author Administrator
*/
@Data
public class UserInfoAssetsSummaryDTO {
/**
* 总余额
*/
private BigDecimal amount;
/**
* 总积分
*/
private Integer points;
/**
* 可使用优惠券数量
*/
private Integer couponNum;
}

View File

@@ -0,0 +1,17 @@
package com.czg.account.dto.user.userinfo;
import com.czg.account.entity.UserInfo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author Administrator
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserInfoDTO extends UserInfo {
/**
* 用户资产概述
*/
private UserInfoAssetsSummaryDTO assetsSummary;
}

View File

@@ -0,0 +1,74 @@
package com.czg.account.entity;
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.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 活动 实体类。
*
* @author ww
* @since 2025-02-17
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_activate")
public class ShopActivate implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto)
private Long id;
private Long shopId;
/**
* 充值金额
*/
private Integer amount;
/**
* 赠送金额
*/
private Integer giftAmount;
/**
* 赠送积分
*/
private Integer giftPoints;
/**
* 是否赠送优惠卷 0否 1是
*/
private Integer isGiftCoupon;
/**
* 优惠卷id
*/
private Long couponId;
/**
* 优惠卷数量
*/
private Integer num;
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,117 @@
package com.czg.account.entity;
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;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 活动商品赠送记录表 实体类。
*
* @author ww
* @since 2025-02-17
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_activate_in_record")
public class ShopActivateInRecord implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 会员id
*/
private Long vipUserId;
/**
* 卷Id (校验是否可用)
*/
private Long couponId;
/**
* 卷描述 满10减2/商品卷
*/
private String name;
/**
* 1-满减 2-商品
*/
private Integer type;
/**
* 商品id
*/
private Long proId;
/**
* 满多少金额
*/
private BigDecimal fullAmount;
/**
* 减多少金额
*/
private BigDecimal discountAmount;
/**
* 赠送数量
*/
private Integer num;
/**
* 未使用数量
*/
private Integer overNum;
/**
* 店铺id
*/
private Long shopId;
/**
* 来源活动id
*/
private Long sourceActId;
private Long sourceFlowId;
/**
* 可用开始时间
*/
private LocalDateTime useStartTime;
/**
* 可用结束时间
*/
private LocalDateTime useEndTime;
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
private String couponJson;
/**
* invited/activate
*/
private String source;
}

View File

@@ -0,0 +1,79 @@
package com.czg.account.entity;
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.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 活动赠送商品使用记录表 实体类。
*
* @author ww
* @since 2025-02-17
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_activate_out_record")
public class ShopActivateOutRecord implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto)
private Long id;
private Long shopId;
/**
* 订单id
*/
private Long orderId;
/**
* 商品赠送Id tb_activate_in_record的id
*/
private Long giveId;
/**
* 会员id
*/
private Long vipUserId;
/**
* 1-满减 2-商品
*/
private Integer type;
/**
* 使用数量
*/
private Integer useNum;
/**
* 退单量
*/
private Integer refNum;
/**
* 新建: create 完成: closed, 取消cancel,
*/
private String status;
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,145 @@
package com.czg.account.entity;
import com.alibaba.fastjson2.annotation.JSONField;
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.sql.Time;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 优惠券 实体类。
*
* @author ww
* @since 2025-02-17
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_coupon")
public class ShopCoupon implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 自增
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 状态0-关闭 1 正常
*/
private Integer status;
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
/**
* 名称(无意义)
*/
private String title;
private String shopId;
/**
* 已使用数量
*/
private Integer useNumber;
/**
* 发放数量
*/
private Integer number;
/**
* 剩余数量
*/
private Integer leftNumber;
/**
* 有效期类型,可选值为 fixed固定时间/custom自定义时间
*/
private String validityType;
/**
* 有效天数
*/
private Integer validDays;
/**
* 隔多少天生效
*/
private Integer daysToTakeEffect;
/**
* 有效开始时间
*/
private LocalDateTime validStartTime;
/**
* 有效结束时间
*/
private LocalDateTime validEndTime;
/**
* 周 数组["周一","周二"]
*/
private String userDays;
/**
* all-全时段 custom-指定时段
*/
private String useTimeType;
/**
* 可用开始时间
*/
private Time useStartTime;
/**
* 可用结束时间
*/
private Time useEndTime;
/**
* 1-满减 2-商品
*/
private Integer type;
/**
* 满多少金额
*/
private BigDecimal fullAmount;
/**
* 减多少金额
*/
private BigDecimal discountAmount;
/**
* 描述
*/
private String description;
/**
* 发放人
*/
private String editor;
}

View File

@@ -106,11 +106,6 @@ public class ShopUser implements Serializable {
*/
private String code;
/**
* 会员码
*/
private String dynamicCode;
/**
* 最近一次积分变动时间
*/

View File

@@ -0,0 +1,14 @@
package com.czg.account.service;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.ShopActivateInRecord;
/**
* 活动商品赠送记录表 服务层。
*
* @author ww
* @since 2025-02-17
*/
public interface ShopActivateInRecordService extends IService<ShopActivateInRecord> {
}

View File

@@ -0,0 +1,14 @@
package com.czg.account.service;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.ShopActivateOutRecord;
/**
* 活动赠送商品使用记录表 服务层。
*
* @author ww
* @since 2025-02-17
*/
public interface ShopActivateOutRecordService extends IService<ShopActivateOutRecord> {
}

View File

@@ -0,0 +1,24 @@
package com.czg.account.service;
import com.czg.account.dto.ShopActivateDTO;
import com.czg.account.entity.ShopActivate;
import com.mybatisflex.core.service.IService;
import java.util.List;
/**
* 活动 服务层。
*
* @author ww
* @since 2025-02-17
*/
public interface ShopActivateService extends IService<ShopActivate> {
List<ShopActivateDTO> getList();
Boolean add(ShopActivateDTO activateDTO);
Boolean edit(ShopActivateDTO activateDTO);
}

View File

@@ -0,0 +1,40 @@
package com.czg.account.service;
import com.czg.account.dto.ShopCouponDTO;
import com.czg.account.entity.ShopActivateOutRecord;
import com.czg.account.entity.ShopCoupon;
import com.mybatisflex.core.service.IService;
import java.util.List;
/**
* 优惠券 服务层。
*
* @author ww
* @since 2025-02-17
*/
public interface ShopCouponService extends IService<ShopCoupon> {
/**
* 优惠券列表
*
* @param shopId 店铺id
* @param status 状态 0 未使用 1已使用 -1已过期
* @return
*/
List<ShopCoupon> getList(Long shopId, Integer status);
ShopCouponDTO getCouponById(ShopCouponDTO couponDTO);
Boolean add(ShopCouponDTO couponDTO);
Boolean edit(ShopCouponDTO couponDTO);
Boolean delete(Long id);
Boolean find(Long id);
Boolean use(Integer shopId, Integer orderId, Integer vipUserId, List<ShopActivateOutRecord> param);
Boolean refund(List<ShopActivateOutRecord> param);
}

View File

@@ -1,5 +1,6 @@
package com.czg.account.service;
import com.czg.account.dto.user.userinfo.UserInfoDTO;
import com.czg.account.entity.UserInfo;
import com.mybatisflex.core.service.IService;
@@ -11,4 +12,5 @@ import com.mybatisflex.core.service.IService;
*/
public interface UserInfoService extends IService<UserInfo> {
UserInfoDTO getInfo(long userInfoId);
}

View File

@@ -0,0 +1,43 @@
package com.czg.account.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class UserCouponVo {
private Long id;
private BigDecimal fullAmount;
private BigDecimal discountAmount;
private Long couponId;
private Long proId;
// 商品名称
private String productName;
private String productCover;
//优惠券名称
private String name;
//优惠券类型 1 满减 2 商品券
private Integer type;
//数量
private Integer num;
//到期时间
private Date endTime;
private Long expireTime;
private String useRestrictions;
private boolean isUse = false;
//当前使用数量
private BigDecimal currentUseNum;
private Integer finalUseNum;
private BigDecimal finalDiscountAmount = new BigDecimal(0);
public void setEndTime(Date endTime) {
this.endTime = endTime;
if(endTime!=null){
expireTime=endTime.getTime();
}
}
}