diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberExpFlowDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberExpFlowDTO.java new file mode 100644 index 00000000..91fa418e --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberExpFlowDTO.java @@ -0,0 +1,63 @@ + +package com.czg.market.dto; + +import java.io.Serializable; +import java.time.LocalDateTime; +import com.alibaba.fastjson2.annotation.JSONField; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 会员经验值流水表 实体类。 + * + * @author zs + * @since 2025-09-12 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class MemberExpFlowDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 描述 + */ + private String content; + + /** + * 类型 + - + */ + private String type; + + /** + * 来源类型 COST消费赠送 RECHARGE充值 + */ + private String sourceType; + + /** + * 赠送数量 + */ + private Integer value; + + /** + * 来源id + */ + private Long sourceId; + + private Long userId; + + private Long shopId; + + /** + * 创建时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberLevelDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberLevelDTO.java index 031a298f..7c9d10f6 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberLevelDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MemberLevelDTO.java @@ -34,7 +34,7 @@ public class MemberLevelDTO { */ @Min(value = 0, message = "成长值不能小于0") @NotNull(message = "成长值不为空") - private Long experienceValue; + private Integer experienceValue; /** * 会员折扣 @@ -63,8 +63,10 @@ public class MemberLevelDTO { /** * 周期时间包含周 月 年 日 */ - @NotBlank(message = "周期时间不为空", groups = MemberLevelCycleRewardGroup.class) - private String cycleTime; + @NotNull(message = "周期时间不为空", groups = MemberLevelCycleRewardGroup.class) + private Integer cycleTime; + @NotBlank(message = "周期单位不为空", groups = MemberLevelCycleRewardGroup.class) + private String cycleUnit; /** * 赠送积分 @@ -75,7 +77,13 @@ public class MemberLevelDTO { /** * 优惠券列表 */ - private List cycleRewardCouponList; + private List cycleRewardCouponList; + @Data + public static class ConfigCoupon { + @Min(value = 1, message = "数量不能小于1") + private Integer num; + private ShopCoupon coupon; + } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MemberExpFlow.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MemberExpFlow.java new file mode 100644 index 00000000..ee12d0ff --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MemberExpFlow.java @@ -0,0 +1,73 @@ +package com.czg.market.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 zs + * @since 2025-09-12 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_member_exp_flow") +public class MemberExpFlow implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 描述 + */ + private String content; + + /** + * 类型 + - + */ + private String type; + + /** + * 来源类型 COST消费赠送 RECHARGE充值 + */ + private String sourceType; + + /** + * 赠送数量 + */ + private Integer value; + + /** + * 来源id + */ + private Long sourceId; + + private Long userId; + + private Long shopId; + + /** + * 创建时间 + */ + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + private BigDecimal money; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MemberLevelConfig.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MemberLevelConfig.java index 2162cd65..2ac8f657 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MemberLevelConfig.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MemberLevelConfig.java @@ -46,7 +46,7 @@ public class MemberLevelConfig implements Serializable { /** * 所需成长值 */ - private Long experienceValue; + private Integer experienceValue; /** * 会员折扣 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MemberExpFlowService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MemberExpFlowService.java new file mode 100644 index 00000000..3c6f6f3a --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MemberExpFlowService.java @@ -0,0 +1,14 @@ +package com.czg.market.service; + +import com.mybatisflex.core.service.IService; +import com.czg.market.entity.MemberExpFlow; + +/** + * 会员经验值流水表 服务层。 + * + * @author zs + * @since 2025-09-12 + */ +public interface MemberExpFlowService extends IService { + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/TbMemberConfigService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/TbMemberConfigService.java index 7838af69..3eaf021e 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/TbMemberConfigService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/TbMemberConfigService.java @@ -1,5 +1,6 @@ package com.czg.market.service; +import com.czg.constant.TableValueConstant; import com.czg.market.dto.MemberConfigDTO; import com.czg.market.dto.MemberLevelDTO; import com.czg.market.vo.MemberConfigVO; @@ -40,6 +41,6 @@ public interface TbMemberConfigService extends IService { * 发放会员奖励 * @param isCost 是否是消费 true 消费 false 充值 */ - boolean deliver(Long shopId, Long userId, BigDecimal money, boolean isCost); + boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, boolean isCost); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberConfigVO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberConfigVO.java index fbc3c03a..c2e27923 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberConfigVO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberConfigVO.java @@ -8,12 +8,13 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Data -public class MemberConfigVO { +public class MemberConfigVO implements Serializable { /** * id */ diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberLevelVO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberLevelVO.java index f6827cb8..1e592191 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberLevelVO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/MemberLevelVO.java @@ -1,6 +1,10 @@ package com.czg.market.vo; +import com.czg.market.dto.MemberLevelDTO; import com.czg.market.entity.ShopCoupon; +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; import lombok.Data; import java.io.Serializable; @@ -11,9 +15,12 @@ import java.util.List; public class MemberLevelVO implements Serializable { + private String remark; + /** * ID */ + @Id(keyType = KeyType.Auto) private Long id; /** @@ -24,7 +31,7 @@ public class MemberLevelVO implements Serializable { /** * 所需成长值 */ - private Long experienceValue; + private Integer experienceValue; /** * 会员折扣 @@ -59,7 +66,7 @@ public class MemberLevelVO implements Serializable { /** * 优惠券列表 */ - private List cycleRewardCouponList; + private List cycleRewardCouponList; /** * 店铺id diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java b/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java new file mode 100644 index 00000000..fd495352 --- /dev/null +++ b/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java @@ -0,0 +1,25 @@ +package com.czg.constant; + +import lombok.Getter; + +/** + * @author Administrator + */ +public interface TableValueConstant { + interface MemberExpFlow { + @Getter + enum Type { + RECHARGE("RECHARGE", "充值增积分"), + PAY("PAY", "购买会员增积分"), + COST("COST", "消费增积分"); + private final String code; + private final String msg; + + Type(String code, String msg) { + this.code = code; + this.msg = msg; + } + } + + } +} diff --git a/cash-service/code-generator/src/main/java/com/czg/Main.java b/cash-service/code-generator/src/main/java/com/czg/Main.java index c70b7478..ae56f6c2 100644 --- a/cash-service/code-generator/src/main/java/com/czg/Main.java +++ b/cash-service/code-generator/src/main/java/com/czg/Main.java @@ -10,10 +10,11 @@ import com.zaxxer.hikari.HikariDataSource; * @author ww */ public class Main { - private final static String BASE_URL = "rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com"; +// private final static String BASE_URL = "rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com"; + private final static String BASE_URL = "192.168.1.31"; private final static String PORT = "3306"; - private final static String USERNAME = "cashier"; - private final static String PASSWORD = "Cashier@1@"; + private final static String USERNAME = "root"; + private final static String PASSWORD = "Chaozg123."; private final static String DATABASE = "czg_cashier"; static String currentWorkingDirectory = System.getProperty("user.dir"); static String basePackage = "com.czg."; @@ -24,11 +25,11 @@ public class Main { // tableName 指定需要生成的表 // String packageName = "system"; - String packageName = "account"; +// String packageName = "account"; // String packageName = "product"; -// String packageName = "order"; + String packageName = "market"; - String tableName = "tb_order_info"; + String tableName = "tb_member_exp_flow"; String author = "zs"; //是否生成DTO实体 默认生成 boolean isGenerateDto = true; diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MemberExpFlowMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MemberExpFlowMapper.java new file mode 100644 index 00000000..d1f76bc7 --- /dev/null +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MemberExpFlowMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.market.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.market.entity.MemberExpFlow; + +/** + * 会员经验值流水表 映射层。 + * + * @author zs + * @since 2025-09-12 + */ +public interface MemberExpFlowMapper extends BaseMapper { + +} diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MemberExpFlowServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MemberExpFlowServiceImpl.java new file mode 100644 index 00000000..95da83eb --- /dev/null +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MemberExpFlowServiceImpl.java @@ -0,0 +1,18 @@ +package com.czg.service.market.service.impl; + +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.market.entity.MemberExpFlow; +import com.czg.market.service.MemberExpFlowService; +import com.czg.service.market.mapper.MemberExpFlowMapper; +import org.springframework.stereotype.Service; + +/** + * 会员经验值流水表 服务层实现。 + * + * @author zs + * @since 2025-09-12 + */ +@Service +public class MemberExpFlowServiceImpl extends ServiceImpl implements MemberExpFlowService{ + +} diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java index d329fdc5..fc2288a7 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java @@ -6,18 +6,16 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import com.czg.constant.TableValueConstant; import com.czg.market.dto.MemberConfigDTO; import com.czg.market.dto.MemberLevelDTO; import com.czg.account.entity.*; import com.czg.account.service.*; -import com.czg.market.entity.MemberOrder; +import com.czg.market.entity.*; import com.czg.market.service.MemberOrderService; import com.czg.market.vo.MemberConfigVO; import com.czg.market.vo.MemberLevelVO; import com.czg.exception.CzgException; -import com.czg.market.entity.MemberLevelConfig; -import com.czg.market.entity.ShopCoupon; -import com.czg.market.entity.TbMemberConfig; import com.czg.market.service.MemberLevelConfigService; import com.czg.market.service.TbMemberConfigService; import com.czg.order.entity.OrderInfo; @@ -194,7 +192,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl { MemberLevelVO memberLevelVO = BeanUtil.copyProperties(item, MemberLevelVO.class, "cycleRewardCouponList"); if (StrUtil.isNotBlank(item.getCycleRewardCouponList())) { - memberLevelVO.setCycleRewardCouponList(JSONArray.parseArray(item.getCycleRewardCouponList()).toList(ShopCoupon.class)); + memberLevelVO.setCycleRewardCouponList(JSONArray.parseArray(item.getCycleRewardCouponList()).toList(MemberLevelDTO.ConfigCoupon.class)); } memberLevelVOS.add(memberLevelVO); }); @@ -203,7 +201,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl { + if (memberConfig.getCostReward() != null) { + exp = money.longValue() * memberConfig.getCostReward(); + } + } + case RECHARGE -> { + if (memberConfig.getRechargeReward() != null) { + exp = money.longValue() * memberConfig.getRechargeReward(); + } + } + case PAY -> { + + } + + } // 消费经验 if (memberConfig.getCostReward() != null && isCost) { - shopUser.setExperience(money.longValue() * memberConfig.getCostReward() + shopUser.getExperience()); + exp = money.longValue() * memberConfig.getCostReward() + shopUser.getExperience(); +// shopUser.setExperience(); } // 充值经验 @@ -239,6 +255,13 @@ public class TbMemberConfigServiceImpl extends ServiceImpl + + + +