diff --git a/doc/团购查询单条数据结构.java b/doc/团购查询单条数据结构.java index fc7da67..3084aeb 100644 --- a/doc/团购查询单条数据结构.java +++ b/doc/团购查询单条数据结构.java @@ -1,7 +1,6 @@ { "主键":"id", "活动名称":"name", - "商品活动图":"productImage", "活动简介":"introduction", "单位":"unit", diff --git a/muyu-gateway/src/main/java/com/muyu/gateway/config/CorsConfig.java b/muyu-gateway/src/main/java/com/muyu/gateway/config/CorsConfig.java new file mode 100644 index 0000000..1dd71ed --- /dev/null +++ b/muyu-gateway/src/main/java/com/muyu/gateway/config/CorsConfig.java @@ -0,0 +1,58 @@ +package com.muyu.gateway.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.web.cors.reactive.CorsUtils; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebFilter; +import org.springframework.web.server.WebFilterChain; +import reactor.core.publisher.Mono; + +/** + * 跨域配置 + * + * @author ruoyi + */ +@Configuration +public class CorsConfig +{ + /** + * 这里为支持的请求头,如果有自定义的header字段请自己添加 + */ + private static final String ALLOWED_HEADERS = "X-Requested-With, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, Admin-Token, App-Token"; + private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE,OPTIONS,HEAD"; + private static final String ALLOWED_ORIGIN = "*"; + private static final String ALLOWED_EXPOSE = "*"; + private static final String MAX_AGE = "18000L"; + + @Bean + public WebFilter corsFilter() + { + return (ServerWebExchange ctx, WebFilterChain chain) -> { + ServerHttpRequest request = ctx.getRequest(); + if (CorsUtils.isCorsRequest(request)) + { + ServerHttpResponse response = ctx.getResponse(); + HttpHeaders headers = response.getHeaders(); + headers.add("Access-Control-Allow-Headers", ALLOWED_HEADERS); + headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS); + headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN); + headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE); + headers.add("Access-Control-Max-Age", MAX_AGE); + headers.add("Access-Control-Allow-Credentials", "true"); + if (request.getMethod() == HttpMethod.OPTIONS) + { + response.setStatusCode(HttpStatus.OK); + return Mono.empty(); + } + } + return chain.filter(ctx); + }; + } +} + diff --git a/muyu-modules/muyu-group/group-common/pom.xml b/muyu-modules/muyu-group/group-common/pom.xml new file mode 100644 index 0000000..a871ea2 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.muyu + muyu-marketing + 3.6.3 + + + group-common + + + 17 + 17 + UTF-8 + + + + + + + com.muyu + muyu-common-core + + + + diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamInfo.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamInfo.java new file mode 100644 index 0000000..517fbd6 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamInfo.java @@ -0,0 +1,141 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoEditModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoUpdModel; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "activity_team_info", autoResultMap = true) +public class ActivityTeamInfo extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 活动排序 + */ + private long sort; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private long strategyId; + + /** + * 公共添加模型,转换成添加对象 + * @param activityTeamInfoAddModel 添加模型 + * @return 添加对象 + */ + public static ActivityTeamInfo addModelBuild(ActivityTeamInfoAddModel activityTeamInfoAddModel){ + return ActivityTeamInfo.builder() + .name(activityTeamInfoAddModel.getName()) + .productId(activityTeamInfoAddModel.getProductId()) + .productImage(activityTeamInfoAddModel.getProductImage()) + .introduction(activityTeamInfoAddModel.getIntroduction()) + .unit(activityTeamInfoAddModel.getUnit()) + .imageList(activityTeamInfoAddModel.getImageList()) + .endTime(activityTeamInfoAddModel.getEndTime()) + .sort(activityTeamInfoAddModel.getSort()) + .content(activityTeamInfoAddModel.getContent()) + .status(activityTeamInfoAddModel.getStatus()) + .strategyType(activityTeamInfoAddModel.getStrategyType()) + .strategyId(activityTeamInfoAddModel.getStrategyId()) + .build(); + } + + /** + * 公共修改模型 转换成修改对象 + * @param activityTeamInfoEditModel + */ + public static ActivityTeamInfo editBuild(ActivityTeamInfoEditModel activityTeamInfoEditModel) { + return ActivityTeamInfo.builder() + .name(activityTeamInfoEditModel.getName()) + .unit(activityTeamInfoEditModel.getUnit()) + .status(activityTeamInfoEditModel.getStatus()) + .productId(activityTeamInfoEditModel.getProductId()) + .strategyType(activityTeamInfoEditModel.getStrategyType()) + .strategyId(activityTeamInfoEditModel.getStrategyId()) + .productImage(activityTeamInfoEditModel.getProductImage()) + .introduction(activityTeamInfoEditModel.getIntroduction()) + .imageList(activityTeamInfoEditModel.getImageList()) + .endTime(activityTeamInfoEditModel.getEndTime()) + .id(activityTeamInfoEditModel.getTeamId()) + .content(activityTeamInfoEditModel.getContent()) + .sort(activityTeamInfoEditModel.getSort()) + .build(); + } + /** + * 公共修改模型 转换成修改对象 + * @param activityTeamInfoUpdModel + */ + public static ActivityTeamInfo infoBuildModel(ActivityTeamInfoUpdModel activityTeamInfoUpdModel) { + return ActivityTeamInfo.builder() + .name(activityTeamInfoUpdModel.getName()) + .unit(activityTeamInfoUpdModel.getUnit()) + .status(activityTeamInfoUpdModel.getStatus()) + .productId(activityTeamInfoUpdModel.getProductId()) + .strategyType(activityTeamInfoUpdModel.getStrategyType()) + .strategyId(activityTeamInfoUpdModel.getStrategyId()) + .productImage(activityTeamInfoUpdModel.getProductImage()) + .introduction(activityTeamInfoUpdModel.getIntroduction()) + .imageList(activityTeamInfoUpdModel.getImageList()) + .endTime(activityTeamInfoUpdModel.getEndTime()) + .id(activityTeamInfoUpdModel.getId()) + .content(activityTeamInfoUpdModel.getContent()) + .sort(activityTeamInfoUpdModel.getSort()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamOpenInfo.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamOpenInfo.java new file mode 100644 index 0000000..572299e --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamOpenInfo.java @@ -0,0 +1,69 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "activity_team_open_info", autoResultMap = true) +public class ActivityTeamOpenInfo extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 团购活动ID + */ + private long teamId; + /** + * 团购类型 + */ + private String teamType; + /** + * 团购策略 + */ + private String teamStrategyId; + /** + * 参团类型 + */ + private String executiveType; + /** + * 结束团购时间 + */ + private Date endTime; + /** + * 商品ID + */ + private String productId; + /** + * 商品名称 + */ + private String productName; + /** + * 商品规格 + */ + private String productSku; + /** + * 开团标识 + */ + private String key; + /** + * 订单ID + */ + private String orderId; + /** + * 开团状态 + */ + private String status; +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java new file mode 100644 index 0000000..02bcc35 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java @@ -0,0 +1,112 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuEditModel; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuUpdModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuAddModel; +import com.muyu.marketing.domain.req.ActivityTeamSkuReq; +import com.muyu.marketing.domain.resp.ActivityTeamSkuInfoDetail; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "activity_team_product_sku_info", autoResultMap = true) +public class ActivityTeamProductSkuInfo extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 活动ID + */ + private long teamId; + /** + * 商品ID + */ + private Long productId; + /** + * 商品SKU + */ + private String productSku; + /** + * 拼团库存 + */ + private Long teamStock; + /** + * 剩余库存 + */ + private Long remainStock; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 通过模型钢构件对象 + * @param activityTeamProductSkuAddModel 模型 + * @return 对象 + */ + public static ActivityTeamProductSkuInfo modelBuild(ActivityTeamProductSkuAddModel activityTeamProductSkuAddModel) { + return ActivityTeamProductSkuInfo.builder() + .productId(activityTeamProductSkuAddModel.getProductId()) + .teamId(activityTeamProductSkuAddModel.getTeamId()) + .teamStock(activityTeamProductSkuAddModel.getTeamStock()) + .remainStock(activityTeamProductSkuAddModel.getTeamStock()) + .teamPrice(activityTeamProductSkuAddModel.getTeamPrice()) + .productSku(activityTeamProductSkuAddModel.getSku()) + .build(); + } + /** + * 将model模型转换成修改对象 + */ + public static ActivityTeamProductSkuInfo skuInfoBuild(ActivityTeamProductSkuEditModel activityTeamProductSkuEditModel){ + return ActivityTeamProductSkuInfo.builder() + .id(activityTeamProductSkuEditModel.getId()) + .teamId(activityTeamProductSkuEditModel.getTeamId()) + .productSku(activityTeamProductSkuEditModel.getSku()) + .teamPrice(activityTeamProductSkuEditModel.getTeamPrice()) + .teamStock(activityTeamProductSkuEditModel.getTeamStock()) + .productId(activityTeamProductSkuEditModel.getProductId()) + .build(); + } + public static ActivityTeamProductSkuInfo skuBuild(ActivityTeamProductSkuUpdModel activityTeamProductSkuUpdModel){ + return ActivityTeamProductSkuInfo.builder() + .id(activityTeamProductSkuUpdModel.getId()) + .teamPrice(activityTeamProductSkuUpdModel.getTeamPrice()) + .remainStock(activityTeamProductSkuUpdModel.getTeamStock()) + .teamStock(activityTeamProductSkuUpdModel.getTeamStock()) + .build(); + } + public static ActivityTeamProductSkuInfo skuBuildModel(ActivityTeamSkuAddModel activityTeamSkuAddModel){ + return ActivityTeamProductSkuInfo.builder() + .productSku(activityTeamSkuAddModel.getSku()) + .teamPrice(activityTeamSkuAddModel.getTeamPrice()) + .remainStock(activityTeamSkuAddModel.getTeamStock()) + .teamStock(activityTeamSkuAddModel.getTeamStock()) + .productId(activityTeamSkuAddModel.getProductId()) + .teamId(activityTeamSkuAddModel.getTeamId()) + .build(); + } + public static ActivityTeamProductSkuInfo skuModel(ActivityTeamProductSkuUpdModel activityTeamProductSkuUpdModel){ + return ActivityTeamProductSkuInfo.builder() + .id(activityTeamProductSkuUpdModel.getId()) + .teamPrice(activityTeamProductSkuUpdModel.getTeamPrice()) + .remainStock(activityTeamProductSkuUpdModel.getTeamStock()) + .teamStock(activityTeamProductSkuUpdModel.getTeamStock()) + .build(); + } +} + diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemption.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemption.java new file mode 100644 index 0000000..4c4190f --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemption.java @@ -0,0 +1,55 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "team_strategy_exemption", autoResultMap = true) +public class TeamStrategyExemption extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 持续时间 + */ + private long duration; + /** + * 免单人数 + */ + private long exemptionNumber; + /** + * 最大购买量 + */ + private long maxBuy; + /** + * 单次购买量 + */ + private long oneBuy; + /** + * 虚拟人数 + */ + private long virtualNumber; + /** + * 面单类型 + */ + private String type; + /** + * 返款阶梯 + */ + private String ruleInfo; + /** + * 策略状态 + */ + private String status; +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemptionHundred.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemptionHundred.java new file mode 100644 index 0000000..0225603 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemptionHundred.java @@ -0,0 +1,47 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "team_strategy_exemption_hundred", autoResultMap = true) +public class TeamStrategyExemptionHundred extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 持续时间 + */ + private long duration; + /** + * 最大购买量 + */ + private long maxBuy; + /** + * 单次购买量 + */ + private long oneBuy; + /** + * 虚拟人数 + */ + private long virtualNumber; + /** + * 策略状态 + */ + private String status; + /** + * 规则信息 + */ + private String ruleInfo; +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemptionOrdinary.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemptionOrdinary.java new file mode 100644 index 0000000..796af1c --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/TeamStrategyExemptionOrdinary.java @@ -0,0 +1,47 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.*; +import lombok.experimental.SuperBuilder; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "team_strategy_exemption_ordinary", autoResultMap = true) +public class TeamStrategyExemptionOrdinary extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 持续时间 + */ + private long duration; + /** + * 成团人数 + */ + private long teamNumber; + /** + * 最大购买量 + */ + private long maxBuy; + /** + * 单次购买量 + */ + private long oneBuy; + /** + * 虚拟人数 + */ + private long virtualNumber; + /** + * 策略状态 + */ + private String status; +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoAddModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoAddModel.java new file mode 100644 index 0000000..8dcbfe4 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoAddModel.java @@ -0,0 +1,104 @@ +package com.muyu.marketing.domain.model; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.marketing.domain.req.ActivityTeamInfoSaveReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; +import java.util.function.Supplier; + +/** + * 团购活动添加模型 + * + * @author DongZeLiang + * @date 2024-11-26 09:38 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamInfoAddModel { + + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private Long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + + private String unit; + /** + * 轮播图 + */ + + private String imageList; + /** + * 活动结束时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") + private Date endTime; + /** + * 活动排序 + */ + private Integer sort; + /** + * 商品SkU集合 + */ + private List activityTeamProductSkuAddModelList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + + public static ActivityTeamInfoAddModel addReqBuild (ActivityTeamInfoSaveReq activityTeamInfoSaveReq){ + return ActivityTeamInfoAddModel.builder() + .name(activityTeamInfoSaveReq.getName()) + .productId(activityTeamInfoSaveReq.getProductId()) + .productImage(activityTeamInfoSaveReq.getProductImage()) + .introduction(activityTeamInfoSaveReq.getIntroduction()) + .unit(activityTeamInfoSaveReq.getUnit()) + .imageList(activityTeamInfoSaveReq.getImageList()) + .endTime(activityTeamInfoSaveReq.getEndTime()) + .sort(activityTeamInfoSaveReq.getSort()) + .content(activityTeamInfoSaveReq.getContent()) + .status(activityTeamInfoSaveReq.getStatus()) + .strategyType(activityTeamInfoSaveReq.getStrategyType()) + .strategyId(activityTeamInfoSaveReq.getStrategyId()) + .activityTeamProductSkuAddModelList( + activityTeamInfoSaveReq.getTeamProjectSkuInfoAddReqList() + .stream() + .map(addReq -> ActivityTeamProductSkuAddModel.addReqBuild(addReq, activityTeamInfoSaveReq::getProductId)) + .toList() + ).build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoDetailModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoDetailModel.java new file mode 100644 index 0000000..e126b6d --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoDetailModel.java @@ -0,0 +1,102 @@ +package com.muyu.marketing.domain.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.marketing.domain.ActivityTeamInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +/** + * @program: 2204a-cloud-server + * @description: 团购活动商品信息规格详情模型 + * MengFanKuo + * 2024-11-26 14:22 + * * + */ +@Data +@AllArgsConstructor +@SuperBuilder +@NoArgsConstructor +public class ActivityTeamInfoDetailModel { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 活动排序 + */ + private long sort; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private long strategyId; + /** + * 规格 + */ + private List projectSkuInfoAddReqList; + + public static ActivityTeamInfoDetailModel skuInfoDetailBuild(ActivityTeamInfo activityTeamInfo, List infoServiceByListSkuInfo){ + return ActivityTeamInfoDetailModel.builder() + .id(activityTeamInfo.getId()) + .name(activityTeamInfo.getName()) + .productId(activityTeamInfo.getProductId()) + .productImage(activityTeamInfo.getProductImage()) + .content(activityTeamInfo.getContent()) + .endTime(activityTeamInfo.getEndTime()) + .imageList(activityTeamInfo.getImageList()) + .introduction(activityTeamInfo.getIntroduction()) + .projectSkuInfoAddReqList(infoServiceByListSkuInfo) + .sort(activityTeamInfo.getSort()) + .status(activityTeamInfo.getStatus()) + .strategyId(activityTeamInfo.getStrategyId()) + .strategyType(activityTeamInfo.getStrategyType()) + .build(); + } + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoEditModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoEditModel.java new file mode 100644 index 0000000..db65406 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoEditModel.java @@ -0,0 +1,84 @@ +package com.muyu.marketing.domain.model; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * 团购活动添加模型 + * + * @author DongZeLiang + * @date 2024-11-26 09:38 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamInfoEditModel { + /** + * id + */ + private Long teamId; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private Long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + + private String unit; + /** + * 轮播图 + */ + + private String imageList; + /** + * 活动结束时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") + private Date endTime; + /** + * 活动排序 + */ + private Integer sort; + /** + * 商品SkU集合 + */ + private List activityTeamProductSkuEditModels; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListModel.java new file mode 100644 index 0000000..e38fadf --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListModel.java @@ -0,0 +1,99 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.common.core.web.model.QueryModel; +import com.muyu.marketing.domain.ActivityTeamInfo; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.function.Consumer; +import java.util.function.Function; + +/** + * 团购活动雷彪查询结果模型 + * @author DongZeLiang + * @date 2024-11-20 14:18:10 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamInfoListModel { + + /** + * 拼团活动ID + */ + private Long id; + /** + * 拼团名称 + */ + private String name; + /** + * 参团人数 + */ + private Long addTeamNumber; + /** + * 拼团人数 + */ + private Long attendNumber; + /** + * 团购结束时间 + */ + private Date endTime; + /** + * 开团人数 + */ + private Long openTeamNumber; + /** + * 拼团商品图片 + */ + private String productImage; + /** + * 商品价格 + */ + private BigDecimal productPrice; + /** + * 剩余库存 + */ + private Long remainStock; + /** + * 团购状态 + */ + private String status; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + /** + * 团购库存 + */ + private Long teamStock; + + + public static ActivityTeamInfoListModel infoBuild(ActivityTeamInfo activityTeamInfo, Function function) { + ActivityTeamInfoListModel activityTeamInfoListModel = ActivityTeamInfoListModel.builder() + .id(activityTeamInfo.getId()) + .name(activityTeamInfo.getName()) +// .openTeamNumber(teamOpenTypeNumber) +// .addTeamNumber(teamInTypeNumber) +// .attendNumber(teamOpenTypeNumber + teamInTypeNumber) + .endTime(activityTeamInfo.getEndTime()) + .productImage(activityTeamInfo.getProductImage()) +// .teamPrice(discountPrice.getTeamPrice()) +// .productPrice(discountPrice.getProductPrice()) +// .teamStock(teamProductStockModel.getTeamStock()) +// .remainStock(teamProductStockModel.getRemainStock()) + .status(activityTeamInfo.getStatus()) + .build(); + return function.apply( + ActivityTeamInfoListModel.builder() + .id(activityTeamInfo.getId()) + .name(activityTeamInfo.getName()) + .endTime(activityTeamInfo.getEndTime()) + .productImage(activityTeamInfo.getProductImage()) + .status(activityTeamInfo.getStatus()) + ); + } + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListQueryModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListQueryModel.java new file mode 100644 index 0000000..d1d0129 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListQueryModel.java @@ -0,0 +1,32 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.common.core.web.model.QueryModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 团购活动雷彪查询模型 + * @author DongZeLiang + * @date 2024-11-20 14:18:10 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ActivityTeamInfoListQueryModel extends QueryModel { + + /** + * 搜索关键词 + */ + private String keyWord; + + /** + * 活动状态 + */ + private String status; + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoUpdModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoUpdModel.java new file mode 100644 index 0000000..c18bd31 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoUpdModel.java @@ -0,0 +1,83 @@ +package com.muyu.marketing.domain.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * 2204a-cloud-server + * 团购活动商品信息规格修改模型 + * MengFanKuo + * 2024-11-26 14:22 + * * + */ +@Data +@AllArgsConstructor +@SuperBuilder +@NoArgsConstructor +public class ActivityTeamInfoUpdModel { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 活动排序 + */ + private long sort; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private long strategyId; + /** + * 规格 + */ + private ActivityTeamSkuModel activityTeamSkuModel; + + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuAddModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuAddModel.java new file mode 100644 index 0000000..7d3ca35 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuAddModel.java @@ -0,0 +1,59 @@ +package com.muyu.marketing.domain.model; + + +import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.function.Function; +import java.util.function.Supplier; + +/** + * 团购spu库存添加模型 + * + * @author DongZeLiang + * @date 2024-11-26 09:36 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamProductSkuAddModel { + + /** + * 团购活动ID + */ + private Long teamId; + + /** + * 商品ID + */ + private Long productId; + + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + + public static ActivityTeamProductSkuAddModel addReqBuild(TeamProjectSkuInfoAddReq teamProjectSkuInfoAddReq, Supplier productId){ + return ActivityTeamProductSkuAddModel.builder() + .productId(productId.get()) + .sku(teamProjectSkuInfoAddReq.getSku()) + .teamStock(teamProjectSkuInfoAddReq.getTeamStock()) + .teamPrice(teamProjectSkuInfoAddReq.getTeamPrice()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuEditModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuEditModel.java new file mode 100644 index 0000000..661382a --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuEditModel.java @@ -0,0 +1,60 @@ +package com.muyu.marketing.domain.model; + + +import com.muyu.marketing.domain.req.ProjectSkuInfoEditReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.function.Supplier; + +/** + * 团购spu库存添加模型 + * + * @author DongZeLiang + * 2024-11-26 09:36 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamProductSkuEditModel { + /** + * id + */ + private Long id; + /** + * 团购活动ID + */ + private Long teamId; + + /** + * 商品ID + */ + private Long productId; + + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + public static ActivityTeamProductSkuEditModel teamSkuEditBuild(ProjectSkuInfoEditReq projectSkuInfoEditReq, Supplier productId){ + return ActivityTeamProductSkuEditModel.builder() + .id(projectSkuInfoEditReq.getProductSkuId()) + .teamStock(projectSkuInfoEditReq.getTeamStock()) + .teamPrice(projectSkuInfoEditReq.getTeamPrice()) + .productId(productId.get()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuUpdModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuUpdModel.java new file mode 100644 index 0000000..99e4ef6 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuUpdModel.java @@ -0,0 +1,51 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.req.ProjectSkuInfoUpdReq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 拼团规格sku模型 + * MengFanKuo + * 2024-11-27 15:28 + * * + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class ActivityTeamProductSkuUpdModel { + /** + * id + */ + private Long id; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + public static ActivityTeamProductSkuUpdModel infoModelBuild(ProjectSkuInfoUpdReq projectSkuInfoUpdReq){ + return ActivityTeamProductSkuUpdModel.builder() + .id(projectSkuInfoUpdReq.getProductSkuId()) + .teamPrice(projectSkuInfoUpdReq.getTeamPrice()) + .teamStock(projectSkuInfoUpdReq.getTeamStock()) + .build(); + } + public static ActivityTeamProductSkuUpdModel infolBuild(ActivityTeamProductSkuInfo productSkuInfo){ + return ActivityTeamProductSkuUpdModel.builder() + .id(productSkuInfo.getId()) + .teamPrice(productSkuInfo.getTeamPrice()) + .teamStock(productSkuInfo.getTeamStock()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuAddModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuAddModel.java new file mode 100644 index 0000000..6e00e8b --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuAddModel.java @@ -0,0 +1,56 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; +import java.util.function.Supplier; + +/** + * 拼团规格sku添加模型 + * MengFanKuo + * 2024-11-27 15:30 + * * + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamSkuAddModel { + /** + * 活动ID + */ + private long teamId; + /** + * 商品ID + */ + private Long productId; + /** + * 拼团sku + */ + private String sku; + /** + * 商品价格 + */ + private BigDecimal productPrice; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + public static ActivityTeamSkuAddModel infolBuild(ActivityTeamProductSkuInfo productSkuInfo, Supplier productId){ + return ActivityTeamSkuAddModel.builder() + .sku(productSkuInfo.getProductSku()) + .productId(productId.get()) + .teamPrice(productSkuInfo.getTeamPrice()) + .teamStock(productSkuInfo.getTeamStock()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoDetailModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoDetailModel.java new file mode 100644 index 0000000..4f5965c --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoDetailModel.java @@ -0,0 +1,65 @@ +package com.muyu.marketing.domain.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.resp.ActivityTeamSkuInfoDetail; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "activity_team_product_sku_info", autoResultMap = true) +public class ActivityTeamSkuInfoDetailModel extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 活动ID + */ + private long teamId; + /** + * 商品ID + */ + private Long productId; + /** + * 商品SKU + */ + private String productSku; + /** + * 拼团库存 + */ + private Long teamStock; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 通过拼团商品sku构建模型 + */ + public static ActivityTeamSkuInfoDetailModel productSkuInfoEachBuild(ActivityTeamProductSkuInfo activityTeamProductSkuInfo){ + return ActivityTeamSkuInfoDetailModel.builder() + .id(activityTeamProductSkuInfo.getId()) + .teamId(activityTeamProductSkuInfo.getTeamId()) + .productId(activityTeamProductSkuInfo.getProductId()) + .productSku(activityTeamProductSkuInfo.getProductSku()) + .teamPrice(activityTeamProductSkuInfo.getTeamPrice()) + .teamStock(activityTeamProductSkuInfo.getTeamStock()) + .build(); + } + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoModel.java new file mode 100644 index 0000000..561b418 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoModel.java @@ -0,0 +1,44 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.marketing.domain.req.ProjectSkuInfoUpdReq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * @program: 2204a-cloud-server + * @description: 拼团商品sku模型 + * MengFanKuo + * 2024-11-26 15:53 + * * + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class ActivityTeamSkuInfoModel { + /** + * id + */ + private Long id; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + public static ActivityTeamSkuInfoModel infoModelBuild(ProjectSkuInfoUpdReq projectSkuInfoUpdReq){ + return ActivityTeamSkuInfoModel.builder() + .id(projectSkuInfoUpdReq.getProductSkuId()) + .teamPrice(projectSkuInfoUpdReq.getTeamPrice()) + .teamStock(projectSkuInfoUpdReq.getTeamStock()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuModel.java new file mode 100644 index 0000000..0fe7e25 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuModel.java @@ -0,0 +1,42 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.marketing.domain.req.ActivityTeamSkuReq; +import com.muyu.marketing.domain.req.ProjectSkuInfoUpdReq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * 拼团规格修改总模型 + * MengFanKuo + * 2024-11-27 15:32 + * * + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamSkuModel { + /** + * 拼团规格修改模型集合 + */ + private List activityTeamProductSkuUpdModelList; + /** + * 删除规格id集合 + */ + private List skuIds; + /** + * 添加拼团规格模型 + */ + private List activityTeamSkuAddModelList; + public static ActivityTeamSkuModel skuModelBuild(List projectSkuInfoUpdReqList){ + return ActivityTeamSkuModel.builder() + .activityTeamProductSkuUpdModelList(projectSkuInfoUpdReqList.stream().map(projectSkuInfoUpdReq -> { + return ActivityTeamProductSkuUpdModel.infoModelBuild(projectSkuInfoUpdReq); + }).toList()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/TeamProductDiscountPriceModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/TeamProductDiscountPriceModel.java new file mode 100644 index 0000000..c4977a8 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/TeamProductDiscountPriceModel.java @@ -0,0 +1,56 @@ +package com.muyu.marketing.domain.model; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * 团购商品优惠力度模型 + * + * @author DongZeLiang + * @date 2024-11-21 11:57 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class TeamProductDiscountPriceModel { + + /** + * 商品价格 + */ + private BigDecimal productPrice; + + /** + * 团购优惠价格 + */ + private BigDecimal teamPrice; + + + /** + * 优惠力度 (商品价格 - 团购优惠价格) / 商品价格 + */ + private double discount; + + /** + * 通过 商品价格和团购价格 生成优惠力度 + * @param productPrice 商品价格 + * @param teamPrice 团购加 + * @return 优惠力度 + */ + public static TeamProductDiscountPriceModel of(BigDecimal productPrice, BigDecimal teamPrice) { + return TeamProductDiscountPriceModel.builder() + .productPrice(productPrice) + .teamPrice(teamPrice) + .discount( + productPrice.subtract(teamPrice).divide(productPrice, 2, RoundingMode.HALF_UP).doubleValue() + ) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/TeamProductStockModel.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/TeamProductStockModel.java new file mode 100644 index 0000000..b8c9422 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/model/TeamProductStockModel.java @@ -0,0 +1,31 @@ +package com.muyu.marketing.domain.model; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 团购商品库存模型 + * + * @author DongZeLiang + * @date 2024-11-21 14:04 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TeamProductStockModel { + + /** + * 拼团总库存 + */ + private Long teamStock; + + /** + * 拼团剩余库存 + */ + private Long remainStock; + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoEditReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoEditReq.java new file mode 100644 index 0000000..9bdea56 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoEditReq.java @@ -0,0 +1,106 @@ +package com.muyu.marketing.domain.req; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoEditModel; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuEditModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ActivityTeamInfoEditReq extends BaseEntity { + /** + * id + */ + private Long id; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private Long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") + private Date endTime; + /** + * 活动排序 + */ + private Integer sort; + /** + * 商品SkU集合 + */ + private List projectSkuInfoEditReqList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + + /** + * 请求入参转换为修改模型 + * @return + */ + public ActivityTeamInfoEditModel activityTeamInfoEditBuild(){ + return ActivityTeamInfoEditModel.builder() + .activityTeamProductSkuEditModels(this.projectSkuInfoEditReqList.stream().map(projectSkuInfoEditReq -> { + return ActivityTeamProductSkuEditModel.teamSkuEditBuild(projectSkuInfoEditReq,()-> productId); + }).toList()) + .teamId(this.id) + .content(this.content) + .endTime(this.endTime) + .imageList(this.imageList) + .introduction(this.introduction) + .name(this.name) + .productImage(this.productImage) + .status(this.status) + .strategyId(this.strategyId) + .strategyType(this.strategyType) + .unit(this.unit) + .sort(this.sort) + .productId(this.productId) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoSaveReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoSaveReq.java new file mode 100644 index 0000000..9e8569e --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoSaveReq.java @@ -0,0 +1,100 @@ +package com.muyu.marketing.domain.req; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.web.domain.BaseEntity; + +import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ActivityTeamInfoSaveReq extends BaseEntity { + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private Long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") + private Date endTime; + /** + * 活动排序 + */ + private Integer sort; + /** + * 商品SkU集合 + */ + private List teamProjectSkuInfoAddReqList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + + /** + * 请求入参转换为添加模型 + * + */ + public ActivityTeamInfoAddModel activityTeamInfoReqBuild(){ + return ActivityTeamInfoAddModel.builder() + .unit(this.unit) + .activityTeamProductSkuAddModelList( + this.teamProjectSkuInfoAddReqList.stream().map(projectSkuInfoAddReq -> { + return ActivityTeamProductSkuAddModel.addReqBuild(projectSkuInfoAddReq,()->productId); + }).toList()) + .strategyType(this.strategyType) + .status(this.status) + .name(this.name) + .strategyId(this.strategyId) + .endTime(this.endTime) + .imageList(this.imageList) + .introduction(this.introduction) + .productId(this.productId) + .productImage(this.productImage) + .sort(this.sort) + .content(this.content) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoUpdReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoUpdReq.java new file mode 100644 index 0000000..e512866 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoUpdReq.java @@ -0,0 +1,103 @@ +package com.muyu.marketing.domain.req; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.marketing.domain.model.ActivityTeamInfoUpdModel; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuUpdModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuInfoModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +/** + * 团购活动商品信息规格修改 + * 2024-11-26 14:22 + * * + */ +@Data +@AllArgsConstructor +@SuperBuilder +@NoArgsConstructor +public class ActivityTeamInfoUpdReq { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 活动排序 + */ + private long sort; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private long strategyId; + /** + * 规格 + */ + /** + * 商品SkU集合 + */ + private List projectSkuInfoUpdReqList; + public ActivityTeamInfoUpdModel infoUpdModelBuild(){ + return ActivityTeamInfoUpdModel.builder() + .id(this.id) + .content(this.content) + .strategyType(this.strategyType) + .endTime(this.endTime) + .imageList(this.imageList) + .introduction(this.introduction) + .productId(this.productId) + .activityTeamSkuModel(ActivityTeamSkuModel.skuModelBuild(this.projectSkuInfoUpdReqList)) + .sort(this.sort) + .strategyId(this.strategyId) + .productImage(this.productImage) + .unit(this.unit) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuAddReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuAddReq.java new file mode 100644 index 0000000..3fdc554 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuAddReq.java @@ -0,0 +1,47 @@ +package com.muyu.marketing.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 拼团规格sku添加模型 + * MengFanKuo + * 2024-11-27 15:30 + * * + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamSkuAddReq { + /** + * 活动ID + */ + private long teamId; + /** + * 商品ID + */ + private Long productId; + /** + * 拼团sku + */ + private String sku; + /** + * 商品价格 + */ + private BigDecimal productPrice; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuReq.java new file mode 100644 index 0000000..11cd29a --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuReq.java @@ -0,0 +1,38 @@ +package com.muyu.marketing.domain.req; + +import com.muyu.marketing.domain.model.ActivityTeamProductSkuUpdModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuAddModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * 拼团规格修改总模型 + * + * MengFanKuo + * 2024-11-27 15:32 + * * + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamSkuReq { + /** + * 拼团规格修改模型集合 + */ + private List activityTeamProductSkuUpdModelList; + /** + * 删除规格id集合 + */ + private List skuIds; + /** + * 添加拼团规格模型 + */ + private List activityTeamSkuAddModelList; + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoEditReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoEditReq.java new file mode 100644 index 0000000..6215a54 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoEditReq.java @@ -0,0 +1,33 @@ +package com.muyu.marketing.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 添加的 + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ProjectSkuInfoEditReq { + /** + * id + */ + private Long productSkuId; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoUpdReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoUpdReq.java new file mode 100644 index 0000000..3d16eeb --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoUpdReq.java @@ -0,0 +1,32 @@ +package com.muyu.marketing.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 添加的 + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ProjectSkuInfoUpdReq { + /** + * id + */ + private Long productSkuId; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + /** + * 拼团库存 + */ + private Long teamStock; + + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/TeamInfoListReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/TeamInfoListReq.java new file mode 100644 index 0000000..4dab2b5 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/TeamInfoListReq.java @@ -0,0 +1,37 @@ +package com.muyu.marketing.domain.req; + +import com.muyu.common.core.web.page.PageDomain; +import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; +import lombok.*; +import lombok.experimental.SuperBuilder; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class TeamInfoListReq extends PageDomain { + + /** + * 搜索关键词 + */ + private String keyWord; + + /** + * 活动状态 + */ + private String status; + + + /** + * 通过当前对象构建业务查询模型 + * @return 业务查询模型 + */ + public ActivityTeamInfoListQueryModel buildQueryModel() { + return ActivityTeamInfoListQueryModel.builder() + .keyWord(this.keyWord) + .status(this.status) + .build() + .domainBuild(this); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/TeamProjectSkuInfoAddReq.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/TeamProjectSkuInfoAddReq.java new file mode 100644 index 0000000..71f7498 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/req/TeamProjectSkuInfoAddReq.java @@ -0,0 +1,36 @@ +package com.muyu.marketing.domain.req; + +import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 添加的 + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class TeamProjectSkuInfoAddReq { + + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/ActivityTeamInfoProductSkuDetailResp.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/ActivityTeamInfoProductSkuDetailResp.java new file mode 100644 index 0000000..bc4b124 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/ActivityTeamInfoProductSkuDetailResp.java @@ -0,0 +1,98 @@ +package com.muyu.marketing.domain.resp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.marketing.domain.model.ActivityTeamInfoDetailModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +/** + * @program: 2204a-cloud-server + * @description: 团购活动商品信息规格表 + * MengFanKuo + * 2024-11-26 14:22 + * * + */ +@Data +@AllArgsConstructor +@SuperBuilder +@NoArgsConstructor +public class ActivityTeamInfoProductSkuDetailResp { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private long id; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private long productId; + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 活动排序 + */ + private long sort; + /** + * 活动详情 + */ + private String content; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private long strategyId; + /** + * 规格 + */ + private List projectSkuInfoEachRespList; + public static ActivityTeamInfoProductSkuDetailResp productSkuDetailBuild(ActivityTeamInfoDetailModel activityTeamInfoDetailModel){ + return ActivityTeamInfoProductSkuDetailResp.builder() + .id(activityTeamInfoDetailModel.getId()) + .productImage(activityTeamInfoDetailModel.getProductImage()) + .productId(activityTeamInfoDetailModel.getProductId()) + .name(activityTeamInfoDetailModel.getName()) + .endTime(activityTeamInfoDetailModel.getEndTime()) + .content(activityTeamInfoDetailModel.getContent()) + .imageList(activityTeamInfoDetailModel.getImageList()) + .introduction(activityTeamInfoDetailModel.getIntroduction()) + .projectSkuInfoEachRespList(activityTeamInfoDetailModel.getProjectSkuInfoAddReqList().stream().map(activityTeamSkuInfoDetailModel -> { + return ActivityTeamSkuInfoDetail.infoDetailBuild(activityTeamSkuInfoDetailModel); + }).toList()) + .sort(activityTeamInfoDetailModel.getSort()) + .strategyId(activityTeamInfoDetailModel.getStrategyId()) + .strategyType(activityTeamInfoDetailModel.getStrategyType()) + .unit(activityTeamInfoDetailModel.getUnit()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/ActivityTeamSkuInfoDetail.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/ActivityTeamSkuInfoDetail.java new file mode 100644 index 0000000..53963f8 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/ActivityTeamSkuInfoDetail.java @@ -0,0 +1,59 @@ +package com.muyu.marketing.domain.resp; + +import com.muyu.marketing.domain.model.ActivityTeamSkuInfoDetailModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * @program: 2204a-cloud-server + * @description: 商品规格回显表 + * MengFanKuo + * 2024-11-26 15:20 + * * + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class ActivityTeamSkuInfoDetail { + /** + * id + */ + private Long id; + /** + * 活动ID + */ + private long teamId; + /** + * 商品ID + */ + private Long productId; + /** + * 规格SKU + */ + private String sku; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + /** + * 拼团库存 + */ + private Long teamStock; + + public static ActivityTeamSkuInfoDetail infoDetailBuild(ActivityTeamSkuInfoDetailModel activityTeamInfoProductSkuDetailModel){ + return ActivityTeamSkuInfoDetail.builder() + .id(activityTeamInfoProductSkuDetailModel.getId()) + .sku(activityTeamInfoProductSkuDetailModel.getProductSku()) + .teamId(activityTeamInfoProductSkuDetailModel.getTeamId()) + .productId(activityTeamInfoProductSkuDetailModel.getProductId()) + .teamPrice(activityTeamInfoProductSkuDetailModel.getTeamPrice()) + .teamStock(activityTeamInfoProductSkuDetailModel.getTeamStock()) + .build(); + } + +} diff --git a/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/TeamInfoListResp.java b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/TeamInfoListResp.java new file mode 100644 index 0000000..f3e2219 --- /dev/null +++ b/muyu-modules/muyu-group/group-common/src/main/java/com/muyu/marketing/domain/resp/TeamInfoListResp.java @@ -0,0 +1,90 @@ +package com.muyu.marketing.domain.resp; + +import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; +import com.muyu.marketing.domain.req.TeamInfoListReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TeamInfoListResp { + + /** + * 拼团活动ID + */ + private Long id; + /** + * 拼团名称 + */ + private String name; + /** + * 参团人数 + */ + private Long addTeamNumber; + /** + * 拼团人数 + */ + private Long attendNumber; + /** + * 团购结束时间 + */ + private Date endTime; + /** + * 开团人数 + */ + private Long openTeamNumber; + /** + * 拼团商品图片 + */ + private String productImage; + /** + * 商品价格 + */ + private BigDecimal productPrice; + /** + * 剩余库存 + */ + private Long remainStock; + /** + * 团购状态 + */ + private String status; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + /** + * 团购库存 + */ + private Long teamStock; + + /** + * 列表查询结果,构建为响应对象 + * @param activityTeamInfoListModel 列表数据查询结果 + * @return 响应对象 + */ + public static TeamInfoListResp listModelBuild(ActivityTeamInfoListModel activityTeamInfoListModel) { + return TeamInfoListResp.builder() + .id(activityTeamInfoListModel.getId()) + .name(activityTeamInfoListModel.getName()) + .openTeamNumber(activityTeamInfoListModel.getOpenTeamNumber()) + .addTeamNumber(activityTeamInfoListModel.getAddTeamNumber()) + .addTeamNumber(activityTeamInfoListModel.getAddTeamNumber()) + .attendNumber(activityTeamInfoListModel.getAttendNumber()) + .endTime(activityTeamInfoListModel.getEndTime()) + .teamPrice(activityTeamInfoListModel.getTeamPrice()) + .productImage(activityTeamInfoListModel.getProductImage()) + .productPrice(activityTeamInfoListModel.getProductPrice()) + .remainStock(activityTeamInfoListModel.getRemainStock()) + .status(activityTeamInfoListModel.getStatus()) + .teamStock(activityTeamInfoListModel.getTeamStock()) + .build(); + } +} diff --git a/muyu-modules/muyu-group/group-remote/pom.xml b/muyu-modules/muyu-group/group-remote/pom.xml new file mode 100644 index 0000000..4c81f08 --- /dev/null +++ b/muyu-modules/muyu-group/group-remote/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.muyu + muyu-marketing + 3.6.3 + + + group-remote + + + 17 + 17 + UTF-8 + + + + + com.muyu + marketing-common + + + diff --git a/muyu-modules/muyu-group/group-server/pom.xml b/muyu-modules/muyu-group/group-server/pom.xml new file mode 100644 index 0000000..9931efe --- /dev/null +++ b/muyu-modules/muyu-group/group-server/pom.xml @@ -0,0 +1,124 @@ + + + 4.0.0 + + com.muyu + muyu-marketing + 3.6.3 + + + group-server + + + 17 + 17 + UTF-8 + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + muyu-common-datasource + + + + + com.muyu + muyu-common-datascope + + + + + com.muyu + muyu-common-log + + + + + com.muyu + muyu-common-swagger + + + + com.dtflys.forest + forest-spring-boot-starter + + + + + com.muyu + marketing-remote + + + + + com.muyu + muyu-product-cache + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/MuYuMarketIngApplication.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/MuYuMarketIngApplication.java new file mode 100644 index 0000000..a63bdfa --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/MuYuMarketIngApplication.java @@ -0,0 +1,22 @@ +package com.muyu.group; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import com.muyu.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 系统模块 + * + * @author muyu + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableMyFeignClients +@SpringBootApplication +public class MuYuMarketIngApplication { + public static void main (String[] args) { + SpringApplication.run(MuYuMarketIngApplication.class, args); + } +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/controller/ActivityTeamController.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/controller/ActivityTeamController.java new file mode 100644 index 0000000..f218aeb --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/controller/ActivityTeamController.java @@ -0,0 +1,81 @@ +package com.muyu.group.team.controller; + + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.group.team.service.ActivityTeamInfoService; +import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoDetailModel; +import com.muyu.marketing.domain.req.ActivityTeamInfoEditReq; +import com.muyu.marketing.domain.req.ActivityTeamInfoSaveReq; +import com.muyu.marketing.domain.req.ActivityTeamInfoUpdReq; +import com.muyu.marketing.domain.req.TeamInfoListReq; +import com.muyu.marketing.domain.resp.ActivityTeamInfoProductSkuDetailResp; +import com.muyu.marketing.domain.resp.TeamInfoListResp; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 营销团购活动控制层 + * + * @author DongZeLiang + * 2024-11-20 14:25 + */ +@RestController +@RequestMapping("/team") +public class ActivityTeamController { + + @Autowired + private ActivityTeamInfoService activityTeamInfoService; + + /** + * 查询营销团购活动列表 + * @param teamInfoListReq 活动查询入参 + * @return 活动响应结果 + */ + @PostMapping("/list") + public Result> list(@RequestBody TeamInfoListReq teamInfoListReq) { + TableDataInfo tableDataInfo = activityTeamInfoService.query(teamInfoListReq.buildQueryModel()); + List respList = tableDataInfo.getRows().stream().map(TeamInfoListResp::listModelBuild).toList(); + return Result.success( + new TableDataInfo<>(){{ + setRows(respList); + setTotal(tableDataInfo.getTotal()); + }} + ); + } + /** + * 添加团购活动 + */ + @PostMapping("/activityTeamInfoAdd") + public void activityTeamInfoAdd(@RequestBody ActivityTeamInfoSaveReq activityTeamInfoSaveReq){ + activityTeamInfoService.save(activityTeamInfoSaveReq.activityTeamInfoReqBuild()); + } + /** + * 根据id查询拼团商品信息 + */ + @GetMapping("/inquireActivityTeam/{id}") + public Result inquireActivityTeam(@PathVariable("id") Long id){ + ActivityTeamInfoDetailModel detailModel = activityTeamInfoService.echo(id); + ActivityTeamInfoProductSkuDetailResp productSkuDetailBuild = ActivityTeamInfoProductSkuDetailResp.productSkuDetailBuild(detailModel); + return Result.success(productSkuDetailBuild); + } + /** + *修改团购活动 + */ + @PostMapping("/activityTeamEdit") + public Result activityTeamEdit(@RequestBody ActivityTeamInfoEditReq activityTeamInfoEditReq){ + activityTeamInfoService.edit(activityTeamInfoEditReq.activityTeamInfoEditBuild()); + return Result.success(); + } + /** + * 修改团购活动 + */ + @PostMapping("/upd") + public Result upd(@RequestBody ActivityTeamInfoUpdReq activityTeamInfoUpdReq){ + activityTeamInfoService.upd(activityTeamInfoUpdReq.infoUpdModelBuild()); + return Result.success(); + } +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamInfoMapper.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamInfoMapper.java new file mode 100644 index 0000000..21702ee --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamInfoMapper.java @@ -0,0 +1,12 @@ +package com.muyu.group.team.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.TeamStrategyExemptionHundred; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ActivityTeamInfoMapper extends BaseMapper { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamOpenInfoMapper.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamOpenInfoMapper.java new file mode 100644 index 0000000..597be25 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamOpenInfoMapper.java @@ -0,0 +1,10 @@ +package com.muyu.group.team.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.ActivityTeamOpenInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ActivityTeamOpenInfoMapper extends BaseMapper { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamProductSkuInfoMapper.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamProductSkuInfoMapper.java new file mode 100644 index 0000000..cf6de4a --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/ActivityTeamProductSkuInfoMapper.java @@ -0,0 +1,11 @@ +package com.muyu.group.team.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.ActivityTeamOpenInfo; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ActivityTeamProductSkuInfoMapper extends BaseMapper { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionHundredMapper.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionHundredMapper.java new file mode 100644 index 0000000..9039e4d --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionHundredMapper.java @@ -0,0 +1,11 @@ +package com.muyu.group.team.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.TeamStrategyExemption; +import com.muyu.marketing.domain.TeamStrategyExemptionHundred; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TeamStrategyExemptionHundredMapper extends BaseMapper { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionMapper.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionMapper.java new file mode 100644 index 0000000..da3e708 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionMapper.java @@ -0,0 +1,11 @@ +package com.muyu.group.team.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.TeamStrategyExemption; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TeamStrategyExemptionMapper extends BaseMapper { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionOrdinaryMapper.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionOrdinaryMapper.java new file mode 100644 index 0000000..24737d9 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/mapper/TeamStrategyExemptionOrdinaryMapper.java @@ -0,0 +1,11 @@ +package com.muyu.group.team.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.TeamStrategyExemptionHundred; +import com.muyu.marketing.domain.TeamStrategyExemptionOrdinary; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TeamStrategyExemptionOrdinaryMapper extends BaseMapper { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamInfoService.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamInfoService.java new file mode 100644 index 0000000..6a55926 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamInfoService.java @@ -0,0 +1,37 @@ +package com.muyu.group.team.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.model.*; + +public interface ActivityTeamInfoService extends IService { + + + /** + * 通过查询模型查询团购活动列表 + * @param activityTeamInfoListQueryModel 团购活动查询模型 + * @return 团购活动列表 + */ + public TableDataInfo query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel); + + /** + * 通过添加模型,去进行商品拼团活动的操作 + * @param activityTeamInfoAddModel 团购添加模型 + */ + public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel); + /** + * 同过活动id回显团购活动信息 + */ + public ActivityTeamInfoDetailModel echo(Long id); + + /** + * 通过修改模型 去进行商品拼团活动的操作 + * @param activityTeamInfoEditModel + */ + void edit(ActivityTeamInfoEditModel activityTeamInfoEditModel); + /** + * 通过修改模型 进行拼团活动的操作 + */ + public void upd(ActivityTeamInfoUpdModel activityTeamInfoUpdModel); +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamOpenInfoService.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamOpenInfoService.java new file mode 100644 index 0000000..1b54c02 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamOpenInfoService.java @@ -0,0 +1,35 @@ +package com.muyu.group.team.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.core.enums.market.team.TeamOpenTypeEnum; +import com.muyu.marketing.domain.ActivityTeamOpenInfo; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; + +public interface ActivityTeamOpenInfoService extends IService { + + /** + * 通过活动ID和开团类型查询开团数量 + * @param teamId 活动ID + * @param teamOpenType 开团类型 + * @return 开团数量 + */ + public Long getTeamOpenNumberByTeamIdAndType(Long teamId, TeamOpenTypeEnum teamOpenType); + + /** + * 根据活动ID获取开团数量 + * @param teamId 团购活动ID + * @return 开团数量 + */ + public default Long getTeamOpenTypeNumberByTeamId(Long teamId){ + return this.getTeamOpenNumberByTeamIdAndType(teamId, TeamOpenTypeEnum.OPEN_TEAM); + } + + /** + * 根据活动ID获取参团数量 + * @param teamId 团购活动ID + * @return 参团数量 + */ + public default Long getTeamInTypeNumberByTeamId(Long teamId){ + return this.getTeamOpenNumberByTeamIdAndType(teamId, TeamOpenTypeEnum.IN_TEAM); + } +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamProductSkuInfoService.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamProductSkuInfoService.java new file mode 100644 index 0000000..310aeb6 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/ActivityTeamProductSkuInfoService.java @@ -0,0 +1,74 @@ +package com.muyu.group.team.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.model.*; +import com.muyu.marketing.domain.req.ActivityTeamSkuReq; + +import java.util.Collection; +import java.util.List; + +public interface ActivityTeamProductSkuInfoService extends IService { + + public default List getActivityTeamProductSkuInfoByTeamId(Long teamId){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId, teamId); + return this.list(lambdaQueryWrapper); + } + /** + * 通过团购活动ID获取团购中最优惠的价格 + * @param teamId 团购ID + * @return 优惠价格 + */ + public TeamProductDiscountPriceModel getDiscountPrice(Long teamId); + /** + * 通过活动ID获取 剩余库存 + * @param teamId 活动ID + * @return 库存 + */ + public TeamProductStockModel getStock(Long teamId); + /** + * 添加团购商品SKU + * @param activityTeamProductSkuAddModelList 团购商品SKU添加模型集合 + */ + public void batchSave(List activityTeamProductSkuAddModelList); + /** + * 根据团购id查询商品详细信息 + */ + public List findByListSkuInfo(Long id); + + /** + * 修改 + * @param activityTeamProductSkuEditModelList + */ + void editSku(List activityTeamProductSkuEditModelList); + /** + * 团购商品sku修改 + */ + public void batchUpd(List activityTeamProductSkuUpdModelList); + + + /** + * 批量添加团购sku + */ + public void batchAdd(Collection activityTeamSkuAddModelCollection ); + + /** + * 根据拼团活动id查找sku + * @param id + * @return + */ + List findByTeamId(long id); + /** + * 批量删除团购sku + */ + void batchDel(Collection subtract); + + /** + * 根据活动id查询商品sku + * @param id + * @return + */ + List activityTeamAdd(long id); +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionHundredService.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionHundredService.java new file mode 100644 index 0000000..32e7501 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionHundredService.java @@ -0,0 +1,8 @@ +package com.muyu.group.team.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.marketing.domain.TeamStrategyExemptionHundred; +import com.muyu.marketing.domain.TeamStrategyExemptionOrdinary; + +public interface TeamStrategyExemptionHundredService extends IService { +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionOrdinaryService.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionOrdinaryService.java new file mode 100644 index 0000000..0711869 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionOrdinaryService.java @@ -0,0 +1,7 @@ +package com.muyu.group.team.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.marketing.domain.TeamStrategyExemptionOrdinary; + +public interface TeamStrategyExemptionOrdinaryService extends IService { +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionService.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionService.java new file mode 100644 index 0000000..ff98e70 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/TeamStrategyExemptionService.java @@ -0,0 +1,8 @@ +package com.muyu.group.team.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.marketing.domain.TeamStrategyExemption; +import com.muyu.marketing.domain.TeamStrategyExemptionHundred; + +public interface TeamStrategyExemptionService extends IService { +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamInfoServiceImpl.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamInfoServiceImpl.java new file mode 100644 index 0000000..558620b --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamInfoServiceImpl.java @@ -0,0 +1,136 @@ +package com.muyu.group.team.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.group.team.mapper.ActivityTeamInfoMapper; +import com.muyu.group.team.service.ActivityTeamInfoService; +import com.muyu.group.team.service.ActivityTeamOpenInfoService; +import com.muyu.group.team.service.ActivityTeamProductSkuInfoService; +import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.model.*; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import java.util.Collection; +import java.util.List; + + +@Service +public class ActivityTeamInfoServiceImpl extends ServiceImpl + implements ActivityTeamInfoService { + + @Autowired + private ActivityTeamOpenInfoService activityTeamOpenInfoService; + + @Autowired + private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService; + + @Override + public TableDataInfo query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like(StringUtils.isNotEmpty(activityTeamInfoListQueryModel.getKeyWord()), ActivityTeamInfo::getName, activityTeamInfoListQueryModel.getKeyWord()); + queryWrapper.like(StringUtils.isNotEmpty(activityTeamInfoListQueryModel.getStatus()), ActivityTeamInfo::getStatus, activityTeamInfoListQueryModel.getStatus()); + + /* + * Object -> 创建对象的时候进行的占用 + * Result 以方法返回值为占用 + */ + Page activityTeamInfoPage = this.page(activityTeamInfoListQueryModel.buildPage(), queryWrapper); + List activityTeamInfoList = activityTeamInfoPage.getRecords(); + List activityTeamInfoListModels = activityTeamInfoList.stream() + .map(activityTeamInfo -> ActivityTeamInfoListModel.infoBuild(activityTeamInfo, + (activityTeamInfoListModelBuilder) -> { + TeamProductDiscountPriceModel discountPrice = activityTeamProductSkuInfoService.getDiscountPrice(activityTeamInfo.getId()); + TeamProductStockModel teamProductStockModel = activityTeamProductSkuInfoService.getStock(activityTeamInfo.getId()); + Long teamOpenTypeNumber = activityTeamOpenInfoService.getTeamOpenTypeNumberByTeamId(activityTeamInfo.getId()); + Long teamInTypeNumber = activityTeamOpenInfoService.getTeamInTypeNumberByTeamId(activityTeamInfo.getId()); + + return activityTeamInfoListModelBuilder + .openTeamNumber(teamOpenTypeNumber) + .addTeamNumber(teamInTypeNumber) + .attendNumber(teamOpenTypeNumber + teamInTypeNumber) + .teamPrice(discountPrice.getTeamPrice()) + .productPrice(discountPrice.getProductPrice()) + .teamStock(teamProductStockModel.getTeamStock()) + .remainStock(teamProductStockModel.getRemainStock()) + .build(); + })).toList(); + TableDataInfo tableDataInfo = new TableDataInfo<>(); + tableDataInfo.setTotal(activityTeamInfoPage.getTotal()); + tableDataInfo.setRows(activityTeamInfoListModels); + return tableDataInfo; + } + + /** + * 通过添加模型,去进行商品拼团活动的操作 + * + * @param activityTeamInfoAddModel 团购添加模型 + */ + @Override + public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel) { + ActivityTeamInfo activityTeamInfo = ActivityTeamInfo.addModelBuild(activityTeamInfoAddModel); + Assert.isTrue(this.save(activityTeamInfo), StringUtils.format("团购活动添加失败:[{}]", activityTeamInfoAddModel)); + List teamProductSkuAddModelList = activityTeamInfoAddModel.getActivityTeamProductSkuAddModelList(); + teamProductSkuAddModelList.forEach(activityTeamProductSkuAddModel -> activityTeamProductSkuAddModel.setTeamId(activityTeamInfo.getId())); + this.activityTeamProductSkuInfoService.batchSave(teamProductSkuAddModelList); + } + /** + * 根据团购活动id查询详情 + */ + @Override + public ActivityTeamInfoDetailModel echo(Long id) { + ActivityTeamInfo activityTeamInfo = this.getById(id); + List infoServiceByListSkuInfo = activityTeamProductSkuInfoService.findByListSkuInfo(id); + return ActivityTeamInfoDetailModel.skuInfoDetailBuild(activityTeamInfo,infoServiceByListSkuInfo); + } + + /** + * 通过修改模型,去进行商品拼团活动的操作 + * @param activityTeamInfoEditModel 修改模型 + */ + @Override + public void edit(ActivityTeamInfoEditModel activityTeamInfoEditModel) { + //修改拼团活动 + ActivityTeamInfo activityTeamInfo = ActivityTeamInfo.editBuild(activityTeamInfoEditModel); + this.updateById(activityTeamInfo); + List activityTeamProductSkuEditModelList = activityTeamInfoEditModel.getActivityTeamProductSkuEditModels(); + activityTeamProductSkuEditModelList.forEach(activityTeamProductSkuEditModel -> { + activityTeamProductSkuEditModel.setTeamId(activityTeamInfo.getId()); + activityTeamProductSkuEditModel.setProductId(activityTeamInfo.getProductId()); + }); + activityTeamProductSkuInfoService.editSku(activityTeamProductSkuEditModelList); + } + /** + * 通过修改模型 ,去进行商品拼团活动 + * @param activityTeamInfoUpdModel 商品拼团模型 + */ + @Override + public void upd(ActivityTeamInfoUpdModel activityTeamInfoUpdModel) { + if ("N".equals(activityTeamInfoUpdModel.getStatus())){ + this.updateById(ActivityTeamInfo.infoBuildModel(activityTeamInfoUpdModel)); + List activityTeamSkuInfoDetailModel= activityTeamProductSkuInfoService.findByTeamId(activityTeamInfoUpdModel.getId()); + ActivityTeamSkuModel activityTeamSkuModel = activityTeamInfoUpdModel.getActivityTeamSkuModel(); + List activityTeamProductSkuUpdModelList = activityTeamSkuModel.getActivityTeamProductSkuUpdModelList(); + //删除 + Collection subtract = CollectionUtils.subtract(activityTeamSkuInfoDetailModel, activityTeamProductSkuUpdModelList); + activityTeamProductSkuInfoService.batchDel(subtract); + //添加 + List activityTeamSkuAddModels=activityTeamProductSkuInfoService.activityTeamAdd(activityTeamInfoUpdModel.getId()); + List activityTeamSkuAddModelList = activityTeamSkuModel.getActivityTeamSkuAddModelList(); + Collection activityTeamSkuAddModelCollection = CollectionUtils.subtract(activityTeamSkuAddModelList, activityTeamSkuAddModels); + activityTeamSkuAddModelCollection.forEach(activityTeamSkuAddModel -> {activityTeamSkuAddModel.setTeamId(activityTeamInfoUpdModel.getId());}); + activityTeamProductSkuInfoService.batchAdd(activityTeamSkuAddModelCollection); + //修改 + activityTeamProductSkuInfoService.batchUpd(activityTeamSkuInfoDetailModel); + }else { + throw new ServiceException("拼团商品状态为活动中不可修改"); + } + } +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamOpenInfoServiceImpl.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamOpenInfoServiceImpl.java new file mode 100644 index 0000000..0bf2e62 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamOpenInfoServiceImpl.java @@ -0,0 +1,31 @@ +package com.muyu.group.team.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.enums.market.team.TeamOpenTypeEnum; +import com.muyu.group.team.mapper.ActivityTeamOpenInfoMapper; +import com.muyu.group.team.service.ActivityTeamOpenInfoService; +import com.muyu.marketing.domain.ActivityTeamOpenInfo; +import org.springframework.stereotype.Service; + +@Service +public class ActivityTeamOpenInfoServiceImpl extends ServiceImpl + implements ActivityTeamOpenInfoService { + + /** + * 通过活动ID和开团类型查询开团数量 + * + * @param teamId 活动ID + * @param teamOpenType 开团类型 + * @return 开团数量 + */ + @Override + public Long getTeamOpenNumberByTeamIdAndType(Long teamId, TeamOpenTypeEnum teamOpenType) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamOpenInfo::getTeamId, teamId); + queryWrapper.eq(ActivityTeamOpenInfo::getTeamType, teamOpenType.code()); + return this.count(queryWrapper); + } + + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java new file mode 100644 index 0000000..90d82c9 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java @@ -0,0 +1,168 @@ +package com.muyu.group.team.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.group.team.service.ActivityTeamProductSkuInfoService; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.model.*; +import com.muyu.group.team.mapper.ActivityTeamProductSkuInfoMapper; +import com.muyu.product.cache.ProjectSkuCache; +import com.muyu.product.domain.ProjectSkuInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +@Service +public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl + implements ActivityTeamProductSkuInfoService { + @Autowired + private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService; + @Autowired + private ProjectSkuCache projectSkuCache; + + /** + * 通过团购活动ID获取团购中最优惠的价格 + * + * @param teamId 团购ID + * @return 优惠价格 + */ + @Override + public TeamProductDiscountPriceModel getDiscountPrice(Long teamId) { + List teamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); + + // 优惠模型集合 + Optional discountPriceModelOptional = teamProductSkuInfoList.stream() + .map(activityTeamProductSkuInfo -> { + ProjectSkuInfo projectSkuInfo = projectSkuCache.get(activityTeamProductSkuInfo.getProductId(), activityTeamProductSkuInfo.getProductSku()); + return TeamProductDiscountPriceModel.of(projectSkuInfo.getPrice(), activityTeamProductSkuInfo.getTeamPrice()); + }).min((o1, o2) -> Double.valueOf(o1.getDiscount() * 100 - o2.getDiscount() * 100).intValue()); + if (discountPriceModelOptional.isEmpty()){ + throw new ServiceException("团购活动下没有商品绑定"); + } + return discountPriceModelOptional.get(); + } + + /** + * 通过活动ID获取 剩余库存 + * + * @param teamId 活动ID + * @return 库存 + */ + @Override + public TeamProductStockModel getStock(Long teamId) { + List teamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); + return TeamProductStockModel.builder() + .teamStock(teamProductSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getTeamStock).reduce(0L, Long::sum)) + .remainStock(teamProductSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getRemainStock).reduce(0L, Long::sum)) + .build(); + } + + /** + * 添加团购商品SKU + * + * @param activityTeamProductSkuAddModelList 团购商品SKU添加模型集合 + */ + @Override + public void batchSave(List activityTeamProductSkuAddModelList) { + if (activityTeamProductSkuAddModelList == null || activityTeamProductSkuAddModelList.isEmpty()) { + throw new ServiceException("入参添加商品规格模型,不可为空"); + } + List teamProductSkuInfoList = activityTeamProductSkuAddModelList.stream().map(ActivityTeamProductSkuInfo::modelBuild).toList(); + this.saveBatch(teamProductSkuInfoList); + } + /** + * 根据团购活动id查找商品sku + * @param id + * @return + */ + @Override + public List findByListSkuInfo(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId,id); + List productSkuInfoList = activityTeamProductSkuInfoService.list(queryWrapper); + List detailModelList = productSkuInfoList.stream().map(activityTeamProductSkuInfo -> { + return ActivityTeamSkuInfoDetailModel.productSkuInfoEachBuild(activityTeamProductSkuInfo); + }).toList(); + return detailModelList; + } + + /** + * 修改团购商品sku表 + * @param activityTeamProductSkuEditModelList + */ + @Override + public void editSku(List activityTeamProductSkuEditModelList) { + List activityTeamProductSkuInfoList = activityTeamProductSkuEditModelList.stream().map(activityTeamProductSkuEditModel -> { + return ActivityTeamProductSkuInfo.skuInfoBuild(activityTeamProductSkuEditModel); + }).toList(); + this.updateBatchById(activityTeamProductSkuInfoList); + } + /** + * 批量修改团购商品sku + * @param activityTeamProductSkuUpdModelList 团购商品sku模型 + */ + @Override + public void batchUpd(List activityTeamProductSkuUpdModelList) { + List productSkuInfoList = activityTeamProductSkuUpdModelList.stream().map(activityTeamProductSkuUpdModel -> { + return ActivityTeamProductSkuInfo.skuBuild(activityTeamProductSkuUpdModel); + }).toList(); + this.updateBatchById(productSkuInfoList); + } + /** + * 批量添加团购sku + * @param activityTeamSkuAddModelCollection + */ + @Override + public void batchAdd(Collection activityTeamSkuAddModelCollection ) { + List activityTeamProductSkuInfoList = activityTeamSkuAddModelCollection.stream().map(activityTeamSkuAddModel -> { + return ActivityTeamProductSkuInfo.skuBuildModel(activityTeamSkuAddModel); + }).toList(); + this.saveBatch(activityTeamProductSkuInfoList); + } + /** + * 根据拼图活动id查找sku模型 + * @param id + * @return + */ + @Override + public List findByTeamId(long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId,id); + List productSkuInfoList = activityTeamProductSkuInfoService.list(queryWrapper); + List modelList = productSkuInfoList.stream().map(activityTeamProductSkuInfo -> { + return ActivityTeamProductSkuUpdModel.infolBuild(activityTeamProductSkuInfo); + }).toList(); + return modelList; + } + /** + * 批量删除团购sku + * @param subtract + */ + @Override + public void batchDel(Collection subtract) { + List activityTeamProductSkuInfoList = subtract.stream().map(activityTeamProductSkuUpdModel -> { + return ActivityTeamProductSkuInfo.skuModel(activityTeamProductSkuUpdModel); + }).toList(); + this.removeBatchByIds(activityTeamProductSkuInfoList); + } + + /** + * 根据活动id查找商品sku + * @param id + * @return + */ + @Override + public List activityTeamAdd(long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId,id); + List productSkuInfoList = activityTeamProductSkuInfoService.list(queryWrapper); + List activityTeamSkuAddModelList = productSkuInfoList.stream().map(activityTeamProductSkuInfo -> { + return ActivityTeamSkuAddModel.infolBuild(activityTeamProductSkuInfo, () -> activityTeamProductSkuInfo.getProductId()); + }).toList(); + return activityTeamSkuAddModelList; + } +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionHundredServiceImpl.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionHundredServiceImpl.java new file mode 100644 index 0000000..80664f2 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionHundredServiceImpl.java @@ -0,0 +1,13 @@ +package com.muyu.group.team.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.marketing.domain.TeamStrategyExemptionHundred; +import com.muyu.group.team.mapper.TeamStrategyExemptionHundredMapper; +import com.muyu.group.team.service.TeamStrategyExemptionHundredService; +import org.springframework.stereotype.Service; + +@Service +public class TeamStrategyExemptionHundredServiceImpl extends ServiceImpl + implements TeamStrategyExemptionHundredService { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionOrdinaryServiceImpl.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionOrdinaryServiceImpl.java new file mode 100644 index 0000000..94bb937 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionOrdinaryServiceImpl.java @@ -0,0 +1,13 @@ +package com.muyu.group.team.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.marketing.domain.TeamStrategyExemptionOrdinary; +import com.muyu.group.team.mapper.TeamStrategyExemptionOrdinaryMapper; +import com.muyu.group.team.service.TeamStrategyExemptionOrdinaryService; +import org.springframework.stereotype.Service; + +@Service +public class TeamStrategyExemptionOrdinaryServiceImpl extends ServiceImpl + implements TeamStrategyExemptionOrdinaryService { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionServiceImpl.java b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionServiceImpl.java new file mode 100644 index 0000000..fbf3b7c --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/java/com/muyu/group/team/service/impl/TeamStrategyExemptionServiceImpl.java @@ -0,0 +1,13 @@ +package com.muyu.group.team.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.group.team.mapper.TeamStrategyExemptionMapper; +import com.muyu.group.team.service.TeamStrategyExemptionService; +import com.muyu.marketing.domain.TeamStrategyExemption; +import org.springframework.stereotype.Service; + +@Service +public class TeamStrategyExemptionServiceImpl extends ServiceImpl + implements TeamStrategyExemptionService { + +} diff --git a/muyu-modules/muyu-group/group-server/src/main/resources/banner.txt b/muyu-modules/muyu-group/group-server/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/muyu-modules/muyu-group/group-server/src/main/resources/bootstrap.yml b/muyu-modules/muyu-group/group-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..cb4f7a8 --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/resources/bootstrap.yml @@ -0,0 +1,33 @@ +# Tomcat +server: + port: 9209 + +# Spring +spring: + application: + # 应用名称 + name: muyu-marketing + profiles: + # 环境配置 + active: dev + main: + allow-circular-references: true + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 123.249.122.74:8848 + namespace: mall + config: + # 配置中心地址 + server-addr: 123.249.122.74:8848 + namespace: mall + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.marketing.mapper: DEBUG + diff --git a/muyu-modules/muyu-group/group-server/src/main/resources/logback.xml b/muyu-modules/muyu-group/group-server/src/main/resources/logback.xml new file mode 100644 index 0000000..aa340cd --- /dev/null +++ b/muyu-modules/muyu-group/group-server/src/main/resources/logback.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/muyu-modules/muyu-group/pom.xml b/muyu-modules/muyu-group/pom.xml new file mode 100644 index 0000000..35607cb --- /dev/null +++ b/muyu-modules/muyu-group/pom.xml @@ -0,0 +1,24 @@ + + + + com.muyu + muyu-modules + 3.6.3 + + + pom + + group-common + group-remote + group-server + + 4.0.0 + + muyu-group + + + muyu-group 营销模块 + + diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java index edb340e..02bcc35 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java @@ -100,5 +100,13 @@ public class ActivityTeamProductSkuInfo extends BaseEntity { .teamId(activityTeamSkuAddModel.getTeamId()) .build(); } + public static ActivityTeamProductSkuInfo skuModel(ActivityTeamProductSkuUpdModel activityTeamProductSkuUpdModel){ + return ActivityTeamProductSkuInfo.builder() + .id(activityTeamProductSkuUpdModel.getId()) + .teamPrice(activityTeamProductSkuUpdModel.getTeamPrice()) + .remainStock(activityTeamProductSkuUpdModel.getTeamStock()) + .teamStock(activityTeamProductSkuUpdModel.getTeamStock()) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuEditModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuEditModel.java index edc5632..661382a 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuEditModel.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuEditModel.java @@ -52,7 +52,6 @@ public class ActivityTeamProductSkuEditModel { public static ActivityTeamProductSkuEditModel teamSkuEditBuild(ProjectSkuInfoEditReq projectSkuInfoEditReq, Supplier productId){ return ActivityTeamProductSkuEditModel.builder() .id(projectSkuInfoEditReq.getProductSkuId()) - .sku(projectSkuInfoEditReq.getSku()) .teamStock(projectSkuInfoEditReq.getTeamStock()) .teamPrice(projectSkuInfoEditReq.getTeamPrice()) .productId(productId.get()) diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuUpdModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuUpdModel.java index b4a5a30..99e4ef6 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuUpdModel.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamProductSkuUpdModel.java @@ -1,5 +1,7 @@ package com.muyu.marketing.domain.model; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.req.ProjectSkuInfoUpdReq; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -32,4 +34,18 @@ public class ActivityTeamProductSkuUpdModel { * 拼团库存 */ private Long teamStock; + public static ActivityTeamProductSkuUpdModel infoModelBuild(ProjectSkuInfoUpdReq projectSkuInfoUpdReq){ + return ActivityTeamProductSkuUpdModel.builder() + .id(projectSkuInfoUpdReq.getProductSkuId()) + .teamPrice(projectSkuInfoUpdReq.getTeamPrice()) + .teamStock(projectSkuInfoUpdReq.getTeamStock()) + .build(); + } + public static ActivityTeamProductSkuUpdModel infolBuild(ActivityTeamProductSkuInfo productSkuInfo){ + return ActivityTeamProductSkuUpdModel.builder() + .id(productSkuInfo.getId()) + .teamPrice(productSkuInfo.getTeamPrice()) + .teamStock(productSkuInfo.getTeamStock()) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuAddModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuAddModel.java index ed72186..6e00e8b 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuAddModel.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuAddModel.java @@ -1,11 +1,13 @@ package com.muyu.marketing.domain.model; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import java.math.BigDecimal; +import java.util.function.Supplier; /** * 拼团规格sku添加模型 @@ -43,4 +45,12 @@ public class ActivityTeamSkuAddModel { * 拼团库存 */ private Long teamStock; + public static ActivityTeamSkuAddModel infolBuild(ActivityTeamProductSkuInfo productSkuInfo, Supplier productId){ + return ActivityTeamSkuAddModel.builder() + .sku(productSkuInfo.getProductSku()) + .productId(productId.get()) + .teamPrice(productSkuInfo.getTeamPrice()) + .teamStock(productSkuInfo.getTeamStock()) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoModel.java index b9bb481..561b418 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoModel.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuInfoModel.java @@ -1,5 +1,6 @@ package com.muyu.marketing.domain.model; +import com.muyu.marketing.domain.req.ProjectSkuInfoUpdReq; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,8 +11,8 @@ import java.math.BigDecimal; /** * @program: 2204a-cloud-server * @description: 拼团商品sku模型 - * @author: MengFanKuo - * @create: 2024-11-26 15:53 + * MengFanKuo + * 2024-11-26 15:53 * * */ @Data @@ -23,10 +24,6 @@ public class ActivityTeamSkuInfoModel { * id */ private Long id; - /** - * 规格SKU - */ - private String sku; /** * 拼团价格 @@ -37,4 +34,11 @@ public class ActivityTeamSkuInfoModel { * 拼团库存 */ private Long teamStock; + public static ActivityTeamSkuInfoModel infoModelBuild(ProjectSkuInfoUpdReq projectSkuInfoUpdReq){ + return ActivityTeamSkuInfoModel.builder() + .id(projectSkuInfoUpdReq.getProductSkuId()) + .teamPrice(projectSkuInfoUpdReq.getTeamPrice()) + .teamStock(projectSkuInfoUpdReq.getTeamStock()) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuModel.java index eac9d62..0fe7e25 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuModel.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamSkuModel.java @@ -1,5 +1,7 @@ package com.muyu.marketing.domain.model; +import com.muyu.marketing.domain.req.ActivityTeamSkuReq; +import com.muyu.marketing.domain.req.ProjectSkuInfoUpdReq; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -30,4 +32,11 @@ public class ActivityTeamSkuModel { * 添加拼团规格模型 */ private List activityTeamSkuAddModelList; + public static ActivityTeamSkuModel skuModelBuild(List projectSkuInfoUpdReqList){ + return ActivityTeamSkuModel.builder() + .activityTeamProductSkuUpdModelList(projectSkuInfoUpdReqList.stream().map(projectSkuInfoUpdReq -> { + return ActivityTeamProductSkuUpdModel.infoModelBuild(projectSkuInfoUpdReq); + }).toList()) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoUpdReq.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoUpdReq.java index f96ae22..e512866 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoUpdReq.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoUpdReq.java @@ -2,12 +2,17 @@ package com.muyu.marketing.domain.req; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.marketing.domain.model.ActivityTeamInfoUpdModel; +import com.muyu.marketing.domain.model.ActivityTeamProductSkuUpdModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuInfoModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import java.util.Date; +import java.util.List; /** * 团购活动商品信息规格修改 @@ -75,5 +80,24 @@ public class ActivityTeamInfoUpdReq { /** * 规格 */ - private ActivityTeamSkuReq activityTeamSkuReq; + /** + * 商品SkU集合 + */ + private List projectSkuInfoUpdReqList; + public ActivityTeamInfoUpdModel infoUpdModelBuild(){ + return ActivityTeamInfoUpdModel.builder() + .id(this.id) + .content(this.content) + .strategyType(this.strategyType) + .endTime(this.endTime) + .imageList(this.imageList) + .introduction(this.introduction) + .productId(this.productId) + .activityTeamSkuModel(ActivityTeamSkuModel.skuModelBuild(this.projectSkuInfoUpdReqList)) + .sort(this.sort) + .strategyId(this.strategyId) + .productImage(this.productImage) + .unit(this.unit) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuReq.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuReq.java index 9c97cd3..11cd29a 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuReq.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamSkuReq.java @@ -2,6 +2,7 @@ package com.muyu.marketing.domain.req; import com.muyu.marketing.domain.model.ActivityTeamProductSkuUpdModel; import com.muyu.marketing.domain.model.ActivityTeamSkuAddModel; +import com.muyu.marketing.domain.model.ActivityTeamSkuModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -33,4 +34,5 @@ public class ActivityTeamSkuReq { * 添加拼团规格模型 */ private List activityTeamSkuAddModelList; + } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoEditReq.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoEditReq.java index 0aac675..6215a54 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoEditReq.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ProjectSkuInfoEditReq.java @@ -19,10 +19,6 @@ public class ProjectSkuInfoEditReq { * id */ private Long productSkuId; - /** - * 规格SKU - */ - private String sku; /** * 拼团价格 */ diff --git a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/controller/ActivityTeamController.java b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/controller/ActivityTeamController.java index 9dd1a67..1db33fa 100644 --- a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/controller/ActivityTeamController.java +++ b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/controller/ActivityTeamController.java @@ -7,6 +7,7 @@ import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoDetailModel; import com.muyu.marketing.domain.req.ActivityTeamInfoEditReq; import com.muyu.marketing.domain.req.ActivityTeamInfoSaveReq; +import com.muyu.marketing.domain.req.ActivityTeamInfoUpdReq; import com.muyu.marketing.domain.req.TeamInfoListReq; import com.muyu.marketing.domain.resp.ActivityTeamInfoProductSkuDetailResp; import com.muyu.marketing.domain.resp.TeamInfoListResp; @@ -69,5 +70,12 @@ public class ActivityTeamController { activityTeamInfoService.edit(activityTeamInfoEditReq.activityTeamInfoEditBuild()); return Result.success(); } - + /** + * 修改团购活动 + */ + @PostMapping("/upd") + public Result upd(@RequestBody ActivityTeamInfoUpdReq activityTeamInfoUpdReq){ + activityTeamInfoService.upd(activityTeamInfoUpdReq.infoUpdModelBuild()); + return Result.success(); + } } diff --git a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/ActivityTeamProductSkuInfoService.java b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/ActivityTeamProductSkuInfoService.java index b9f059c..09fb093 100644 --- a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/ActivityTeamProductSkuInfoService.java +++ b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/ActivityTeamProductSkuInfoService.java @@ -6,6 +6,7 @@ import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.model.*; import com.muyu.marketing.domain.req.ActivityTeamSkuReq; +import java.util.Collection; import java.util.List; public interface ActivityTeamProductSkuInfoService extends IService { @@ -46,12 +47,28 @@ public interface ActivityTeamProductSkuInfoService extends IService activityTeamProductSkuUpdModelList); - /** - * 批量删除团购sku - */ - public void batchDel(List ids); + + /** * 批量添加团购sku */ - public void batchAdd(List activityTeamSkuAddModelList); + public void batchAdd(Collection activityTeamSkuAddModelCollection ); + + /** + * 根据拼团活动id查找sku + * @param id + * @return + */ + List findByTeamId(long id); + /** + * 批量删除团购sku + */ + void batchDel(Collection subtract); + + /** + * 根据活动id查询商品sku + * @param id + * @return + */ + List activityTeamAdd(long id); } diff --git a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamInfoServiceImpl.java b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamInfoServiceImpl.java index f3dc517..bd08bb7 100644 --- a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamInfoServiceImpl.java +++ b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamInfoServiceImpl.java @@ -7,6 +7,7 @@ import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.model.*; import com.muyu.marketing.domain.req.ActivityTeamInfoUpdReq; import com.muyu.marketing.domain.req.ProjectSkuInfoUpdReq; @@ -14,11 +15,13 @@ import com.muyu.marketing.team.mapper.ActivityTeamInfoMapper; import com.muyu.marketing.team.service.ActivityTeamInfoService; import com.muyu.marketing.team.service.ActivityTeamOpenInfoService; import com.muyu.marketing.team.service.ActivityTeamProductSkuInfoService; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; +import java.util.Collection; import java.util.List; @@ -112,16 +115,24 @@ public class ActivityTeamInfoServiceImpl extends ServiceImpl activityTeamSkuInfoDetailModel= activityTeamProductSkuInfoService.findByTeamId(activityTeamInfoUpdModel.getId()); ActivityTeamSkuModel activityTeamSkuModel = activityTeamInfoUpdModel.getActivityTeamSkuModel(); List activityTeamProductSkuUpdModelList = activityTeamSkuModel.getActivityTeamProductSkuUpdModelList(); - activityTeamProductSkuInfoService.batchUpd(activityTeamProductSkuUpdModelList); - activityTeamProductSkuInfoService.batchDel(activityTeamSkuModel.getSkuIds()); - activityTeamProductSkuInfoService.batchAdd(activityTeamSkuModel.getActivityTeamSkuAddModelList()); + //删除 + Collection subtract = CollectionUtils.subtract(activityTeamSkuInfoDetailModel, activityTeamProductSkuUpdModelList); + activityTeamProductSkuInfoService.batchDel(subtract); + //添加 + List activityTeamSkuAddModels=activityTeamProductSkuInfoService.activityTeamAdd(activityTeamInfoUpdModel.getId()); + List activityTeamSkuAddModelList = activityTeamSkuModel.getActivityTeamSkuAddModelList(); + Collection activityTeamSkuAddModelCollection = CollectionUtils.subtract(activityTeamSkuAddModelList, activityTeamSkuAddModels); + activityTeamSkuAddModelCollection.forEach(activityTeamSkuAddModel -> {activityTeamSkuAddModel.setTeamId(activityTeamInfoUpdModel.getId());}); + activityTeamProductSkuInfoService.batchAdd(activityTeamSkuAddModelCollection); + //修改 + activityTeamProductSkuInfoService.batchUpd(activityTeamSkuInfoDetailModel); }else { throw new ServiceException("拼团商品状态为活动中不可修改"); } diff --git a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java index 0c7bdbb..8e8b7e4 100644 --- a/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java +++ b/muyu-modules/muyu-marketing/marketing-server/src/main/java/com/muyu/marketing/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java @@ -15,12 +15,13 @@ import com.muyu.product.domain.ProjectSkuInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Optional; @Service public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl - implements ActivityTeamProductSkuInfoService { + implements ActivityTeamProductSkuInfoService { @Autowired private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService; @Autowired @@ -114,24 +115,57 @@ public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl ids) { - this.removeBatchByIds(ids); - } - /** * 批量添加团购sku - * @param activityTeamSkuAddModelList + * @param activityTeamSkuAddModelCollection */ @Override - public void batchAdd(List activityTeamSkuAddModelList) { - List activityTeamProductSkuInfoList = activityTeamSkuAddModelList.stream().map(activityTeamSkuAddModel -> { + public void batchAdd(Collection activityTeamSkuAddModelCollection ) { + List activityTeamProductSkuInfoList = activityTeamSkuAddModelCollection.stream().map(activityTeamSkuAddModel -> { return ActivityTeamProductSkuInfo.skuBuildModel(activityTeamSkuAddModel); }).toList(); this.saveBatch(activityTeamProductSkuInfoList); } + /** + * 根据拼图活动id查找sku模型 + * @param id + * @return + */ + @Override + public List findByTeamId(long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId,id); + List productSkuInfoList = activityTeamProductSkuInfoService.list(queryWrapper); + List modelList = productSkuInfoList.stream().map(activityTeamProductSkuInfo -> { + return ActivityTeamProductSkuUpdModel.infolBuild(activityTeamProductSkuInfo); + }).toList(); + return modelList; + } + /** + * 批量删除团购sku + * @param subtract + */ + @Override + public void batchDel(Collection subtract) { + List activityTeamProductSkuInfoList = subtract.stream().map(activityTeamProductSkuUpdModel -> { + return ActivityTeamProductSkuInfo.skuModel(activityTeamProductSkuUpdModel); + }).toList(); + this.removeBatchByIds(activityTeamProductSkuInfoList); + } + + /** + * 根据活动id查找商品sku + * @param id + * @return + */ + @Override + public List activityTeamAdd(long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId,id); + List productSkuInfoList = activityTeamProductSkuInfoService.list(queryWrapper); + List activityTeamSkuAddModelList = productSkuInfoList.stream().map(activityTeamProductSkuInfo -> { + return ActivityTeamSkuAddModel.infolBuild(activityTeamProductSkuInfo, () -> activityTeamProductSkuInfo.getProductId()); + }).toList(); + return activityTeamSkuAddModelList; + } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java index f1e3d62..53ce1c1 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java @@ -3,6 +3,7 @@ package com.muyu.product.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.muyu.product.cache.ProjectInfoCache; import com.muyu.product.domain.resp.ProjectDetailResp; import io.swagger.annotations.*; @@ -55,7 +56,28 @@ public class ProjectInfoController extends BaseController { List list = projectInfoService.list(ProjectInfo.queryBuild(projectInfoQueryReq)); return getDataTable(list); } - + /** + * 查询商品信息列表 + */ + @ApiOperation("获取商品信息列表") + @RequiresPermissions("product:info:list") + @GetMapping("/getProductInfo/{id}") + public Result> getProductInfo(@PathVariable("id") Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProjectInfo::getId,id); + List list = projectInfoService.list(queryWrapper); + return Result.success(list); + } + /** + * 查询商品信息列表 + */ + @ApiOperation("获取商品信息列表") + @RequiresPermissions("product:info:list") + @GetMapping("/productList") + public Result> list() { + List list = projectInfoService.list(); + return Result.success(list); + } /** * 导出商品信息列表 */ diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysLogininforController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysLogininforController.java index 7a4e5ac..cdace9e 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysLogininforController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysLogininforController.java @@ -24,7 +24,7 @@ import java.util.List; * @author muyu */ @RestController -@RequestMapping("/logininfor") +@RequestMapping("server-addr: 123.249.122.74:8848infor") public class SysLogininforController extends BaseController { @Autowired private SysLogininforService logininforService; diff --git a/muyu-modules/muyu-system/src/main/resources/logback.xml b/muyu-modules/muyu-system/src/main/resources/logback.xml index aa340cd..34a41e7 100644 --- a/muyu-modules/muyu-system/src/main/resources/logback.xml +++ b/muyu-modules/muyu-system/src/main/resources/logback.xml @@ -14,7 +14,7 @@ - ${log.path}/info.log + ${log.path}log