diff --git a/muyu-gateway/src/main/java/com/muyu/gateway/config/properties/CorsConfig.java b/muyu-gateway/src/main/java/com/muyu/gateway/config/properties/CorsConfig.java new file mode 100644 index 0000000..bb5f078 --- /dev/null +++ b/muyu-gateway/src/main/java/com/muyu/gateway/config/properties/CorsConfig.java @@ -0,0 +1,60 @@ +package com.muyu.gateway.config.properties; + + +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-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamInfo.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamInfo.java index f9bbff6..3675a69 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamInfo.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamInfo.java @@ -1,6 +1,11 @@ package com.muyu.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.muyu.domain.model.ActivityTeamInfoAddModel; +import com.muyu.domain.model.ActivityTeamInfoSaveModel; +import com.muyu.domain.model.ActivityTeamInfoUpdModel; +import com.muyu.domain.req.ActivityTeamInfoSaveReq; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -14,9 +19,12 @@ import java.util.Date; @NoArgsConstructor public class ActivityTeamInfo { + + /** * 主键 */ + @TableId(value = "id", type = IdType.AUTO) private long id; /** * 拼团名称 @@ -67,12 +75,74 @@ public class ActivityTeamInfo { */ private long strategyId; - - - public ActivityTeamInfo buildList(){ + /** + * 公共添加模型,转换成添加对象 + * @param activityTeamInfoAddModel 添加模型 + * @return 添加对象 + */ + public static ActivityTeamInfo addModelBuild(ActivityTeamInfoAddModel activityTeamInfoAddModel){ return ActivityTeamInfo.builder() - .status(this.status) + .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(); + } + public static ActivityTeamInfo buildModel(ActivityTeamInfoSaveReq activityTeamInfoSaveReq){ + String images = activityTeamInfoSaveReq.getImageList().toString(); + return ActivityTeamInfo.builder() + .productId(activityTeamInfoSaveReq.getProjectId()) + .productImage(activityTeamInfoSaveReq.getProjectImage()) + .unit(activityTeamInfoSaveReq.getUnit()) + .imageList(images) + .name(activityTeamInfoSaveReq.getName()) + .introduction(activityTeamInfoSaveReq.getIntroduction()) + .endTime(activityTeamInfoSaveReq.getEndTime()) + .strategyId(activityTeamInfoSaveReq.getStrategyId()) + .strategyType(activityTeamInfoSaveReq.getStrategyType()) + .sort(activityTeamInfoSaveReq.getSort()) .build(); } + public static ActivityTeamInfo teamSaveBuild(ActivityTeamInfoSaveModel activityTeamInfoSaveModel) { + return ActivityTeamInfo.builder() + .name(activityTeamInfoSaveModel.getName()) + .productId(activityTeamInfoSaveModel.getProductId()) + .productImage(activityTeamInfoSaveModel.getProductImage()) + .introduction(activityTeamInfoSaveModel.getIntroduction()) + .unit(activityTeamInfoSaveModel.getUnit()) + .imageList(activityTeamInfoSaveModel.getImageList()) + .endTime(activityTeamInfoSaveModel.getEndTime()) + .sort(activityTeamInfoSaveModel.getSort()) + .content(activityTeamInfoSaveModel.getContent()) + .status(activityTeamInfoSaveModel.getStatus()) + .strategyType(activityTeamInfoSaveModel.getStrategyType()) + .strategyId(activityTeamInfoSaveModel.getStrategyId()) + .build(); + } + public static ActivityTeamInfo TeamUpdateBuild (ActivityTeamInfoUpdModel activityTeamInfoUpdModel){ + return ActivityTeamInfo.builder() + .id(activityTeamInfoUpdModel.getId()) + .name(activityTeamInfoUpdModel.getName()) + .productId(activityTeamInfoUpdModel.getProductId()) + .productImage(activityTeamInfoUpdModel.getProductImage()) + .introduction(activityTeamInfoUpdModel.getIntroduction()) + .unit(activityTeamInfoUpdModel.getUnit()) + .imageList(activityTeamInfoUpdModel.getImageList()) + .endTime(activityTeamInfoUpdModel.getEndTime()) + .sort(activityTeamInfoUpdModel.getSort()) + .content(activityTeamInfoUpdModel.getContent()) + .status(activityTeamInfoUpdModel.getStatus()) + .strategyType(activityTeamInfoUpdModel.getStrategyType()) + .strategyId(activityTeamInfoUpdModel.getStrategyId()) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamOpenInfo.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamOpenInfo.java index ceeea36..3d0856a 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamOpenInfo.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamOpenInfo.java @@ -1,6 +1,10 @@ package com.muyu.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.domain.model.ActivityTeamOpenInfoAddModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -16,11 +20,12 @@ public class ActivityTeamOpenInfo { /** * 主键 */ - private long id; + @TableId(value = "id",type = IdType.AUTO) + private Long id; /** * 团购活动ID */ - private long teamId; + private Long teamId; /** * 团购类型 */ @@ -28,7 +33,7 @@ public class ActivityTeamOpenInfo { /** * 团购策略 */ - private String teamStrategyId; + private Long teamStrategyId; /** * 参团类型 */ @@ -36,11 +41,12 @@ public class ActivityTeamOpenInfo { /** * 结束团购时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endTime; /** * 商品ID */ - private String productId; + private Long productId; /** * 商品名称 */ @@ -52,15 +58,23 @@ public class ActivityTeamOpenInfo { /** * 开团标识 */ - private String key; + private String openkey; /** * 订单ID */ - private String orderId; + private Long orderId; /** * 开团状态 */ private String status; + public static ActivityTeamOpenInfo add(ActivityTeamOpenInfoAddModel addModel){ + return ActivityTeamOpenInfo.builder() + .teamId(addModel.getTeamId()) + .teamType(addModel.getTeamType()) + .teamStrategyId(addModel.getTeamStrategyId()) + .build(); + } + } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamProductSkuInfo.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamProductSkuInfo.java index eb3345a..a967160 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamProductSkuInfo.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/ActivityTeamProductSkuInfo.java @@ -1,5 +1,10 @@ package com.muyu.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.domain.model.ActivityTeamProductSkuAddModel; +import com.muyu.domain.model.ActivityTeamProductSkuReqModel; +import com.muyu.domain.model.ActivityTeamProductSkuUpdModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -15,6 +20,7 @@ public class ActivityTeamProductSkuInfo { /** * 主键 */ + @TableId(value = "id", type = IdType.AUTO) private long id; /** * 活动ID @@ -28,18 +34,51 @@ public class ActivityTeamProductSkuInfo { * 商品SKU */ private String productSku; - /** - * 商品库存 - */ - private Long productStock; /** * 拼团库存 */ 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()) + .productSku(activityTeamProductSkuAddModel.getSku()) + .remainStock(activityTeamProductSkuAddModel.getTeamStock()) + .teamPrice(activityTeamProductSkuAddModel.getTeamPrice()) + .build(); + } + public static ActivityTeamProductSkuInfo updateModelBuild(ActivityTeamProductSkuReqModel activityTeamProductSkuReqModel) { + return ActivityTeamProductSkuInfo.builder() + .id(activityTeamProductSkuReqModel.getId()) + .productId(activityTeamProductSkuReqModel.getProductId()) + .teamStock(activityTeamProductSkuReqModel.getTeamStock()) + .productSku(activityTeamProductSkuReqModel.getProductSku()) + .teamPrice(activityTeamProductSkuReqModel.getTeamPrice()) + .build(); + } + + public static ActivityTeamProductSkuInfo updModelBuild(ActivityTeamProductSkuUpdModel teamProductSkuUpdModel){ + return ActivityTeamProductSkuInfo.builder() + .id(teamProductSkuUpdModel.getId()) + .teamPrice(teamProductSkuUpdModel.getTeamPrice()) + .teamStock(teamProductSkuUpdModel.getTeamStock()) + .remainStock(teamProductSkuUpdModel.getTeamStock()) + .build(); + } } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivitySkuModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivitySkuModel.java index d843c33..c524d68 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivitySkuModel.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivitySkuModel.java @@ -1,7 +1,8 @@ package com.muyu.domain.model; -import com.muyu.domain.req.ActivitInfoSkuAddReq; + import com.muyu.domain.req.ActivityInfoAddReq; +import com.muyu.domain.req.ActivityInfoSkuAddReq; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,7 +22,7 @@ import java.util.List; @NoArgsConstructor public class ActivitySkuModel { - List activityInfoAdd; + List activityInfoAdd; public static ActivitySkuModel activitySkuModel(ActivityInfoAddReq req){ return ActivitySkuModel.builder() diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamDetailModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamDetailModel.java new file mode 100644 index 0000000..85d72a4 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamDetailModel.java @@ -0,0 +1,102 @@ +package com.muyu.domain.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.domain.ActivityTeamInfo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; +import java.util.function.Function; + +/** + * @program: 2204a-cloud-server + * @description: 活动回显总模型 + * @author: AoCi Tian + * @create: 2024-11-26 16:00 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamDetailModel { + /** + * 拼团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 Long sort; + /** + * 商品SkU集合 + */ + private List projectSkuInfoAddReqList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + public static ActivityTeamDetailModel findSkuSumList (ActivityTeamInfo activityTeamInfo, + Function function){ + return function.apply(ActivityTeamDetailModel.builder() + .id(activityTeamInfo.getId()) + .name(activityTeamInfo.getName()) + .productId(activityTeamInfo.getProductId()) + .productImage(activityTeamInfo.getProductImage()) + .introduction(activityTeamInfo.getIntroduction()) + .unit(activityTeamInfo.getUnit()) + .imageList(activityTeamInfo.getImageList()) + .endTime(activityTeamInfo.getEndTime()) + .sort(activityTeamInfo.getSort()) + .content(activityTeamInfo.getContent()) + .status(activityTeamInfo.getStatus()) + .strategyType(activityTeamInfo.getStrategyType()) + .strategyId(activityTeamInfo.getStrategyId()) + ); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamFindByIdModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamFindByIdModel.java new file mode 100644 index 0000000..8e22ccf --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamFindByIdModel.java @@ -0,0 +1,106 @@ +package com.muyu.domain.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.domain.ActivityTeamInfo; +import com.muyu.domain.resp.TeamInfoProductSkuIdByIdResp; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * 团购活动回显模板 + * + * @author: CuiFu Bo + * @create: 2024-11-27 00:49 + **/ + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamFindByIdModel { + + /** + * 主键 + */ + @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 teamProjectSkuInfoAddReqList; + + + public static ActivityTeamFindByIdModel findByIdModel(ActivityTeamInfo activityTeamInfo, List teamProjectSkuInfoAddReqList){ + return ActivityTeamFindByIdModel.builder() + .id(activityTeamInfo.getId()) + .name(activityTeamInfo.getName()) + .productId(activityTeamInfo.getProductId()) + .productImage(activityTeamInfo.getProductImage()) + .introduction(activityTeamInfo.getIntroduction()) + .unit(activityTeamInfo.getUnit()) + .imageList(activityTeamInfo.getImageList()) + .endTime(activityTeamInfo.getEndTime()) + .sort(activityTeamInfo.getSort()) + .content(activityTeamInfo.getContent()) + .status(activityTeamInfo.getStatus()) + .strategyType(activityTeamInfo.getStrategyType()) + .strategyId(activityTeamInfo.getStrategyId()) + .teamProjectSkuInfoAddReqList(teamProjectSkuInfoAddReqList) + .build(); + } + +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoAddModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoAddModel.java index 04e1547..546cb3c 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoAddModel.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoAddModel.java @@ -24,10 +24,18 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor public class ActivityTeamInfoAddModel { + /** + * 商品iD + */ + private Long productId; /** *商品图片 */ private String productImage; + /** + * 商品轮播图 + */ + private String imageList; /** *活动名称 */ @@ -60,11 +68,16 @@ public class ActivityTeamInfoAddModel { *排序 */ private long sort; + /** + * 状态 + */ + private String status; /** *详情 */ private String content; + public static ActivityTeamInfoAddModel activityTeamInfoAddModel (ActivityInfoAddReq req){ return ActivityTeamInfoAddModel.builder() .productImage(req.getProductImage()) diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoSaveModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoSaveModel.java new file mode 100644 index 0000000..02b13f2 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoSaveModel.java @@ -0,0 +1,90 @@ +package com.muyu.domain.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @program: 2204a-cloud-server + * @description: 添加活动模型 + * @author: AoCi Tian + * @create: 2024-11-26 10:59 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamInfoSaveModel { + + /** + * 拼团名称 + */ + 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 Long sort; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + public static ActivityTeamInfoSaveModel activityTeamInfoSaveModelBuild (ActivityTeamInfoAddModel activityTeamInfoAddModel){ + return ActivityTeamInfoSaveModel.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(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoUpdModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoUpdModel.java new file mode 100644 index 0000000..a717bbf --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamInfoUpdModel.java @@ -0,0 +1,60 @@ +package com.muyu.domain.model; + +import com.muyu.domain.req.ActivityTeamInfoUpdReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @program: 2204a-cloud-server + * @description: 活动商品规格修改模型 + * @author: AoCi Tian + * @create: 2024-11-26 19:25 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamInfoUpdModel { + private Long id; + private String name; + 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; + private Long strategyId; + private ActivityTeamProductSkuSettingModel activityTeamProductSkuSettingModel; + + public static ActivityTeamInfoUpdModel activityTeamInfoUpdReqModelBuild (ActivityTeamInfoUpdReq activityTeamInfoUpdReq){ + return ActivityTeamInfoUpdModel.builder() + .id(activityTeamInfoUpdReq.getId()) + .name(activityTeamInfoUpdReq.getName()) + .productId(activityTeamInfoUpdReq.getProductId()) + .productImage(activityTeamInfoUpdReq.getProductImage()) + .introduction(activityTeamInfoUpdReq.getIntroduction()) + .unit(activityTeamInfoUpdReq.getUnit()) + .imageList(activityTeamInfoUpdReq.getImageList()) + .endTime(activityTeamInfoUpdReq.getEndTime()) + .sort(activityTeamInfoUpdReq.getSort()) + .content(activityTeamInfoUpdReq.getContent()) + .status(activityTeamInfoUpdReq.getStatus()) + .strategyType(activityTeamInfoUpdReq.getStrategyType()) + .strategyId(activityTeamInfoUpdReq.getStrategyId()) + .activityTeamProductSkuSettingModel( + ActivityTeamProductSkuSettingModel.settingReqModel( + activityTeamInfoUpdReq.getActivityTeamProductSkuSettingReq(), + activityTeamInfoUpdReq::getProductId + ) + ) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamOpenInfoAddModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamOpenInfoAddModel.java new file mode 100644 index 0000000..a78e93a --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamOpenInfoAddModel.java @@ -0,0 +1,69 @@ +package com.muyu.domain.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * @author CuiFu Bo + * @create 2024-12-04 19:05 + **/ + + +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamOpenInfoAddModel { + /** + * 团购活动ID + */ + private Long teamId; + /** + * 团购类型 + */ + private String teamType; + /** + * 团购策略 + */ + private Long teamStrategyId; + /** + * 参团类型 + */ + private String executiveType; + /** + * 结束团购时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + /** + * 商品ID + */ + private Long productId; + /** + * 商品名称 + */ + private String productName; + /** + * 商品规格 + */ + private String productSku; + /** + * 开团标识 + */ + private String openkey; + /** + * 订单ID + */ + private Long orderId; + /** + * 开团状态 + */ + private String status; + +} + diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuAddModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuAddModel.java new file mode 100644 index 0000000..2923bb6 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuAddModel.java @@ -0,0 +1,58 @@ +package com.muyu.domain.model; + + +import com.muyu.domain.req.TeamProjectSkuInfoAddReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +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-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuIdModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuIdModel.java new file mode 100644 index 0000000..73eadac --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuIdModel.java @@ -0,0 +1,55 @@ +package com.muyu.domain.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 团购活动规格查询模型 + * + * @author: CuiFu Bo + * @create: 2024-11-27 00:54 + **/ + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamProductSkuIdModel { + + /** + * 主键 + */ + @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; + +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuInfoModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuInfoModel.java new file mode 100644 index 0000000..3cde288 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuInfoModel.java @@ -0,0 +1,51 @@ +package com.muyu.domain.model; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 商品活动SKU信息模型 + * + * @author DongZeLiang + * @date 2024-11-26 15:35 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamProductSkuInfoModel { + /** + * 团购商品SKU的ID + */ + private Long id; + + /** + * 团ID + */ + private Long teamId; + + /** + * 商品ID + */ + private Long productId; + + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuModel.java new file mode 100644 index 0000000..485a2ad --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuModel.java @@ -0,0 +1,50 @@ +package com.muyu.domain.model; + + +import com.muyu.domain.ActivityTeamProductSkuInfo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @program: 2204a-cloud-server + * @description: 回显sku模型 + * @author: AoCi Tian + * @create: 2024-11-26 16:03 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamProductSkuModel { + /** + * 规格id + */ + private Long id; + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + + public static ActivityTeamProductSkuModel FindBuild(ActivityTeamProductSkuInfo activityTeamProductSkuInfo) { + return ActivityTeamProductSkuModel.builder() + .id(activityTeamProductSkuInfo.getId()) + .sku(activityTeamProductSkuInfo.getProductSku()) + .teamStock(activityTeamProductSkuInfo.getTeamStock()) + .teamPrice(activityTeamProductSkuInfo.getTeamPrice()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuReqModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuReqModel.java new file mode 100644 index 0000000..92e4f35 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuReqModel.java @@ -0,0 +1,40 @@ +package com.muyu.domain.model; + +import com.muyu.domain.req.ActivityTeamProductSkuReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @program: 2204a-cloud-server + * @description: sku修改模型 + * @author: AoCi Tian + * @create: 2024-11-26 19:45 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamProductSkuReqModel { + private Long id; + private Long teamId; + private Long productId; + private String productSku; + private Long teamStock; + private Long remainStock; + private BigDecimal teamPrice; + public static ActivityTeamProductSkuReqModel activityTeamProductSkuReqModelBuild(ActivityTeamProductSkuReq activityTeamProductSkuReq){ + return ActivityTeamProductSkuReqModel.builder() + .id(activityTeamProductSkuReq.getId()) + .productId(activityTeamProductSkuReq.getProductId()) + .teamId(activityTeamProductSkuReq.getTeamId()) + .productSku(activityTeamProductSkuReq.getProductSku()) + .remainStock(activityTeamProductSkuReq.getRemainStock()) + .teamStock(activityTeamProductSkuReq.getTeamStock()) + .teamPrice(activityTeamProductSkuReq.getTeamPrice()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuSettingModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuSettingModel.java new file mode 100644 index 0000000..38411d9 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuSettingModel.java @@ -0,0 +1,59 @@ +package com.muyu.domain.model; + + +import com.muyu.domain.req.ActivityTeamProductSkuSettingReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.function.Supplier; + +/** + * 团购商品规格一键设置 + * + * @author DongZeLiang + * @date 2024-11-28 11:15 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamProductSkuSettingModel { + + /** + * 活动ID + */ + private Long teamId; + + /** + * 删除的ID集合 + */ + private List removeIds; + + /** + * 添加的规格集合 + */ + private List activityTeamProductSkuAddModelList; + + /** + * 修改的规格集合 + */ + private List activityTeamProductSkuUpdModelList; + + public static ActivityTeamProductSkuSettingModel settingReqModel(ActivityTeamProductSkuSettingReq activityTeamProductSkuSettingReq, Supplier productId) { + return ActivityTeamProductSkuSettingModel.builder() + .removeIds(activityTeamProductSkuSettingReq.getRemoveIds()) + .activityTeamProductSkuAddModelList( + activityTeamProductSkuSettingReq.getTeamProjectSkuInfoAddReqList().stream() + .map(teamProjectSkuInfoAddReq -> ActivityTeamProductSkuAddModel.addReqBuild(teamProjectSkuInfoAddReq, productId)) + .toList() + ) + .activityTeamProductSkuUpdModelList( + activityTeamProductSkuSettingReq.getTeamProjectSkuInfoUpdReqList().stream() + .map(ActivityTeamProductSkuUpdModel::updReqBuild) + .toList() + ).build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuUpdModel.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuUpdModel.java new file mode 100644 index 0000000..ac281e6 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/model/ActivityTeamProductSkuUpdModel.java @@ -0,0 +1,46 @@ +package com.muyu.domain.model; + + +import com.muyu.domain.req.TeamProjectSkuInfoUpdReq; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 拼团活动商品SKU + * + * @author DongZeLiang + * @date 2024-11-27 14:18 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamProductSkuUpdModel { + + /** + * 商品规格ID + */ + private Long id; + + /** + * 团购价格 + */ + private BigDecimal teamPrice; + + /** + * 团购库存 + */ + private Long teamStock; + + public static ActivityTeamProductSkuUpdModel updReqBuild(TeamProjectSkuInfoUpdReq teamProjectSkuInfoUpdReq){ + return ActivityTeamProductSkuUpdModel.builder() + .id(teamProjectSkuInfoUpdReq.getId()) + .teamStock(teamProjectSkuInfoUpdReq.getTeamStock()) + .teamPrice(teamProjectSkuInfoUpdReq.getTeamPrice()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityInfoAddReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityInfoAddReq.java index 49dda8b..6a3baf1 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityInfoAddReq.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityInfoAddReq.java @@ -69,5 +69,5 @@ public class ActivityInfoAddReq { /** * 商品规格 */ - private List skuList; + private List skuList; } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivitInfoSkuAddReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityInfoSkuAddReq.java similarity index 93% rename from muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivitInfoSkuAddReq.java rename to muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityInfoSkuAddReq.java index 183e6f1..4aa385e 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivitInfoSkuAddReq.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityInfoSkuAddReq.java @@ -18,7 +18,7 @@ import java.math.BigDecimal; @AllArgsConstructor @NoArgsConstructor -public class ActivitInfoSkuAddReq { +public class ActivityInfoSkuAddReq { /** * 商品规格 */ diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamInfoSaveReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamInfoSaveReq.java new file mode 100644 index 0000000..4126a28 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamInfoSaveReq.java @@ -0,0 +1,74 @@ +package com.muyu.domain.req; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.web.domain.BaseEntity; +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 projectId; + /** + * 商品活动图 + */ + private String projectImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + + private String unit; + /** + * 轮播图 + */ + + private String imageList; + /** + * 活动结束时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") + private Date endTime; + /** + * 活动排序 + */ + private Long sort; + /** + * 商品SkU集合 + */ + private List teamProjectSkuInfoAddReqList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamInfoUpdReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamInfoUpdReq.java new file mode 100644 index 0000000..919da16 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamInfoUpdReq.java @@ -0,0 +1,35 @@ +package com.muyu.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @program: 2204a-cloud-server + * @description: 活动商品规格修改入参 + * @author: AoCi Tian + * @create: 2024-11-26 19:25 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamInfoUpdReq { + private Long id; + private String name; + 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; + private Long strategyId; + private ActivityTeamProductSkuSettingReq activityTeamProductSkuSettingReq; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamProductSkuReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamProductSkuReq.java new file mode 100644 index 0000000..f7ba1c4 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamProductSkuReq.java @@ -0,0 +1,28 @@ +package com.muyu.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @program: 2204a-cloud-server + * @description: sku修改入参 + * @author: AoCi Tian + * @create: 2024-11-26 19:45 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamProductSkuReq { + private Long id; + private Long teamId; + private Long productId; + private String productSku; + private Long teamStock; + private Long remainStock; + private BigDecimal teamPrice; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamProductSkuSettingReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamProductSkuSettingReq.java new file mode 100644 index 0000000..82b5870 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/ActivityTeamProductSkuSettingReq.java @@ -0,0 +1,36 @@ +package com.muyu.domain.req; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 团购商品规格设置 + * + * @author DongZeLiang + * @date 2024-11-28 11:27 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTeamProductSkuSettingReq { + /** + * 删除的ID集合 + */ + private List removeIds; + + /** + * 添加的规格集合 + */ + private List teamProjectSkuInfoAddReqList; + + /** + * 添加的规格集合 + */ + private List teamProjectSkuInfoUpdReqList; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/TeamProjectSkuInfoAddReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/TeamProjectSkuInfoAddReq.java new file mode 100644 index 0000000..6f7a36a --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/TeamProjectSkuInfoAddReq.java @@ -0,0 +1,33 @@ +package com.muyu.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 TeamProjectSkuInfoAddReq { + + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/TeamProjectSkuInfoUpdReq.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/TeamProjectSkuInfoUpdReq.java new file mode 100644 index 0000000..2349dbf --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/req/TeamProjectSkuInfoUpdReq.java @@ -0,0 +1,33 @@ +package com.muyu.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 TeamProjectSkuInfoUpdReq { + + /** + * 规格SKU + */ + private Long id; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ActivityTeamDetailResp.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ActivityTeamDetailResp.java new file mode 100644 index 0000000..2409184 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ActivityTeamDetailResp.java @@ -0,0 +1,80 @@ +package com.muyu.domain.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.web.domain.BaseEntity; +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 ActivityTeamDetailResp extends BaseEntity { + + /** + * 团购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 activityTeamProjectSkuList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ActivityTeamProjectSkuResp.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ActivityTeamProjectSkuResp.java new file mode 100644 index 0000000..1ec4499 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ActivityTeamProjectSkuResp.java @@ -0,0 +1,38 @@ +package com.muyu.domain.resp; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 添加的 + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ActivityTeamProjectSkuResp { + + /** + * 团购商品SKU的ID + */ + private Long productSkuId; + + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ProjectFindSkuInfoResp.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ProjectFindSkuInfoResp.java new file mode 100644 index 0000000..37246d7 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/ProjectFindSkuInfoResp.java @@ -0,0 +1,46 @@ +package com.muyu.domain.resp; + +import com.muyu.domain.model.ActivityTeamProductSkuModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 回显resp + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class ProjectFindSkuInfoResp { + /** + * 规格id + */ + private Long id; + /** + * 规格SKU + */ + private String sku; + + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 拼团库存 + */ + private Long teamStock; + + public static ProjectFindSkuInfoResp projectFindSkuInfoBuild (ActivityTeamProductSkuModel activityTeamProductSkuModel) { + return ProjectFindSkuInfoResp.builder() + .teamStock(activityTeamProductSkuModel.getTeamStock()) + .teamPrice(activityTeamProductSkuModel.getTeamPrice()) + .id(activityTeamProductSkuModel.getId()) + .sku(activityTeamProductSkuModel.getSku()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoFindByIdResp.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoFindByIdResp.java new file mode 100644 index 0000000..6f15bb9 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoFindByIdResp.java @@ -0,0 +1,107 @@ +package com.muyu.domain.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import com.muyu.domain.model.ActivityTeamDetailModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * @program: 2204a-cloud-server + * @description: 团购活动回显响应 + * @author: AoCi Tian + * @create: 2024-11-26 15:19 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TeamInfoFindByIdResp { + /** + * 拼团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 Long sort; + /** + * 商品SkU集合 + */ + private List projectSkuInfoAddList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + + public static TeamInfoFindByIdResp teamInfoFindByIdBuild (ActivityTeamDetailModel activityTeamDetailModel){ + return TeamInfoFindByIdResp.builder() + .id(activityTeamDetailModel.getId()) + .name(activityTeamDetailModel.getName()) + .productId(activityTeamDetailModel.getProductId()) + .productImage(activityTeamDetailModel.getProductImage()) + .introduction(activityTeamDetailModel.getIntroduction()) + .unit(activityTeamDetailModel.getUnit()) + .imageList(activityTeamDetailModel.getImageList()) + .endTime(activityTeamDetailModel.getEndTime()) + .sort(activityTeamDetailModel.getSort()) + .projectSkuInfoAddList(activityTeamDetailModel.getProjectSkuInfoAddReqList().stream().map(ProjectFindSkuInfoResp::projectFindSkuInfoBuild).toList()) +// .projectSkuInfoAddList( +// teamInfoFindByIdRespModel.getProjectSkuInfoAddReqList().stream().map(activityTeamProductSkuModel -> +// ProjectFindSkuInfoResp.projectFindSkuInfoBuild(activityTeamProductSkuModel)).toList() +// ) + .content(activityTeamDetailModel.getContent()) + .status(activityTeamDetailModel.getStatus()) + .strategyType(activityTeamDetailModel.getStrategyType()) + .strategyId(activityTeamDetailModel.getStrategyId()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoListByIdResp.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoListByIdResp.java new file mode 100644 index 0000000..9532f21 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoListByIdResp.java @@ -0,0 +1,102 @@ +package com.muyu.domain.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.domain.model.ActivityTeamFindByIdModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * 团购活动回显 + * + * @author: CuiFu Bo + * @create: 2024-11-27 01:02 + **/ + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class TeamInfoListByIdResp { + /** + * 拼团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 Long sort; + /** + * 商品SkU集合 + */ + private List teamProjectSkuInfoAddReqList; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private Long strategyId; + public static TeamInfoListByIdResp teamInfoProductSkuIdByIdResp(ActivityTeamFindByIdModel activityTeamFindByIdModel){ + return TeamInfoListByIdResp.builder() + .id(activityTeamFindByIdModel.getId()) + .name(activityTeamFindByIdModel.getName()) + .productId(activityTeamFindByIdModel.getProductId()) + .productImage(activityTeamFindByIdModel.getProductImage()) + .introduction(activityTeamFindByIdModel.getIntroduction()) + .unit(activityTeamFindByIdModel.getUnit()) + .imageList(activityTeamFindByIdModel.getImageList()) + .endTime(activityTeamFindByIdModel.getEndTime()) + .sort(activityTeamFindByIdModel.getSort()) + .teamProjectSkuInfoAddReqList(activityTeamFindByIdModel.getTeamProjectSkuInfoAddReqList()) + .content(activityTeamFindByIdModel.getContent()) + .status(activityTeamFindByIdModel.getStatus()) + .strategyType(activityTeamFindByIdModel.getStrategyType()) + .strategyId(activityTeamFindByIdModel.getStrategyId()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoProductSkuIdByIdResp.java b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoProductSkuIdByIdResp.java new file mode 100644 index 0000000..f44687f --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-common/src/main/java/com/muyu/domain/resp/TeamInfoProductSkuIdByIdResp.java @@ -0,0 +1,67 @@ +package com.muyu.domain.resp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.muyu.domain.model.ActivityTeamProductSkuIdModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 团购活动规格回显 + * + * @author: CuiFu Bo + * @create: 2024-11-27 00:57 + **/ + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class TeamInfoProductSkuIdByIdResp { + + /** + * 主键 + */ + @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; + + public static TeamInfoProductSkuIdByIdResp buildModel(ActivityTeamProductSkuIdModel activityTeamProductSkuIdModel) { + return TeamInfoProductSkuIdByIdResp.builder() + .id(activityTeamProductSkuIdModel.getId()) + .teamId(activityTeamProductSkuIdModel.getTeamId()) + .productId(activityTeamProductSkuIdModel.getProductId()) + .productSku(activityTeamProductSkuIdModel.getProductSku()) + .teamPrice(activityTeamProductSkuIdModel.getTeamPrice()) + .remainStock(activityTeamProductSkuIdModel.getRemainStock()) + .teamStock(activityTeamProductSkuIdModel.getTeamStock()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/pom.xml b/muyu-modules/muyu-marketing/muyu-marketing-server/pom.xml index d4de538..90a921c 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/pom.xml +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/pom.xml @@ -92,6 +92,11 @@ com.dtflys.forest forest-spring-boot-starter + + cn.hutool + hutool-all + 5.8.3 + diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamInfoController.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamInfoController.java index fbf2b62..56a9d30 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamInfoController.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamInfoController.java @@ -10,13 +10,18 @@ import com.muyu.domain.ActivityTeamInfo; import com.muyu.domain.model.ActivitySkuModel; import com.muyu.domain.model.ActivityTeamInfoAddModel; import com.muyu.domain.model.ActivityTeamInfoListModel; +import com.muyu.domain.model.ActivityTeamInfoUpdModel; import com.muyu.domain.req.ActivityInfoAddReq; +import com.muyu.domain.req.ActivityTeamInfoSaveReq; +import com.muyu.domain.req.ActivityTeamInfoUpdReq; import com.muyu.domain.req.TeamInfoListReq; +import com.muyu.domain.resp.TeamInfoFindByIdResp; import com.muyu.domain.resp.TeamInfoListResp; import com.muyu.system.team.service.ActivityTeamInfoService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.text.ParseException; import java.util.List; /** @@ -53,16 +58,35 @@ public class ActivityTeamInfoController { } /** - * 拼团活动添加 - * @param activityInfoAddReq 拼团活动 - * @return 拼团活动 + * 新增团购活动 + * @param activityTeamInfoSaveReq 团购参数 + * @return */ @RequiresPermissions("marketing:marketing:save") - @PostMapping("/activityInfoAdd") - public Result activityInfoAdd(@RequestBody ActivityInfoAddReq activityInfoAddReq){ - activityTeamInfoService.activityAndProductList(ActivityTeamInfoAddModel.activityTeamInfoAddModel(activityInfoAddReq) - , ActivitySkuModel.activitySkuModel(activityInfoAddReq)); + @PostMapping("/save") + public Result save(@RequestBody ActivityTeamInfoSaveReq activityTeamInfoSaveReq ) throws ParseException { + return activityTeamInfoService.save(activityTeamInfoSaveReq); + } + + @PostMapping("/findById/{id}") + public Result findTeamById(@PathVariable Long id){ + return Result.success(TeamInfoFindByIdResp.teamInfoFindByIdBuild(activityTeamInfoService.findDetailById(id))); + } + @PutMapping("/updateByTeamId") + public Result updateByTeamId(@RequestBody ActivityTeamInfoUpdReq activityTeamInfoUpdReq){ + activityTeamInfoService.update(ActivityTeamInfoUpdModel.activityTeamInfoUpdReqModelBuild(activityTeamInfoUpdReq)); return Result.success(); } + /** + * 根据ID查询详情 + * @param id 活动I D + * @return 活动详情 + */ + @GetMapping("/teamList/{id}") + public Result> teamList(@PathVariable("id") Long id){ + List activityTeamInfoList= activityTeamInfoService.teamList(id); + return Result.success(activityTeamInfoList); + } + } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamOpenInfoController.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamOpenInfoController.java index 651f3ea..7538bbd 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamOpenInfoController.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamOpenInfoController.java @@ -1,12 +1,22 @@ package com.muyu.system.team.controller; +import com.muyu.system.team.service.ActivityTeamOpenInfoService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + /** * 团购活动执行表 * @program: cloud-server * @author: CuiFu Bo * @create: 2024-11-20 21:50 **/ - +@Api(tags = "团购活动执行") +@RestController +@RequestMapping("/open") public class ActivityTeamOpenInfoController { + @Autowired(required=true) + private ActivityTeamOpenInfoService activityTeamOpenInfoService; } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamProductSkuInfoController.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamProductSkuInfoController.java index d6ed453..577184a 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamProductSkuInfoController.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/controller/ActivityTeamProductSkuInfoController.java @@ -8,4 +8,5 @@ package com.muyu.system.team.controller; public class ActivityTeamProductSkuInfoController { + } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamInfoService.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamInfoService.java index 8ddba72..f6652e4 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamInfoService.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamInfoService.java @@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.domain.ActivityTeamInfo; -import com.muyu.domain.model.ActivitySkuModel; -import com.muyu.domain.model.ActivityTeamInfoAddModel; -import com.muyu.domain.model.ActivityTeamInfoListModel; -import com.muyu.domain.model.ActivityTeamInfoListQueryModel; +import com.muyu.domain.model.*; +import com.muyu.domain.req.ActivityTeamInfoSaveReq; import com.muyu.product.domain.req.ProjectInfoSaveReq; import java.util.List; @@ -26,9 +24,28 @@ public interface ActivityTeamInfoService extends IService { public TableDataInfo query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel); - void activityAndProductList(ActivityTeamInfoAddModel activityTeamInfoAddModel, ActivitySkuModel activitySkuModel); + Result save(ActivityTeamInfoSaveReq activityTeamInfoSaveReq); + /** + * 根据ID查询商品的详情 + * @param id 团购活动ID + * @return 团购详情 + */ + ActivityTeamDetailModel findDetailById(Long id); + /** + * 修改团购活动信息 + * @param activityTeamInfoUpdModel 团购活动信息 + * @return 是否成功 + */ + boolean update(ActivityTeamInfoUpdModel activityTeamInfoUpdModel); + + /** + * 根据活动ID查询详情 + * @param id id + * @return 查询详情 + */ + List teamList(Long id); } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamProductSkuInfoService.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamProductSkuInfoService.java index 92bea60..e64a2e8 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamProductSkuInfoService.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/ActivityTeamProductSkuInfoService.java @@ -3,8 +3,7 @@ package com.muyu.system.team.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.domain.ActivityTeamProductSkuInfo; -import com.muyu.domain.model.TeamDiscountPriceModel; -import com.muyu.domain.model.TeamProductStockModel; +import com.muyu.domain.model.*; import java.util.List; @@ -15,12 +14,13 @@ import java.util.List; **/ public interface ActivityTeamProductSkuInfoService extends IService { - public default List getActivityTeamProductSkuInfoByActivity(Long teamId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId, teamId); - return (this.list(queryWrapper)); + public default List getActivityTeamProductSkuInfoByTeamId(Long teamId){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId, teamId); + return this.list(lambdaQueryWrapper); } + /** * 通过活动ID获取商品最优惠的价格 * @param teamId 活动Id @@ -33,7 +33,46 @@ public interface ActivityTeamProductSkuInfoService extends IService activityTeamProductSkuAddModelList); + + /** + * 通过拼团活动ID获取拼团下商品SKU集合 + * @param teamId 活动ID + * @return 拼团商品SKU集合 + */ + public List findListByTeamId(Long teamId); + + public boolean updateBath(List activityTeamProductSkuReqModelList); + + /** + * 根据 业务模型 进行 团购商品修改 + * @param activityTeamProductSkuUpdModel 修改业务模型 + * @return 修改结果 + */ + public boolean update(ActivityTeamProductSkuUpdModel activityTeamProductSkuUpdModel); + + /** + * 根据 业务模型 进行 团购商品批量修改 + * @param activityTeamProductSkuUpdModelList 修改业务模型 + * @return 修改结果 + */ + public boolean batchUpdate(List activityTeamProductSkuUpdModelList); + + /** + * 一键设置 + * @param activityTeamProductSkuSettingModel 整体修改模型 + */ + public default void setting(ActivityTeamProductSkuSettingModel activityTeamProductSkuSettingModel){ + this.batchSave(activityTeamProductSkuSettingModel.getActivityTeamProductSkuAddModelList()); + this.batchUpdate(activityTeamProductSkuSettingModel.getActivityTeamProductSkuUpdModelList()); + this.removeByIds(activityTeamProductSkuSettingModel.getRemoveIds()); + } } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionHundredService.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionHundredService.java deleted file mode 100644 index 54f6ad5..0000000 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionHundredService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.muyu.system.team.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.muyu.domain.TeamStrategyExemptionHundred; - -/** - * 百人策略 - * @author: CuiFu Bo - * @create: 2024-11-20 21:38 - **/ -public interface TeamStrategyExemptionHundredService extends IService { -} - - - diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionService.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionService.java index cee2325..1385c44 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionService.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionService.java @@ -2,13 +2,14 @@ package com.muyu.system.team.service; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.domain.TeamStrategyExemption; +import com.muyu.system.team.strategy.ActivityTeamStrategy; /** * 拼团免单策略 * @author: CuiFu Bo * @create: 2024-11-20 21:38 **/ -public interface TeamStrategyExemptionService extends IService { +public interface TeamStrategyExemptionService extends ActivityTeamStrategy, IService { } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyHundredService.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyHundredService.java new file mode 100644 index 0000000..a054ed8 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyHundredService.java @@ -0,0 +1,23 @@ +package com.muyu.system.team.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.TeamStrategyExemptionHundred; +import com.muyu.system.team.strategy.ActivityTeamStrategy; + +/** + * 百人策略 + * @author: CuiFu Bo + * @create: 2024-11-20 21:38 + **/ +public interface TeamStrategyHundredService extends ActivityTeamStrategy, IService { + /** + * 开团 + */ + public void openTeam(Long activityTeamId,String orderNumber); + + /** + * 参团 + */ + public void addTeam(Long teamId,String orderNumber); +} + diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionOrdinaryService.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyOrdinaryService.java similarity index 57% rename from muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionOrdinaryService.java rename to muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyOrdinaryService.java index af432be..1227881 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyExemptionOrdinaryService.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/TeamStrategyOrdinaryService.java @@ -2,13 +2,14 @@ package com.muyu.system.team.service; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.domain.TeamStrategyExemptionOrdinary; +import com.muyu.system.team.strategy.ActivityTeamStrategy; /** * 普通策略 * @author: CuiFu Bo * @create: 2024-11-20 21:39 **/ -public interface TeamStrategyExemptionOrdinaryService extends IService { +public interface TeamStrategyOrdinaryService extends ActivityTeamStrategy, IService { } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamInfoServiceImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamInfoServiceImpl.java index 8dbb8ac..567aa4d 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamInfoServiceImpl.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamInfoServiceImpl.java @@ -3,22 +3,28 @@ package com.muyu.system.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.domain.Result; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.domain.ActivityTeamInfo; import com.muyu.domain.ActivityTeamProductSkuInfo; import com.muyu.domain.model.*; -import com.muyu.domain.req.ActivitInfoSkuAddReq; +import com.muyu.domain.req.ActivityInfoSkuAddReq; +import com.muyu.domain.req.ActivityTeamInfoSaveReq; import com.muyu.system.team.mapper.ActivityTeamInfoMapper; import com.muyu.system.team.service.ActivityTeamInfoService; import com.muyu.system.team.service.ActivityTeamOpenInfoService; import com.muyu.system.team.service.ActivityTeamProductSkuInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** 商品拼团信息 @@ -47,7 +53,7 @@ public class ActivityTeamInfoServiceImpl extends ServiceImpl ActivityTeamInfoListModel.infoBuild(activityTeamInfo, (activityTeamInfoListModelBuilder) -> { TeamDiscountPriceModel discountPrice = activityTeamProductSkuInfoService.getDiscountPrice(activityTeamInfo.getId()); - TeamProductStockModel productStockModer = activityTeamProductSkuInfoService.getProductStockModer(activityTeamInfo.getId()); + TeamProductStockModel productStockModer = activityTeamProductSkuInfoService.getStock(activityTeamInfo.getId()); Long teamOpenTypeByOpenTeam = activityTeamOpenInfoService.getTeamOpenTypeByOpenAndTypeTeam(activityTeamInfo.getId()); Long teamOpenTypeByInTeam = activityTeamOpenInfoService.getTeamOpenTypeByInAndTypeTeam(activityTeamInfo.getId()); return activityTeamInfoListModelBuilder @@ -66,33 +72,75 @@ public class ActivityTeamInfoServiceImpl extends ServiceImpl save(ActivityTeamInfoSaveReq activityTeamInfoSaveReq) { + ActivityTeamInfo activityTeamInfo = ActivityTeamInfo.buildModel(activityTeamInfoSaveReq); + //添加返回主键ID + Assert.isTrue(this.save(activityTeamInfo),StringUtils.format("添加商品拼团错误",activityTeamInfoSaveReq)); + List projectSkuList = activityTeamInfoSaveReq.getTeamProjectSkuInfoAddReqList(); - //添加商品规格表 - List activitInfoSkuAdd = activitySkuModel.getActivityInfoAdd(); - ArrayList skuModelsList = new ArrayList<>(); + List teamProductSkuInfoList = projectSkuList.stream().map(projectSkuModel -> { + return ActivityTeamProductSkuInfo.builder() + .teamId(activityTeamInfo.getId()) + .productId(activityTeamInfo.getProductId()) + .productSku(projectSkuModel.getProductSku()) + .teamStock(Long.valueOf(projectSkuModel.getTeamStock())) + .remainStock(Long.valueOf(projectSkuModel.getTeamStock())) + .teamPrice(projectSkuModel.getTeamPrice()) + .build(); + }) + .filter(Objects::nonNull) // 过滤掉null值 + .collect(Collectors.toList()); - - ActivityTeamProductSkuInfo activityTeamProductSkuInfo = new ActivityTeamProductSkuInfo(); - activitInfoSkuAdd.stream().forEach(activityAndProductId ->{ - activityTeamProductSkuInfo.setTeamId(activityTeamInfo.getId()); - activityTeamProductSkuInfo.setProductSku(activityAndProductId.getProductSku()); - activityTeamProductSkuInfo.setTeamPrice(activityAndProductId.getTeamPrice()); - activityTeamProductSkuInfo.setTeamStock(activityAndProductId.getTeamStock()); - skuModelsList.add(activityTeamProductSkuInfo); - }); - activityTeamProductSkuInfoService.saveBatch(skuModelsList); + activityTeamProductSkuInfoService.saveBatch(teamProductSkuInfoList); + return Result.success(); + } + /** + * 根据ID查询商品的详情 + * @param id 团购活动ID + * @return 团购详情 + */ + @Override + public ActivityTeamDetailModel findDetailById(Long id) { + ActivityTeamInfo activityTeamInfo = this.getById(id); + List activityTeamProductSkuModelList = activityTeamProductSkuInfoService.findListByTeamId(id); + return ActivityTeamDetailModel.findSkuSumList(activityTeamInfo, + (teamInfoFindByIdRespModelBuilder) -> teamInfoFindByIdRespModelBuilder.projectSkuInfoAddReqList(activityTeamProductSkuModelList).build() + ); } + /** + * 修改团购活动信息 + * @param activityTeamInfoUpdModel 团购活动信息 + * @return 是否成功 + */ + @Override + public boolean update(ActivityTeamInfoUpdModel activityTeamInfoUpdModel) { + boolean update = this.updateById(ActivityTeamInfo.TeamUpdateBuild(activityTeamInfoUpdModel)); + Assert.isTrue(update,"修改失败"); + activityTeamProductSkuInfoService.setting(activityTeamInfoUpdModel.getActivityTeamProductSkuSettingModel()); + return update; + } + + /** + * 根据ID查询详情 + * @param id 活动ID + * @return 查询详情 + */ + @Override + public List teamList(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamInfo::getId,id); + List list = this.list(queryWrapper); + return list; + } } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java index 8743e71..36954d2 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/ActivityTeamProductSkuInfoServiceImpl.java @@ -1,16 +1,18 @@ package com.muyu.system.team.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.exception.ServiceException; import com.muyu.domain.ActivityTeamProductSkuInfo; -import com.muyu.domain.model.TeamDiscountPriceModel; -import com.muyu.domain.model.TeamProductStockModel; +import com.muyu.domain.model.*; import com.muyu.product.cache.ProjectSkuCache; import com.muyu.product.domain.ProjectSkuInfo; import com.muyu.system.team.mapper.ActivityTeamProductSkuInfoMapper; import com.muyu.system.team.service.ActivityTeamProductSkuInfoService; import lombok.SneakyThrows; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -36,7 +38,7 @@ public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl productSkuInfoList = this.getActivityTeamProductSkuInfoByActivity(teamId); + List productSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); if(productSkuInfoList.size()>0){ @@ -58,12 +60,80 @@ public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl productSkuInfoList = this.getActivityTeamProductSkuInfoByActivity(teamId); + public TeamProductStockModel getStock(Long teamId) { + List teamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); return TeamProductStockModel.builder() - .teamStock(productSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getTeamStock).reduce(0L,Long::sum)) - .remainStock(productSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getProductStock).reduce(0L,Long::sum)) + .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("入参添加商品规格模型,不可为空"); + } + this.saveBatch( + activityTeamProductSkuAddModelList.stream().map(ActivityTeamProductSkuInfo::modelBuild).toList() + ); + } + /** + * 通过拼团活动ID获取拼团下商品SKU集合 + * + * @param teamId 活动ID + * @return 拼团商品SKU集合 + */ + @Override + public List findListByTeamId(Long teamId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId,teamId); + List list = this.list(queryWrapper); + return list.stream().map(ActivityTeamProductSkuModel::FindBuild).toList(); +// return list.stream().map(activityTeamProductSkuInfo -> ActivityTeamProductSkuModel.FindBuild(activityTeamProductSkuInfo)).toList(); + } + + @Transactional + @Override + public boolean updateBath(List activityTeamProductSkuReqModelList) { + return this.updateBatchById(activityTeamProductSkuReqModelList.stream().map(ActivityTeamProductSkuInfo::updateModelBuild).toList()); + } + + /** + * 根据 业务模型 进行 团购商品修改 + * + * @param activityTeamProductSkuUpdModel 修改业务模型 + * @return 修改结果 + */ + @Override + public boolean update(ActivityTeamProductSkuUpdModel activityTeamProductSkuUpdModel) { + // update set where + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + // 字段=值 + updateWrapper.set(ActivityTeamProductSkuInfo::getTeamStock,activityTeamProductSkuUpdModel.getTeamStock()); + updateWrapper.set(ActivityTeamProductSkuInfo::getRemainStock,activityTeamProductSkuUpdModel.getTeamStock()); + updateWrapper.set(ActivityTeamProductSkuInfo::getTeamPrice,activityTeamProductSkuUpdModel.getTeamPrice()); + // id=? + updateWrapper.eq(ActivityTeamProductSkuInfo::getId,activityTeamProductSkuUpdModel.getId()); + return this.update(updateWrapper); + } + + /** + * 根据 业务模型 进行 团购商品批量修改 + * + * @param activityTeamProductSkuUpdModelList 修改业务模型 + * @return 修改结果 + */ + @Override + public boolean batchUpdate(List activityTeamProductSkuUpdModelList) { + return this.updateBatchById( + activityTeamProductSkuUpdModelList.stream() + .map(ActivityTeamProductSkuInfo::updModelBuild) + .toList() + ); } } diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionHundredServiceImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionHundredServiceImpl.java deleted file mode 100644 index b6013aa..0000000 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionHundredServiceImpl.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.muyu.system.team.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.domain.TeamStrategyExemptionHundred; -import com.muyu.system.team.mapper.TeamStrategyExemptionHundredMapper; -import com.muyu.system.team.service.TeamStrategyExemptionHundredService; -import org.springframework.stereotype.Service; - -/** -百人策略 - * @author: CuiFu Bo - * @create: 2024-11-20 21:44 - **/ - -@Service -public class TeamStrategyExemptionHundredServiceImpl extends ServiceImpl implements TeamStrategyExemptionHundredService { -} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionOrdinaryServiceImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionOrdinaryServiceImpl.java deleted file mode 100644 index dae5f30..0000000 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionOrdinaryServiceImpl.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.muyu.system.team.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.domain.TeamStrategyExemptionOrdinary; -import com.muyu.system.team.mapper.TeamStrategyExemptionOrdinaryMapper; -import com.muyu.system.team.service.TeamStrategyExemptionOrdinaryService; -import org.springframework.stereotype.Service; - -/** -普通策略 - * @author: CuiFu Bo - * @create: 2024-11-20 21:48 - **/ - -@Service -public class TeamStrategyExemptionOrdinaryServiceImpl extends ServiceImpl implements TeamStrategyExemptionOrdinaryService { -} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionServiceImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionServiceImpl.java index 0fe2fba..6a2bc87 100644 --- a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionServiceImpl.java +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyExemptionServiceImpl.java @@ -1,21 +1,101 @@ package com.muyu.system.team.service.impl; + +import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.domain.Result; +import com.muyu.domain.ActivityTeamInfo; +import com.muyu.domain.ActivityTeamOpenInfo; import com.muyu.domain.TeamStrategyExemption; import com.muyu.domain.TeamStrategyExemptionHundred; +import com.muyu.product.domain.ProjectInfo; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.remote.RemoteProjectInfoService; +import com.muyu.product.remote.RemoteProjectSkuService; import com.muyu.system.team.mapper.TeamStrategyExemptionHundredMapper; import com.muyu.system.team.mapper.TeamStrategyExemptionMapper; -import com.muyu.system.team.service.TeamStrategyExemptionHundredService; +import com.muyu.system.team.service.ActivityTeamInfoService; +import com.muyu.system.team.service.ActivityTeamOpenInfoService; +import com.muyu.system.team.service.ActivityTeamProductSkuInfoService; import com.muyu.system.team.service.TeamStrategyExemptionService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.UUID; + /** 拼团免单策略 * @author: CuiFu Bo * @create: 2024-11-20 21:43 **/ -@Service -public class TeamStrategyExemptionServiceImpl extends ServiceImpl implements TeamStrategyExemptionService { -} +@Log4j2 +@Service("team_strategy_exemption") +public class TeamStrategyExemptionServiceImpl extends ServiceImpl + implements TeamStrategyExemptionService { + @Autowired + private ActivityTeamInfoService activityTeamInfoService; + @Autowired + private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService; + @Autowired + private ActivityTeamOpenInfoService activityTeamOpenInfoService; + @Resource + private RemoteProjectInfoService remoteProjectInfoService; + @Resource + private RemoteProjectSkuService remoteProjectSkuService; + @Override + public void openTeam(Long activityTeamId) { + log.info("参加 免拼团{}",activityTeamId); + TeamStrategyExemption teamStrategyExemption = this.getById(activityTeamId); + ActivityTeamInfo activityTeamInfo = activityTeamInfoService.getById(activityTeamId); + + + //获取商品ID + Long productId = activityTeamInfo.getProductId(); + //通过商品ID从商品缓存里获取到商品信息 + Result projectInfoResult = remoteProjectInfoService.getInfo(productId); + ProjectInfo projectInfo = projectInfoResult.getData(); + Result projectSkuInfoResult = remoteProjectSkuService.getInfoByProjectIdAndSku(productId, "骁龙888-8G-128G"); + ProjectSkuInfo projectSkuInfo = projectSkuInfoResult.getData(); + ActivityTeamOpenInfo activityTeamOpenInfo = new ActivityTeamOpenInfo(); + activityTeamOpenInfo.setTeamId(activityTeamId); + activityTeamOpenInfo.setTeamType(activityTeamInfo.getStrategyType()); + activityTeamOpenInfo.setTeamStrategyId(activityTeamInfo.getStrategyId()); + activityTeamOpenInfo.setExecutiveType(activityTeamInfo.getStrategyType()); + activityTeamOpenInfo.setEndTime(activityTeamInfo.getEndTime()); + activityTeamOpenInfo.setProductId(projectInfo.getId()); + activityTeamOpenInfo.setProductName(projectInfo.getName()); + activityTeamOpenInfo.setProductSku(projectSkuInfo.getSku()); + String openKey = UUID.randomUUID().toString(); + activityTeamOpenInfo.setOpenkey(openKey); + Long numbers = Long.valueOf(RandomUtil.randomNumbers(8)); + activityTeamOpenInfo.setOrderId(numbers); + activityTeamOpenInfo.setStatus("Y"); + activityTeamOpenInfoService.save(activityTeamOpenInfo); + } + + @Override + public String applyTeam(Long teamId) { + ActivityTeamOpenInfo teamOpenInfo = activityTeamOpenInfoService.getById(teamId); + + return null; + } + + @Override + public void addTeam(Long teamId, String orderNumber) { + + } + + @Override + public void backTeam(Long teamId) { + + } + + @Override + public void settle(Long teamId) { + + } +} \ No newline at end of file diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyHundredServiceImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyHundredServiceImpl.java new file mode 100644 index 0000000..6c03166 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyHundredServiceImpl.java @@ -0,0 +1,51 @@ +package com.muyu.system.team.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.domain.TeamStrategyExemptionHundred; +import com.muyu.system.team.mapper.TeamStrategyExemptionHundredMapper; +import com.muyu.system.team.service.TeamStrategyHundredService; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Service; + +/** +百人策略 + * @author: CuiFu Bo + * @create: 2024-11-20 21:44 + **/ +@Log4j2 +@Service("team-strategy-hundred") +public class TeamStrategyHundredServiceImpl extends ServiceImpl implements TeamStrategyHundredService { + + + @Override + public void openTeam(Long activityTeamId, String orderNumber) { + log.info("参团 百人团{}",activityTeamId); + + } + + @Override + public void openTeam(Long activityTeamId) { + + } + + @Override + public String applyTeam(Long teamId) { + return null; + } + + @Override + public void addTeam(Long teamId, String orderNumber) { + + } + + @Override + public void backTeam(Long teamId) { + + } + + @Override + public void settle(Long teamId) { + + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyOrdinaryServiceImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyOrdinaryServiceImpl.java new file mode 100644 index 0000000..ac2a781 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/service/impl/TeamStrategyOrdinaryServiceImpl.java @@ -0,0 +1,42 @@ +package com.muyu.system.team.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.domain.TeamStrategyExemptionOrdinary; +import com.muyu.system.team.mapper.TeamStrategyExemptionOrdinaryMapper; +import com.muyu.system.team.service.TeamStrategyOrdinaryService; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Service; + +/** +普通策略 + * @author: CuiFu Bo + * @create: 2024-11-20 21:48 + **/ +@Log4j2 +@Service("team_strategy_ordinary") +public class TeamStrategyOrdinaryServiceImpl extends ServiceImpl implements TeamStrategyOrdinaryService { + @Override + public void openTeam(Long activityTeamId) { + log.info("参团 普通团{}",activityTeamId); + } + + @Override + public String applyTeam(Long teamId) { + return null; + } + + @Override + public void addTeam(Long teamId, String orderNumber) { + + } + + @Override + public void backTeam(Long teamId) { + + } + + @Override + public void settle(Long teamId) { + + } +} diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/strategy/ActivityTeamStrategy.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/strategy/ActivityTeamStrategy.java new file mode 100644 index 0000000..e4e7374 --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/strategy/ActivityTeamStrategy.java @@ -0,0 +1,45 @@ +package com.muyu.system.team.strategy; + +/** + * 团活动策略 + */ +public interface ActivityTeamStrategy { + + /** + * 开团 + * @param activityTeamId 团购活动ID + */ + public void openTeam(Long activityTeamId); + + + + /** + * 申请加团 + * @param teamId 团ID + * @return 申请成功code + */ + public String applyTeam(Long teamId); + + + /** + * 参团 + * @param teamId 加团ID + * @param orderNumber 订单编号 + */ + public void addTeam(Long teamId,String orderNumber); + + + /** + * 退团 + * @param teamId 团购ID + */ + public void backTeam(Long teamId); + + + /** + * 结算团 + * @param teamId 团购ID + */ + public void settle(Long teamId); +} + diff --git a/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/strategy/impl/ActivityTeamStrategyImpl.java b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/strategy/impl/ActivityTeamStrategyImpl.java new file mode 100644 index 0000000..e34b19b --- /dev/null +++ b/muyu-modules/muyu-marketing/muyu-marketing-server/src/main/java/com/muyu/system/team/strategy/impl/ActivityTeamStrategyImpl.java @@ -0,0 +1,48 @@ +package com.muyu.system.team.strategy.impl; + +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.utils.SpringUtils; +import com.muyu.system.team.strategy.ActivityTeamStrategy; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; + +@Service +@Primary +public class ActivityTeamStrategyImpl implements ActivityTeamStrategy { + @Override + public void openTeam(Long activityTeamId) { + String activityTeamType =null; + if (activityTeamId==null){ + throw new ServiceException("activityTeamId is null"); + } else if (activityTeamId==0) { + activityTeamType="team_strategy_exemption"; + }else if (activityTeamId==1){ + activityTeamType="team-strategy-hundred"; + }else if (activityTeamId==2){ + activityTeamType="team_strategy_ordinary"; + } + ActivityTeamStrategy activityTeamStrategy = SpringUtils.getBean(activityTeamType); + activityTeamStrategy.openTeam(activityTeamId); + + } + + @Override + public String applyTeam(Long teamId) { + return null; + } + + @Override + public void addTeam(Long teamId, String orderNumber) { + + } + + @Override + public void backTeam(Long teamId) { + + } + + @Override + public void settle(Long teamId) { + + } +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java index ebd44da..5a4f811 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java @@ -35,6 +35,7 @@ public class TemplateAttributeModel extends BaseEntity { */ private String code; + private String value; public static TemplateAttributeModel attributeInfoBuild(AttributeInfo attributeInfo){ return TemplateAttributeModel.builder() .id(attributeInfo.getId()) diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectInfoResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectInfoResp.java index f4be726..4cf4fce 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectInfoResp.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectInfoResp.java @@ -22,80 +22,57 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class ProjectInfoResp { /** 主键 */ - @TableId(value = "id",type = IdType.AUTO) - @ApiModelProperty(name = "主键", value = "主键") private Long id; /** 商品名称 */ - @Excel(name = "商品名称") - @ApiModelProperty(name = "商品名称", value = "商品名称") private String name; /** 商品描述 */ - @Excel(name = "商品描述") - @ApiModelProperty(name = "商品描述", value = "商品描述") private String introduction; /** 主类型 */ - @Excel(name = "主类型") - @ApiModelProperty(name = "主类型", value = "主类型") private Long mianType; /** 父类型 */ - @Excel(name = "父类型") - @ApiModelProperty(name = "父类型", value = "父类型") private Long parentType; /** 商品类型 */ - @Excel(name = "商品类型") - @ApiModelProperty(name = "商品类型", value = "商品类型") private Long type; /** 商品图片 */ - @Excel(name = "商品图片") - @ApiModelProperty(name = "商品图片", value = "商品图片") private String image; /** 商品轮播图 */ - @Excel(name = "商品轮播图") - @ApiModelProperty(name = "商品轮播图", value = "商品轮播图") private String carouselImages; /** 商品状态 */ - @Excel(name = "商品状态") - @ApiModelProperty(name = "商品状态", value = "商品状态") private String status; /** 规格 */ - @Excel(name = "规格") - @ApiModelProperty(name = "规格", value = "规格") private Long ruleId; /** 品牌 */ - @Excel(name = "品牌") - @ApiModelProperty(name = "品牌", value = "品牌") private Long brandId; + /** * 主类型名称 */ - private String mianTypeName; - + public String mianTypeName; /** * 父类型名称 */ - private String parentTypeName; + public String parentTypeName; /** * 商品类型名称 */ - private String typeName; - + public String typeName; /** * 规格名称 */ - private String ruleName; + public String ruleName; /** * 品牌名称 */ - private String brandName; + public String brandName; } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CommentInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CommentInfoController.java index 9500949..f5c6f20 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CommentInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CommentInfoController.java @@ -51,6 +51,18 @@ public class CommentInfoController extends BaseController { return getDataTable(list); } + /** + * 查询商品评论列表 + */ + @ApiOperation("获取商品评论列表") + @RequiresPermissions("product:comment:list") + @GetMapping("/reviewList/{id}") + public Result> review(@PathVariable("id")Long id) { + startPage(); + List list = commentInfoService.review(id); + return getDataTable(list); + } + /** * 导出商品评论列表 */ 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 6cef2d6..0ff647c 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 @@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse; import com.muyu.product.cache.ProjectInfoCache; import com.muyu.product.domain.resp.ProjectDetailResp; +import com.muyu.product.domain.resp.ProjectInfoResp; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -50,9 +51,9 @@ public class ProjectInfoController extends BaseController { @ApiOperation("获取商品信息列表") @RequiresPermissions("product:info:list") @GetMapping("/list") - public Result> list(ProjectInfoQueryReq projectInfoQueryReq) { + public Result> list(ProjectInfoQueryReq projectInfoQueryReq) { startPage(); - List list = projectInfoService.list(ProjectInfo.queryBuild(projectInfoQueryReq)); + List list = projectInfoService.ProjectInfo(ProjectInfo.queryBuild(projectInfoQueryReq)); return getDataTable(list); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CommentInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CommentInfoService.java index 54fbcca..44e69fd 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CommentInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CommentInfoService.java @@ -19,4 +19,6 @@ public interface CommentInfoService extends IService { */ public List list(CommentInfo commentInfo); + + List review(Long id); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java index 52f38d6..dc37e48 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java @@ -7,6 +7,7 @@ import com.muyu.product.domain.ProjectInfo; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.resp.ProjectDetailResp; +import com.muyu.product.domain.resp.ProjectInfoResp; /** * 商品信息Service接口 @@ -36,4 +37,6 @@ public interface ProjectInfoService extends IService { * @return 商品详情 */ ProjectDetailResp getDetailInfo (Long id); + + List ProjectInfo(ProjectInfo projectInfo); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java index ac9926c..dc9762a 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java @@ -65,6 +65,9 @@ public class CategoryInfoServiceImpl extends ServiceImpl { + List list = asProductAttributeInfoService.list(new LambdaQueryWrapper().eq(AsProductAttributeInfo::getAttributeId, templateAttributeModel.getId())); + list.forEach(attributeInfo ->{ + templateAttributeModel.setValue(attributeInfo.getValue()); + }); + }); + + attributeGroupModelList.forEach(templateAttributeGroupModel -> { + templateAttributeGroupModel.getAttributeList().forEach(templateAttributeModel -> { + List list = asProductAttributeInfoService.list( + new LambdaQueryWrapper().eq(AsProductAttributeInfo::getAttributeId, templateAttributeModel.getId())); + list.forEach(attributeInfo -> { + templateAttributeModel.setValue(attributeInfo.getValue()); + }); + }); + }); + + templateAttributeModelList.forEach(templateAttributeModel -> { + List list = asProductAttributeInfoService.list(new LambdaQueryWrapper().eq(AsProductAttributeInfo::getAttributeId, templateAttributeModel.getId())); + list.forEach(attributeInfo -> { + templateAttributeModel.setValue(attributeInfo.getValue()); + }); + }); + + return CategoryCommonElementResp.builder() .templateAttributeGroupList(attributeGroupModelList) .templateAttributeList(templateAttributeModelList) diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CommentInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CommentInfoServiceImpl.java index 365a5c4..02aac14 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CommentInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CommentInfoServiceImpl.java @@ -54,4 +54,12 @@ public class CommentInfoServiceImpl extends ServiceImpl review(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CommentInfo::getProjectId,id); + List list = this.list(queryWrapper); + return list; + } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java index cf139fa..a4520e2 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java @@ -13,6 +13,7 @@ import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.resp.CategoryCommonElementResp; import com.muyu.product.domain.resp.ProjectDetailResp; import com.muyu.product.domain.resp.ProjectInfoResp; +import com.muyu.product.mapper.RuleInfoMapper; import com.muyu.product.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +22,8 @@ import com.muyu.product.mapper.ProjectInfoMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import javax.annotation.Resource; + /** * 商品信息Service业务层处理 * @@ -50,7 +53,10 @@ public class ProjectInfoServiceImpl extends ServiceImpl ProjectInfo(ProjectInfo projectInfo) { + + List list = list(projectInfo); + + List projectInfoListResps = new LinkedList<>(); + list.forEach(p -> { + // 获取类别信息 + CategoryInfo mianTypeName = categoryInfoService.getById(p.getMianType()); + CategoryInfo parentTypeName = categoryInfoService.getById(p.getParentType()); + CategoryInfo typeName = p.getType() != null ? categoryInfoService.getById(p.getType()) : null; + + // 获取规则信息 + RuleInfo ruleName = ruleInfoMapper.selectById(p.getRuleId()); + + // 获取品牌信息 + BrandInfo brandName = brandInfoService.getById(p.getBrandId()); + + // 构建响应对象 + ProjectInfoResp resp = ProjectInfoResp.builder() + .id(p.getId()) + .name(p.getName()) + .introduction(p.getIntroduction()) + .mianType(p.getMianType()) + .parentType(p.getParentType()) + .type(p.getType()) + .image(p.getImage()) + .carouselImages(p.getCarouselImages()) + .status(p.getStatus()) + .mianTypeName(mianTypeName != null ? mianTypeName.getName() : "") + .parentTypeName(parentTypeName != null ? parentTypeName.getName() : "") + .typeName(typeName != null ? typeName.getName() : "") + .ruleName(ruleName != null ? ruleName.getName() : "") + .brandName(brandName != null ? brandName.getNam() : "") + .build(); + + // 添加到结果列表 + projectInfoListResps.add(resp); + }); + + return projectInfoListResps; + } + + }