From 91ea6b0498957bbed31536afa20f4341fb6d62ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B2=B3=E5=B9=B3?= <14767849+liuehping@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 09:40:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B9=9D=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/muyu/common/cache/Cache.java | 6 +- .../com/muyu/common/cache/abs/CacheAbs.java | 6 +- .../enums/market/team/TeamOpenTypeEnum.java | 26 ++++++ .../common/core/web/model/QueryModel.java | 63 +++++++++++++ .../muyu/common/core/web/page/PageDomain.java | 33 ++----- .../config/mybatisplus/MybatisPlusConfig.java | 22 +++++ .../muyu-marketing/marketing-common/pom.xml | 15 ++++ .../marketing/domain/ActivityTeamInfo.java | 90 +++++++++++-------- .../domain/ActivityTeamOpenInfo.java | 76 ++++++++++++++++ .../domain/ActivityTeamProductSkuInfo.java | 57 ++++++++++++ .../model/ActivityTeamInfoAddModel.java | 81 +++++++++++++++++ .../model/ActivityTeamInfoListModel.java | 76 ++++++++++++++++ .../model/ActivityTeamInfoListQueryModel.java | 25 ++++++ .../model/TeamProductDisCountPriceModel.java | 47 ++++++++++ .../domain/model/TeamProductStockModel.java | 27 ++++++ .../domain/req/ActivityTeamInfoReq.java | 26 ++++-- .../domain/resp/TeamInfoListResp.java | 75 ++++++++++++++++ .../muyu-marketing/marketing-serve/pom.xml | 13 ++- .../marketing/MuYuMarketingApplication.java | 4 +- .../ActivityTeamInfoController.java | 45 +++++----- .../mapper/ActivityTeamInfoMapper.java | 5 +- .../mapper/ActivityTeamOpenInfoMapper.java | 9 ++ .../ActivityTeamProductSkuInfoMapper.java | 9 ++ .../service/ActivityTeamInfoService.java | 17 ++-- .../service/ActivityTeamOpenInfoService.java | 34 +++++++ .../ActivityTeamProductSkuInfoService.java | 40 +++++++++ .../impl/ActivityTeamInfoServiceImpl.java | 80 +++++++++++++---- .../impl/ActivityTeamOpenInfoServiceImpl.java | 23 +++++ ...ActivityTeamProductSkuInfoServiceImpl.java | 54 +++++++++++ .../src/main/resources/bootstrap.yml | 5 ++ .../mapper/system/ActivityTeamInfoMapper.xml | 27 +++++- .../ActivityTeamProductSkuInfoMapper.xml | 5 ++ .../service/impl/CartInfoServiceImpl.java | 2 +- 33 files changed, 988 insertions(+), 135 deletions(-) create mode 100644 muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/enums/market/team/TeamOpenTypeEnum.java create mode 100644 muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/model/QueryModel.java create mode 100644 muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/config/mybatisplus/MybatisPlusConfig.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamOpenInfo.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoAddModel.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListModel.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListQueryModel.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductDisCountPriceModel.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductStockModel.java create mode 100644 muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/resp/TeamInfoListResp.java create mode 100644 muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamOpenInfoMapper.java create mode 100644 muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamProductSkuInfoMapper.java create mode 100644 muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamOpenInfoService.java create mode 100644 muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamProductSkuInfoService.java create mode 100644 muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamOpenInfoServiceImpl.java create mode 100644 muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamProductSkuInfoServiceImpl.java create mode 100644 muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamProductSkuInfoMapper.xml diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/Cache.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/Cache.java index 9d96206..e5eac80 100644 --- a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/Cache.java +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/Cache.java @@ -11,10 +11,12 @@ public interface Cache extends DecorationKey { /** * 通过Key获取value值 - * @param key 键 + * + * @param key 键 + * @param productSku * @return 值 */ - public V get(K key); + public V get(K key, String productSku); /** * 缓存添加/修改 diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/CacheAbs.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/CacheAbs.java index d2bf765..0b873a7 100644 --- a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/CacheAbs.java +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/CacheAbs.java @@ -28,11 +28,13 @@ public abstract class CacheAbs implements Cache { /** * 通过Key获取value值 - * @param key 键 + * + * @param key 键 + * @param productSku * @return 值 */ @Override - public V get (K key) { + public V get (K key, String productSku) { V value = redisService.getCacheObject(encode(key)); if (value == null){ value = getData(key); diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/enums/market/team/TeamOpenTypeEnum.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/enums/market/team/TeamOpenTypeEnum.java new file mode 100644 index 0000000..ae83a3b --- /dev/null +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/enums/market/team/TeamOpenTypeEnum.java @@ -0,0 +1,26 @@ +package com.muyu.common.core.enums.market.team; + +/** + * 参团类型枚举类 + */ +public enum TeamOpenTypeEnum { + //开团 + OPEN_TEAM("open_team", "开团"), + //拼团 + IN_TEAM("in_team", "参团团"); + private final String code; + private final String label; + + TeamOpenTypeEnum(String code, String label) { + this.code = code; + this.label = label; + } + + public String code() { + return code; + } + + public String label() { + return label; + } +} diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/model/QueryModel.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/model/QueryModel.java new file mode 100644 index 0000000..f174dd3 --- /dev/null +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/model/QueryModel.java @@ -0,0 +1,63 @@ +package com.muyu.common.core.web.model; + +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.muyu.common.core.web.page.PageDomain; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Arrays; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class QueryModel { + + /** + * 当前记录起始索引 + */ + private Integer pageNum; + + /** + * 每页显示记录数 + */ + private Integer pageSize; + + /** + * 排序列 + */ + private String orderByColumn; + + /** + * 排序的方向desc或者asc + */ + private boolean isAsc = true; + + /** + * 构建查询分页对象 + * @param pageDomain 分页查询 + * @return 模型分页对象 + */ + public T domainBuild(PageDomain pageDomain) { + this.pageNum = pageDomain.getPageNum(); + this.pageSize = pageDomain.getPageSize(); + this.orderByColumn = pageDomain.getOrderByColumn(); + this.isAsc = "asc".equals(pageDomain.getIsAsc())?true:false; + return (T) this; + } + + /** + * 构建查询分页对象 + * @return + */ + public Page buildPage(){ + Page page = Page.of(this.getPageNum(), this.getPageSize()); + page.setOrders(Arrays.asList(this.isAsc() + ?OrderItem.asc(this.getOrderByColumn()) + : OrderItem.desc(this.getOrderByColumn()))); + return page; + } +} diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java index b9c5e45..f459bdd 100644 --- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/web/page/PageDomain.java @@ -1,12 +1,19 @@ package com.muyu.common.core.web.page; import com.muyu.common.core.utils.StringUtils; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; /** * 分页数据 * * @author muyu */ +@Data +@AllArgsConstructor +@NoArgsConstructor + public class PageDomain { /** * 当前记录起始索引 @@ -40,29 +47,6 @@ public class PageDomain { return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; } - public Integer getPageNum () { - return pageNum; - } - - public void setPageNum (Integer pageNum) { - this.pageNum = pageNum; - } - - public Integer getPageSize () { - return pageSize; - } - - public void setPageSize (Integer pageSize) { - this.pageSize = pageSize; - } - - public String getOrderByColumn () { - return orderByColumn; - } - - public void setOrderByColumn (String orderByColumn) { - this.orderByColumn = orderByColumn; - } public String getIsAsc () { return isAsc; @@ -87,7 +71,4 @@ public class PageDomain { return reasonable; } - public void setReasonable (Boolean reasonable) { - this.reasonable = reasonable; - } } diff --git a/muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/config/mybatisplus/MybatisPlusConfig.java b/muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/config/mybatisplus/MybatisPlusConfig.java new file mode 100644 index 0000000..a3f2e7e --- /dev/null +++ b/muyu-common/muyu-common-security/src/main/java/com/muyu/common/security/config/mybatisplus/MybatisPlusConfig.java @@ -0,0 +1,22 @@ +package com.muyu.common.security.config.mybatisplus; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MybatisPlusConfig { + + /** + * 添加分页插件 + */ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加 + // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType + return interceptor; + } +} \ No newline at end of file diff --git a/muyu-modules/muyu-marketing/marketing-common/pom.xml b/muyu-modules/muyu-marketing/marketing-common/pom.xml index 8f79286..7b1e721 100644 --- a/muyu-modules/muyu-marketing/marketing-common/pom.xml +++ b/muyu-modules/muyu-marketing/marketing-common/pom.xml @@ -35,6 +35,21 @@ com.muyu muyu-common-core + + com.baomidou + mybatis-plus-boot-starter + 3.4.1 + + + com.baomidou + mybatis-plus-generator + 3.4.1 + + + com.baomidou + mybatis-plus-annotation + 3.4.1 + \ No newline at end of file diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamInfo.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamInfo.java index 7c60e52..339a322 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamInfo.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamInfo.java @@ -14,6 +14,7 @@ import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import org.apache.xmlbeans.impl.xb.xsdschema.AttributeGroup; +import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; import java.util.List; @@ -27,44 +28,63 @@ import java.util.function.Function; @NoArgsConstructor @AllArgsConstructor @TableName("activity_team_info") +@EqualsAndHashCode(callSuper = true) @ApiModel(value = "activity_team_info", description = "商品拼团信息") public class ActivityTeamInfo extends BaseEntity { - private static final long serialVersionUID = 1L; - private Long id; - private String name; - private BigInteger productId; - private String productName; - private String productImage; - private String introduction; - private String unit; - private String imageList; - private String endTime; - private Integer sort; - private String content; - private String status; - private String strategyType; - private BigInteger strategyId; - private String remark; - private String createBy; - private Date createTime; - private String updateBy; - private Date updateTime; - private Integer pageNum=1; - private Integer pageSize=3; + /** + * 主键 + */ + private Long id; + /** + * 拼团名称 + */ + private String name; + /** + * 商品ID + */ + private BigInteger productId; + + /** + * 商品活动图 + */ + private String productImage; + /** + * 活动简介 + */ + private String introduction; + /** + * 单位 + */ + private String unit; + /** + * 轮播图 + */ + private String imageList; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 活动排序 + */ + private Integer sort; + /** + * 活动详情 + */ + private String content; + /** + * 活动状态 + */ + private String status; + /** + * 策略类型 + */ + private String strategyType; + /** + * 策略ID + */ + private BigInteger strategyId; - public static ActivityTeamInfo queryBuild(ActivityTeamInfoReq activityTeamInfoReq) { - return ActivityTeamInfo.builder() - .name(activityTeamInfoReq.getName()) - .status(activityTeamInfoReq.getStatus()) - .build(); - } - public static ActivityTeamInfo groupFunBuild (ActivityTeamInfo activityTeamInfo, Function> function) { - return ActivityTeamInfo.builder() - .id(activityTeamInfo.getId()) - .name(activityTeamInfo.getName()) - .status(activityTeamInfo.status) - .build(); - } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamOpenInfo.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamOpenInfo.java new file mode 100644 index 0000000..d20f2a7 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamOpenInfo.java @@ -0,0 +1,76 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * 商品拼团规格信息 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("activity_team_open_info") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "activity_team_open_info", description = "团购活动执行表") +public class ActivityTeamOpenInfo extends BaseEntity { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 团购活动ID + */ + private Long teamId; + /** + * 团购类型 + */ + private String teamType; + /** + * 团购策略 + */ + private Long teamStrategyId; + /** + * 参团类型 + */ + private String executiveType; + /** + * 结束团购时间 + */ + private Date endTime; + /** + * 商品ID + */ + private Long productId; + /** + * 商品名称 + */ + private String productName; + /** + * 商品规格 + */ + private String productSku; + /** + * 开团标识 + */ + private String key; + /** + * 订单ID + */ + private Long orderId; + /** + * 开团状态 + */ + private String status; +} diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java new file mode 100644 index 0000000..84a1159 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/ActivityTeamProductSkuInfo.java @@ -0,0 +1,57 @@ +package com.muyu.marketing.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * 商品拼团规格信息 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("activity_team_product_sku_info") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "activity_team_product_sku_info", description = "商品拼团规格信息表") +public class ActivityTeamProductSkuInfo extends BaseEntity { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 活动ID + */ + private Long teamId; + /** + * 商品ID + */ + private Long productId; + /** + * 商品SKU + */ + private String productSku; + /** + * 拼团库存 + */ + private Long teamStock; + + /** + * 剩余库存 + */ + private Long remainStock; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; +} diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoAddModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoAddModel.java new file mode 100644 index 0000000..513b817 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoAddModel.java @@ -0,0 +1,81 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.marketing.domain.ActivityTeamInfo; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +//@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ActivityTeamInfoAddModel extends BaseEntity { + /** + * 拼团名称 + */ + private String name; + /** + * 商品图片 + */ + private String productImage; + /** + * 轮播图片 + */ + private String imageList; + /** + * 拼团库存 + */ + private Long teamStock; + /** + * 商品价格 + */ + private BigDecimal productPrice; + + /** + * 团购优惠价格 + */ + private BigDecimal teamPrice; + /** + * 拼团人数 + */ + private Long attendTeamNumber; + /** + * 参团人数 + */ + private Long addTeamNumber; + /** + * 开团人数 + */ + private Long openTeamNumber; + /** + * 拼团剩余库存 + */ + private Long remainStock; + /** + * 活动状态 + */ + private String status; + /** + * 结束时间 + */ + private Date endTime; + +// public ActivityTeamInfoAddModel AddBuild(){ +// return ActivityTeamInfoAddModel.builder() +// .name(this.name) +// .productImage(this.getProductImage()) +// .imageList(this.getImageList()) +// .teamStock(this.getTeamStock()) +// .productPrice(this.getProductPrice()) +// .teamPrice(this.getTeamPrice()) +// .attendTeamNumber(this.getAttendTeamNumber()) +// .addTeamNumber(this.getAddTeamNumber()) +// .openTeamNumber(this.getOpenTeamNumber()) +// .remainStock(this.getRemainStock()) +// .build(); +// } +} diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListModel.java new file mode 100644 index 0000000..8b88caa --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListModel.java @@ -0,0 +1,76 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.marketing.domain.ActivityTeamInfo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 团购活动列表查询结果模型 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ActivityTeamInfoListModel { + /** + * 主键 + */ + private Long id; + /** + * 拼团名称 + */ + private String name; + /** + * 参团人数 + */ + private Long addTeamNumber; + + /** + * 开团人数 + */ + private Long openTeamNumber; + /** + * 拼团人数 + */ + private Long attendTeamNumber; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 图片 + */ + private String productImage; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 商品价格 + */ + private BigDecimal productPrice; + /** + * 团购库存 + */ + private Long teamStock; + /** + * 总库存 + */ + private Long totalStock; + /** + * 剩余库存 + */ + private Long RemainStock; + /** + * 活动状态 + */ + private String Status; + + +} diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListQueryModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListQueryModel.java new file mode 100644 index 0000000..bd6eaef --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/ActivityTeamInfoListQueryModel.java @@ -0,0 +1,25 @@ +package com.muyu.marketing.domain.model; + +import com.muyu.common.core.web.model.QueryModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +public class ActivityTeamInfoListQueryModel extends QueryModel { + /** + * 搜索关键词 + */ + private String keyWord; + + /** + * 状态 + */ + private String states; +} diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductDisCountPriceModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductDisCountPriceModel.java new file mode 100644 index 0000000..a5ea5f9 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductDisCountPriceModel.java @@ -0,0 +1,47 @@ +package com.muyu.marketing.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; + +import java.math.BigDecimal; + +/** + * 团购商品优惠券模型 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TeamProductDisCountPriceModel { + /** + * 商品价格 + */ + private BigDecimal productPrice; + /** + * 团购优惠价格 + */ + private BigDecimal teamPrice; + /** + * 优惠力度 + */ + private BigDecimal discount; + + /** + * 通过商品价格和团购价格计算出优惠力度 + * @param productPrice 商品价格 + * @param teamPrice 团购价格 + * @return 优惠力度 + */ + public static TeamProductDisCountPriceModel of(BigDecimal productPrice, BigDecimal teamPrice) { + return TeamProductDisCountPriceModel.builder() + .productPrice(productPrice) + .teamPrice(teamPrice) + .discount( + BigDecimal.valueOf(productPrice.subtract(teamPrice).divide(productPrice, 2, BigDecimal.ROUND_HALF_UP).doubleValue()) + ) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductStockModel.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductStockModel.java new file mode 100644 index 0000000..b4996f3 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/model/TeamProductStockModel.java @@ -0,0 +1,27 @@ +package com.muyu.marketing.domain.model; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 团购商品库存模型 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TeamProductStockModel { + + /** + * 拼团库存 + */ + private Long teamStock; + /** + * 拼团剩余库存 + */ + private Long remainStock; + +} diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoReq.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoReq.java index c2a2d9e..aeded30 100644 --- a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoReq.java +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/req/ActivityTeamInfoReq.java @@ -1,26 +1,40 @@ package com.muyu.marketing.domain.req; +import com.muyu.common.core.web.page.PageDomain; import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class ActivityTeamInfoReq extends ActivityTeamInfo { - private static final long serialVersionUID = 1L; +@Builder +public class ActivityTeamInfoReq extends PageDomain { /** - * 组名称 + * 搜索关键词 */ - @ApiModelProperty(name = "组名称", value = "组名称") - private String name; + private String keyWord; /** * 状态 */ - @ApiModelProperty(name = "状态", value = "状态") private String states; + + + /** + * 通过当前对象重构查询模型 + * @return 业务查询模型 + */ + public ActivityTeamInfoListQueryModel buildQueryModel(){ + return ActivityTeamInfoListQueryModel.builder() + .keyWord(this.keyWord) + .states(this.states) + .build() + .domainBuild(this); + } } diff --git a/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/resp/TeamInfoListResp.java b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/resp/TeamInfoListResp.java new file mode 100644 index 0000000..6c7ad02 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-common/src/main/java/com/muyu/marketing/domain/resp/TeamInfoListResp.java @@ -0,0 +1,75 @@ +package com.muyu.marketing.domain.resp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.Date; + +/** + * 商品拼团列表信息响应 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TeamInfoListResp { + /** + * 主键 + */ + private Long id; + /** + * 拼团名称 + */ + private String name; + /** + * 参团人数 + */ + private Long addTeamNumber; + + /** + * 开团人数 + */ + private Long openTeamNumber; + /** + * 拼团人数 + */ + private Long attendTeamNumber; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 图片 + */ + private String productImage; + /** + * 拼团价格 + */ + private BigDecimal teamPrice; + + /** + * 商品价格 + */ + private BigDecimal productPrice; + /** + * 总库存 + */ + private Long totalStock; + /** + * 团购库存 + */ + private Long teamStock; + /** + * 剩余库存 + */ + private Long RemainStock; + /** + * 活动状态 + */ + private String Status; + +} diff --git a/muyu-modules/muyu-marketing/marketing-serve/pom.xml b/muyu-modules/muyu-marketing/marketing-serve/pom.xml index e05cbb4..2dc611e 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/pom.xml +++ b/muyu-modules/muyu-marketing/marketing-serve/pom.xml @@ -79,20 +79,17 @@ muyu-common-swagger - - com.dtflys.forest - forest-spring-boot-starter - - - com.muyu - muyu-common-core - + com.muyu marketing-common 3.6.3 compile + + com.muyu + muyu-product-cache + diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/MuYuMarketingApplication.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/MuYuMarketingApplication.java index 8f5f255..47481ff 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/MuYuMarketingApplication.java +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/MuYuMarketingApplication.java @@ -3,11 +3,12 @@ package com.muyu.marketing; import com.muyu.common.security.annotation.EnableCustomConfig; import com.muyu.common.security.annotation.EnableMyFeignClients; import com.muyu.common.swagger.annotation.EnableCustomSwagger2; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** - * 系统模块 + * 团购模块 * * @author muyu */ @@ -15,6 +16,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableCustomSwagger2 @EnableMyFeignClients @SpringBootApplication +//@MapperScan("com.muyu.marketing.mapper") public class MuYuMarketingApplication { public static void main (String[] args) { SpringApplication.run(MuYuMarketingApplication.class, args); diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/controller/ActivityTeamInfoController.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/controller/ActivityTeamInfoController.java index 9b84b2c..b412578 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/controller/ActivityTeamInfoController.java +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/controller/ActivityTeamInfoController.java @@ -1,44 +1,47 @@ package com.muyu.marketing.controller; import com.muyu.common.core.domain.Result; -import com.muyu.common.core.utils.poi.ExcelUtil; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.req.ActivityTeamInfoReq; +import com.muyu.marketing.domain.resp.TeamInfoListResp; import com.muyu.marketing.service.ActivityTeamInfoService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletResponse; import java.util.List; -import static com.muyu.common.core.utils.PageUtils.startPage; - -/** - * 商品拼团信息 controller - */ - -@Api(tags = "商品拼团信息") @RestController -@RequestMapping("/activityTeamInfo") +@RequestMapping("/activity") public class ActivityTeamInfoController { @Autowired private ActivityTeamInfoService activityTeamInfoService; - - /** - * 商品拼团信息列表 - */ - @ApiModelProperty("获取商品拼团信息列表") - @GetMapping("/list") - public Result> list(@RequestBody ActivityTeamInfoReq activityTeamInfoReq) { - return activityTeamInfoService.list(activityTeamInfoReq); + @PostMapping("list") + public Result> list(@RequestBody ActivityTeamInfoReq activityTeamInfoReq){ + activityTeamInfoService.query(activityTeamInfoReq.buildQueryModel()); + return Result.success(); } + /** + * 新增属性组 + */ + @Log(title = "属性组", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation("新增拼团") + public Result add(@RequestBody ActivityTeamInfo activityTeamInfo) { +// return toAjax( +// activityTeamInfoService.add(ActivityTeamInfoAddModel.AddBuild(activityTeamInfo)) +// ); + return null; + } } diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamInfoMapper.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamInfoMapper.java index ca6cc75..857c3cc 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamInfoMapper.java +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamInfoMapper.java @@ -1,10 +1,9 @@ package com.muyu.marketing.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.muyu.marketing.domain.ActivityTeamInfo; import org.apache.ibatis.annotations.Mapper; -import java.util.List; @Mapper -public interface ActivityTeamInfoMapper { - List list(); +public interface ActivityTeamInfoMapper extends BaseMapper { } diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamOpenInfoMapper.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamOpenInfoMapper.java new file mode 100644 index 0000000..2c60deb --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamOpenInfoMapper.java @@ -0,0 +1,9 @@ +package com.muyu.marketing.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.ActivityTeamOpenInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ActivityTeamOpenInfoMapper extends BaseMapper { +} diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamProductSkuInfoMapper.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamProductSkuInfoMapper.java new file mode 100644 index 0000000..187ba94 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/mapper/ActivityTeamProductSkuInfoMapper.java @@ -0,0 +1,9 @@ +package com.muyu.marketing.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ActivityTeamProductSkuInfoMapper extends BaseMapper { +} diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamInfoService.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamInfoService.java index 1895f64..8a070c8 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamInfoService.java +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamInfoService.java @@ -1,19 +1,18 @@ package com.muyu.marketing.service; -import com.muyu.common.core.domain.Result; +import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import java.util.List; -public interface ActivityTeamInfoService { +public interface ActivityTeamInfoService extends IService { /** - * 分页查询 - * @param activityTeamInfo - * @return + * 通过查询模型团购活动表 + * @param activityTeamInfoListQueryModel 团购查询模型 + * @return 团购活动列表 */ - Result list(ActivityTeamInfo activityTeamInfo); - - - + public TableDataInfo query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel); } diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamOpenInfoService.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamOpenInfoService.java new file mode 100644 index 0000000..8d81510 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamOpenInfoService.java @@ -0,0 +1,34 @@ +package com.muyu.marketing.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.core.enums.market.team.TeamOpenTypeEnum; +import com.muyu.marketing.domain.ActivityTeamOpenInfo; + +public interface ActivityTeamOpenInfoService extends IService { + /** + * 根据活动id和类型获取团队人数 + * @param teamId 活动id + * @param teamOpenType 开团类型 + * @return 开团数量 + */ + public Long getTeamOpenNumberByTeamIdAndType(Long teamId, TeamOpenTypeEnum teamOpenType); + + /** + * 根据活动id获取开团人数 + * @param teamId + * @return + */ + public default Long getTeamOpenNumberByTeamId(Long teamId) { + return getTeamOpenNumberByTeamIdAndType(teamId, TeamOpenTypeEnum.OPEN_TEAM); + } + + /** + * 根据活动id获取参团人数 + * @param teamId + * @return + */ + public default Long getTeamInNumberByTeamId(Long teamId) { + return getTeamOpenNumberByTeamIdAndType(teamId, TeamOpenTypeEnum.IN_TEAM); + } + +} diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamProductSkuInfoService.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamProductSkuInfoService.java new file mode 100644 index 0000000..af50ec2 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/ActivityTeamProductSkuInfoService.java @@ -0,0 +1,40 @@ +package com.muyu.marketing.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; +import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; +import com.muyu.marketing.domain.model.TeamProductDisCountPriceModel; +import com.muyu.marketing.domain.model.TeamProductStockModel; + +import java.util.List; + +public interface ActivityTeamProductSkuInfoService extends IService { + + public default List getActivityTeamProductSkuInfoByTeamId(Long teamId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId, teamId); + return this.list(lambdaQueryWrapper); + } + + /** + * 根据拼团id获取拼团价格 + * + * @param teamId + * @return + */ + public TeamProductDisCountPriceModel getDiscountPrice(Long teamId); + + /** + * 通过活动id获取剩余库存 + * + * @param teamId + * @return 库存 + */ + public TeamProductStockModel getStock(Long teamId); + + +} diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamInfoServiceImpl.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamInfoServiceImpl.java index c53898e..6d2c1c8 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamInfoServiceImpl.java +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamInfoServiceImpl.java @@ -1,36 +1,82 @@ package com.muyu.marketing.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.muyu.common.core.domain.Result; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.marketing.domain.ActivityTeamInfo; +import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; +import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; +import com.muyu.marketing.domain.model.TeamProductDisCountPriceModel; +import com.muyu.marketing.domain.model.TeamProductStockModel; import com.muyu.marketing.mapper.ActivityTeamInfoMapper; import com.muyu.marketing.service.ActivityTeamInfoService; -import lombok.extern.slf4j.Slf4j; +import com.muyu.marketing.service.ActivityTeamOpenInfoService; +import com.muyu.marketing.service.ActivityTeamProductSkuInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Collections; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; import java.util.List; +import java.util.function.Consumer; -@Slf4j @Service -public class ActivityTeamInfoServiceImpl implements ActivityTeamInfoService { +public class ActivityTeamInfoServiceImpl extends ServiceImpl implements ActivityTeamInfoService { @Autowired - private ActivityTeamInfoMapper activityTeamInfoMapper; + private ActivityTeamOpenInfoService activityTeamOpenInfoService; + + @Autowired + private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService; + @Override - public Result list(ActivityTeamInfo activityTeamInfo) { - PageHelper.startPage(activityTeamInfo.getPageNum(),activityTeamInfo.getPageSize()); - List list=activityTeamInfoMapper.list(); - PageInfo pageInfo = new PageInfo(list); - return Result.success(pageInfo); + public TableDataInfo query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like(StringUtils.isNotEmpty(activityTeamInfoListQueryModel.getKeyWord()), ActivityTeamInfo::getName, activityTeamInfoListQueryModel.getKeyWord()); + queryWrapper.like(StringUtils.isNotEmpty(activityTeamInfoListQueryModel.getStates()), ActivityTeamInfo::getStatus, activityTeamInfoListQueryModel.getStates()); + + + Page activityTeamInfoPage = this.page( + activityTeamInfoListQueryModel.buildPage() + , queryWrapper); + + TableDataInfo tableDataInfo = new TableDataInfo(); + List activityTeamInfoList = activityTeamInfoPage.getRecords(); + List activityTeamInfoListModels = activityTeamInfoList.stream() + .map(activityTeamInfo -> { + Long addTeamNumber = activityTeamOpenInfoService.getTeamOpenNumberByTeamId(activityTeamInfo.getId()); + + Long openTeamNumber = activityTeamOpenInfoService.getTeamInNumberByTeamId(activityTeamInfo.getId()); + + TeamProductDisCountPriceModel discountPrice = activityTeamProductSkuInfoService.getDiscountPrice(activityTeamInfo.getId()); + + TeamProductStockModel productStockModel = activityTeamProductSkuInfoService.getStock(activityTeamInfo.getId()); + + return ActivityTeamInfoListModel.builder() + .id(activityTeamInfo.getId()) + .name(activityTeamInfo.getName()) + .addTeamNumber(addTeamNumber) + .openTeamNumber(openTeamNumber) + .attendTeamNumber(openTeamNumber+addTeamNumber) + .endTime(activityTeamInfo.getEndTime()) + .productImage(activityTeamInfo.getProductImage()) + .teamPrice(discountPrice.getTeamPrice()) + .productPrice(discountPrice.getProductPrice()) + .teamStock(productStockModel.getTeamStock()) + .RemainStock(productStockModel.getRemainStock()) + .Status(activityTeamInfo.getStatus()) + .build(); + }).toList(); + tableDataInfo.setTotal(activityTeamInfoPage.getTotal()); + tableDataInfo.setRows(activityTeamInfoListModels); + return tableDataInfo; } - - - - } + diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamOpenInfoServiceImpl.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamOpenInfoServiceImpl.java new file mode 100644 index 0000000..e17adfc --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamOpenInfoServiceImpl.java @@ -0,0 +1,23 @@ +package com.muyu.marketing.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.enums.market.team.TeamOpenTypeEnum; +import com.muyu.marketing.domain.ActivityTeamOpenInfo; +import com.muyu.marketing.mapper.ActivityTeamOpenInfoMapper; +import com.muyu.marketing.service.ActivityTeamOpenInfoService; +import org.springframework.stereotype.Service; + +@Service +public class ActivityTeamOpenInfoServiceImpl extends ServiceImpl implements ActivityTeamOpenInfoService { + + @Override + public Long getTeamOpenNumberByTeamIdAndType(Long teamId, TeamOpenTypeEnum teamOpenType) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ActivityTeamOpenInfo::getTeamId, teamId); + queryWrapper.eq(ActivityTeamOpenInfo::getTeamType, teamOpenType.code()); + return (long) this.count(queryWrapper); + } + + +} diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamProductSkuInfoServiceImpl.java b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamProductSkuInfoServiceImpl.java new file mode 100644 index 0000000..07fac16 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/java/com/muyu/marketing/service/impl/ActivityTeamProductSkuInfoServiceImpl.java @@ -0,0 +1,54 @@ +package com.muyu.marketing.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; + +import com.muyu.marketing.domain.model.TeamProductDisCountPriceModel; +import com.muyu.marketing.domain.model.TeamProductStockModel; +import com.muyu.marketing.mapper.ActivityTeamProductSkuInfoMapper; +import com.muyu.marketing.service.ActivityTeamProductSkuInfoService; +import com.muyu.product.cache.ProjectSkuCache; +import com.muyu.product.domain.ProjectSkuInfo; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.rmi.ServerException; +import java.util.Comparator; +import java.util.List; +import java.util.Optional; + +@Service +public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl implements ActivityTeamProductSkuInfoService { + @Autowired + private ProjectSkuCache projectSkuCache; + + @SneakyThrows + @Override + public TeamProductDisCountPriceModel getDiscountPrice(Long teamId) { + List activityTeamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); + + Optional disCountPriceModelOptional = activityTeamProductSkuInfoList.stream().map( + activityTeamProductSkuInfo -> { + ProjectSkuInfo projectSkuInfo = projectSkuCache.get(activityTeamProductSkuInfo.getProductId(), activityTeamProductSkuInfo.getProductSku()); + + return TeamProductDisCountPriceModel.of(projectSkuInfo.getPrice(), activityTeamProductSkuInfo.getTeamPrice()); + }).sorted(Comparator.comparing(TeamProductDisCountPriceModel::getDiscount)) + .findFirst(); + if (disCountPriceModelOptional.isEmpty()) { + throw new ServerException("没有找到商品拼团信息"); + } + return disCountPriceModelOptional.get(); + } + + @Override + public TeamProductStockModel getStock(Long teamId) { + List activityTeamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); + return TeamProductStockModel.builder() + .teamStock(activityTeamProductSkuInfoList.stream().mapToLong(ActivityTeamProductSkuInfo::getTeamStock).sum()) + .remainStock(activityTeamProductSkuInfoList.stream().mapToLong(ActivityTeamProductSkuInfo::getRemainStock).sum()) + .build(); + } +} diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/bootstrap.yml b/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/bootstrap.yml index 7c403f7..a4143d3 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/bootstrap.yml @@ -28,3 +28,8 @@ spring: logging: level: com.muyu.system.mapper: DEBUG +mybatis-plus: + mapper-locations: + - classpath*:mapper/*Mapper.xml + # 搜索指定包别名 + typeAliasesPackage: com.muyu.marketing.domain diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamInfoMapper.xml b/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamInfoMapper.xml index f8e5bed..2284e88 100644 --- a/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamInfoMapper.xml +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamInfoMapper.xml @@ -3,8 +3,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - + + + + + + + + + + + + + + + + + + + + + + select id, name, product_id, product_image, introduction, unit, image_list, end_time, sort, content, status, strategy_type, strategy_id, create_by, create_time, update_by, update_time, remark from as_attribute_group + \ No newline at end of file diff --git a/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamProductSkuInfoMapper.xml b/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamProductSkuInfoMapper.xml new file mode 100644 index 0000000..3242b50 --- /dev/null +++ b/muyu-modules/muyu-marketing/marketing-serve/src/main/resources/mapper/system/ActivityTeamProductSkuInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java index 1c672e3..23cef51 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java @@ -158,7 +158,7 @@ public class CartInfoServiceImpl extends ServiceImpl ProjectSkuInfo projectSkuInfo = projectSkuCache.get(cartInfo.getProjectId(), cartInfo.getProjectSku()); ProjectInfo projectInfo - = projectInfoCache.get(cartInfo.getProjectId()); + = projectInfoCache.get(cartInfo.getProjectId(), cartInfo.getProjectSku()); Long stock = projectSkuStockCache.get( SkuStockKey.builder() .projectId(cartInfo.getProjectId())