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