Compare commits

...

No commits in common. "1127/cloud-server" and "main" have entirely different histories.

168 changed files with 2011 additions and 4231 deletions

View File

@ -0,0 +1,29 @@
{
"拼团活动Id": "Long",
"商品ID": "Long",
"商品图片": "String",
"活动名称": "String",
"活动简介": "String",
"商品单位": "String",
"商品的轮播图": [
"String", "String"
],
"活动时间": "date",
"策略类型": "String",
"策略ID": "Long",
"商品规格List": [{
"规格SKUid": "Long",
"拼团价格": "BigDecimal",
"拼团库存": "Long"
}],
"商品规格List": [{
"规格SKUid": "Long"
}],
"商品规格List": [{
"拼团价格": "BigDecimal",
"拼团库存": "Long"
}],
"排序": "Integer",
"详情": "String",
"活动状态":"Long"
}

View File

@ -0,0 +1,24 @@
$.{
"活动ID": "Long",
"商品ID": "Long", //activity_team_info.product_id
"商品图片": "String",
"活动名称": "String",
"活动简介": "String",
"商品单位": "String",
"商品的轮播图": [
"String", "String"
],
"活动时间": "date",
"策略类型": "String",
"策略ID": "Long",
"商品规格List": [ // activity_team_product_sku_info
{
"活动商品规格ID": "Long",
"规格SKU": "String", // activity_team_product_sku_info.product_sku
"拼团价格": "BigDecimal",
"拼团库存": "Long"
}
],
"排序": "Integer",
"详情": "String"
}

View File

@ -0,0 +1,24 @@
{
"拼团ID": "Long",
"商品ID": "Long",
"商品图片": "String",
"活动名称": "String",
"活动简介": "String",
"商品单位": "String",
"商品的轮播图": [
"String", "String"
],
"活动时间": "date",
"策略类型": "String",
"策略ID": "Long",
"商品规格List": [
{
"规格Id": "Long",
"规格SKU": "String",
"拼团价格": "BigDecimal",
"拼团库存": "Long"
}
],
"排序": "Integer",
"详情": "String"
}

View File

@ -0,0 +1,32 @@
{
"活动ID": "Long",
"商品ID": "Long",
"活动名称": "String",
"商品名称": "String",
"商品图片": "String",
"活动简介": "String",
"商品单位": "String",
"商品的轮播图": [
"String", "String"
],
"活动时间": "date",
"策略类型": "String",
"商品规格": {
"修改商品规格List": [ // 修改
{
"团购规格ID": "Long",
"拼团价格": "BigDecimal",
"拼团库存": "Long"
}
],
"删除商品规格IdList" : ["Long", "Long"],
"添加商品规格List": [
"商品SKU": "String",
"商品价格": "BigDecimal",
"拼团价格": "BigDecimal",
"拼团库存": "Long"
]
},
"详情": "String"
}

View File

@ -0,0 +1,47 @@
$.{
"商品ID": "Long", //activity_team_info.product_id
"商品图片": "String",
"活动名称": "String",
"活动简介": "String",
"商品单位": "String",
"商品的轮播图": [
"String", "String"
],
"活动时间": "date",
"策略类型": "String",
"策略ID": "Long",
"商品规格List": [ // activity_team_product_sku_info
{
"规格SKU": "String", // activity_team_product_sku_info.product_sku
"拼团价格": "BigDecimal",
"拼团库存": "Long"
}
],
"排序": "Integer",
"详情": "String"
}
activity_team_info -> ActivityTeamInfo()
activity_team_info.id() -> -> -> ActivityTeamInfo.id
activity_team_info.name() <- ActivityTeamInfo.name <- $.
activity_team_info.product_id(ID) <- ActivityTeamInfo.productId <- $.ID
activity_team_info.product_image() <- ActivityTeamInfo.productImage <- $.
activity_team_info.introduction() <- ActivityTeamInfo.introduction <- $.
activity_team_info.unit() <- ActivityTeamInfo.unit <- $.
activity_team_info.image_list() <- ActivityTeamInfo.imageList <- .toString(",") <- $.
activity_team_info.end_time() <- ActivityTeamInfo.endTime <- $.
activity_team_info.sort() <- ActivityTeamInfo.sort <- $.
activity_team_info.content() <- ActivityTeamInfo.content <- $.
activity_team_info.status() <- _sys_normal_disable.1()
activity_team_info.strategy_type() <- ActivityTeamInfo.strategy_type <- $.
activity_team_info.strategy_id(ID) <- ActivityTeamInfo.strategy_id <- $.ID
for(@ in List)
activity_team_product_sku_info -> ActivityTeamProductSkuInfo()
activity_team_product_sku_info.id() -> -> -> ActivityTeamProductSkuInfo.id
activity_team_product_sku_info.team_id(ID) <- ActivityTeamProductSkuInfo.teamId <- ActivityTeamInfo.id
activity_team_product_sku_info.product_id(ID) <- ActivityTeamProductSkuInfo.productId < $.ID
activity_team_product_sku_info.product_sku(SKU) <- ActivityTeamProductSkuInfo.productSku <- @.SKU
activity_team_product_sku_info.team_stock() <- ActivityTeamProductSkuInfo.teamStock <- @.
activity_team_product_sku_info.remain_stock() <- ActivityTeamProductSkuInfo.remainStock <- @.
activity_team_product_sku_info.team_price() <- ActivityTeamProductSkuInfo.teamPrice <- @.

View File

@ -1,22 +0,0 @@
{
"team": {
"商品Id":"Long",
"商品图片":"String",
"拼团活动名称":"String",
"拼团活动简介":"String",
"商品单位":"String",
"商品轮播图":[
"图片路径":"String",
],
"活动时间":"Date",
"策略类型":"String",
"策略ID":"Long",
"规格":[{
规格SKU:"String",
"拼团价格":"BigDecimal",
"拼团库存":"Long"
}],
"排序":"Integer",
"商品详情":"text"
}
}

24
doc/策略.md 100644
View File

@ -0,0 +1,24 @@
# 功能划分
# 普通团
商品列表
商品详情
去参团
开团列表
参团成功
邀请参团
拼团成功 查看订单
拼团失败 重新开团
开团成功
邀请参团
拼团成功 查看订单
拼团失败 重新开团
# 百人团
1.商品详情
2.评价接口
3.拼团人数
4.开团列表
5.收藏接口

View File

@ -1,32 +0,0 @@
package com.muyu.common.core.enums;
/**
* @program: cloud-server
* @description:
* @author: CuiFu Bo
* @create: 2024-11-21 15:12
**/
public enum TeamOpenTypeEnums {
OPEN_TEAM("open_team","开团"),
IN_TEAM("in_team","参团");
private final String code;
private final String label;
public String code() {
return code;
}
public String label() {
return label;
}
TeamOpenTypeEnums(String code, String label) {
this.code = code;
this.label = label;
}
}

View File

@ -0,0 +1,33 @@
package com.muyu.common.core.enums.market.team;
/**
*
*
* @author DongZeLiang
* @date 2024-11-21 11:20
*/
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;
}
}

View File

@ -1,5 +1,6 @@
package com.muyu.common.core.web.model; package com.muyu.common.core.web.model;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.muyu.common.core.web.page.PageDomain; import com.muyu.common.core.web.page.PageDomain;
@ -11,17 +12,17 @@ import lombok.experimental.SuperBuilder;
import java.util.List; import java.util.List;
/** /**
* @program: cloud-server *
* @description: *
* @author: CuiFu Bo * @author DongZeLiang
* @create: 2024-11-20 20:27 * @date 2024-11-20 14:18
**/ */
@Data @Data
@SuperBuilder @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
public class QueryModel<T> { public class QueryModel<T> {
/** /**
* *
*/ */
@ -40,18 +41,18 @@ public class QueryModel<T> {
/** /**
* descasc * descasc
*/ */
private Boolean isAsc = true; private boolean isAsc = true;
/** /**
* *
* @param pageDomain * @param pageDomain
* @return * @return
*/ */
public T domainBuild(PageDomain pageDomain){ public T domainBuild(PageDomain pageDomain) {
this.pageNum = pageDomain.getPageNum(); this.pageNum = pageDomain.getPageNum();
this.pageSize = pageDomain.getPageSize(); this.pageSize = pageDomain.getPageSize();
this.orderByColumn = pageDomain.getOrderByColumn(); this.orderByColumn = pageDomain.getOrderByColumn();
this.isAsc = "ase".equals(pageDomain.getIsAsc()); this.isAsc = "asc".equals(pageDomain.getIsAsc());
return (T) this; return (T) this;
} }
@ -59,12 +60,10 @@ public class QueryModel<T> {
* *
* @return * @return
*/ */
public <I> Page<I> bulidPage(){ public <I> Page<I> buildPage(){
Page<I> page = Page.of(this.getPageNum(), this.getPageSize()); Page<I> page = Page.of(this.getPageNum(), this.getPageSize());
page.setOrders(List.of(this.isAsc page.setOrders(List.of(this.isAsc()
? OrderItem.asc(this.getOrderByColumn()):OrderItem.desc(this.getOrderByColumn()))); ? OrderItem.asc(this.getOrderByColumn()) : OrderItem.desc(this.getOrderByColumn())));
return page; return page;
} }
} }

View File

@ -1,8 +1,9 @@
package com.muyu.common.core.web.page; package com.muyu.common.core.web.page;
import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.model.QueryModel; import lombok.AllArgsConstructor;
import lombok.*; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
/** /**
@ -12,8 +13,8 @@ import lombok.experimental.SuperBuilder;
*/ */
@Data @Data
@SuperBuilder @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
public class PageDomain { public class PageDomain {
/** /**
* *
@ -47,9 +48,6 @@ public class PageDomain {
return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
} }
public String getIsAsc () {
return isAsc;
}
public void setIsAsc (String isAsc) { public void setIsAsc (String isAsc) {
if (StringUtils.isNotEmpty(isAsc)) { if (StringUtils.isNotEmpty(isAsc)) {
@ -70,7 +68,4 @@ public class PageDomain {
return reasonable; return reasonable;
} }
public void setReasonable (Boolean reasonable) {
this.reasonable = reasonable;
}
} }

View File

@ -1,6 +1,9 @@
package com.muyu.common.core.web.page; package com.muyu.common.core.web.page;
import lombok.*; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import java.io.Serializable; import java.io.Serializable;

View File

@ -0,0 +1,33 @@
package com.muyu.common.security.config.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.muyu.common.security.utils.SecurityUtils;
import lombok.extern.log4j.Log4j2;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
*
*/
@Log4j2
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
public MyMetaObjectHandler () {
log.info("mybatis-plus 系统字段填充拦截器 初始化成功");
}
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createBy", SecurityUtils.getUsername(), metaObject);
this.setFieldValByName("createTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateBy", SecurityUtils.getUsername(), metaObject);
this.setFieldValByName("updateTime", new Date(),metaObject);
}
}

View File

@ -3,7 +3,6 @@ package com.muyu.common.security.config.mybatisplus;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -16,7 +15,8 @@ public class MybatisPlusConfig {
@Bean @Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() { public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2)); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
return interceptor; return interceptor;
} }
} }

View File

@ -1,6 +1,5 @@
package com.muyu.gateway.config.properties; package com.muyu.gateway.config.properties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@ -57,4 +56,3 @@ public class CorsConfig
} }
} }

View File

@ -9,17 +9,21 @@
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<artifactId>muyu-marketing-common</artifactId> <artifactId>marketing-common</artifactId>
<properties> <properties>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies> <dependencies>
<!-- 系统公共core -->
<dependency> <dependency>
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>muyu-common-core</artifactId> <artifactId>muyu-common-core</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,25 +1,24 @@
package com.muyu.domain; package com.muyu.marketing.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.domain.model.ActivityTeamInfoAddModel; import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.domain.model.ActivityTeamInfoSaveModel; import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.domain.model.ActivityTeamInfoUpdModel; import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel;
import com.muyu.domain.req.ActivityTeamInfoSaveReq; import com.muyu.marketing.domain.model.ActivityTeamInfoSaveModel;
import lombok.AllArgsConstructor; import com.muyu.marketing.domain.model.ActivityTeamInfoUpdModel;
import lombok.Builder; import lombok.*;
import lombok.Data; import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import java.util.Date; import java.util.Date;
@Data @Data
@Builder @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
public class ActivityTeamInfo { @EqualsAndHashCode(callSuper = true)
@TableName(value = "activity_team_info", autoResultMap = true)
public class ActivityTeamInfo extends BaseEntity {
/** /**
* *
@ -96,21 +95,6 @@ public class ActivityTeamInfo {
.strategyId(activityTeamInfoAddModel.getStrategyId()) .strategyId(activityTeamInfoAddModel.getStrategyId())
.build(); .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) { public static ActivityTeamInfo teamSaveBuild(ActivityTeamInfoSaveModel activityTeamInfoSaveModel) {
return ActivityTeamInfo.builder() return ActivityTeamInfo.builder()

View File

@ -0,0 +1,87 @@
package com.muyu.marketing.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.marketing.domain.model.ActivityTeamOpenInfoAddModel;
import lombok.*;
import lombok.experimental.SuperBuilder;
import java.util.Date;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "activity_team_open_info", autoResultMap = true)
public class ActivityTeamOpenInfo extends BaseEntity {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private long id;
/**
* ID
*/
private long teamId;
/**
*
*/
private String teamType;
/**
*
*/
private String teamStrategyId;
/**
*
*/
private String executiveType;
/**
*
*/
private Date endTime;
/**
* ID
*/
private String productId;
/**
*
*/
private String productName;
/**
*
*/
private String productSku;
/**
*
*/
private String key;
/**
* ID
*/
private String orderId;
/**
*
*/
private String status;
public static ActivityTeamOpenInfo addBuildModel(ActivityTeamOpenInfoAddModel activityTeamOpenInfoAddModel){
return ActivityTeamOpenInfo.builder()
.id(activityTeamOpenInfoAddModel.getId())
.teamId(activityTeamOpenInfoAddModel.getTeamId())
.teamType(activityTeamOpenInfoAddModel.getTeamType())
.teamStrategyId(activityTeamOpenInfoAddModel.getTeamStrategyId())
.executiveType(activityTeamOpenInfoAddModel.getExecutiveType())
.endTime(activityTeamOpenInfoAddModel.getEndTime())
.productId(activityTeamOpenInfoAddModel.getProductId())
.productName(activityTeamOpenInfoAddModel.getProductName())
.productSku(activityTeamOpenInfoAddModel.getProductSku())
.key(activityTeamOpenInfoAddModel.getKey())
.orderId(activityTeamOpenInfoAddModel.getOrderId())
.status(activityTeamOpenInfoAddModel.getStatus())
.build();
}
}

View File

@ -1,22 +1,26 @@
package com.muyu.domain; package com.muyu.marketing.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.domain.model.ActivityTeamProductSkuAddModel; import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.domain.model.ActivityTeamProductSkuReqModel; import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.domain.model.ActivityTeamProductSkuUpdModel; import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel;
import lombok.AllArgsConstructor; import com.muyu.marketing.domain.model.ActivityTeamProductSkuModel;
import lombok.Builder; import com.muyu.marketing.domain.model.ActivityTeamProductSkuReqModel;
import lombok.Data; import com.muyu.marketing.domain.model.ActivityTeamProductSkuUpdModel;
import lombok.NoArgsConstructor; import lombok.*;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal; import java.math.BigDecimal;
@Data @Data
@Builder @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class ActivityTeamProductSkuInfo { @AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "activity_team_product_sku_info", autoResultMap = true)
public class ActivityTeamProductSkuInfo extends BaseEntity {
/** /**
* *
*/ */

View File

@ -1,19 +1,24 @@
package com.muyu.domain; package com.muyu.marketing.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import lombok.AllArgsConstructor; import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Builder; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import com.muyu.common.core.web.domain.BaseEntity;
import lombok.NoArgsConstructor; import lombok.*;
import lombok.experimental.SuperBuilder;
@Data @Data
@Builder @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TeamStrategyExemption { @AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "team_strategy_exemption", autoResultMap = true)
public class TeamStrategyExemption extends BaseEntity {
/** /**
* *
*/ */
@TableId(value = "id", type = IdType.AUTO)
private long id; private long id;
/** /**
* *
@ -47,5 +52,4 @@ public class TeamStrategyExemption {
* *
*/ */
private String status; private String status;
} }

View File

@ -0,0 +1,47 @@
package com.muyu.marketing.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.SuperBuilder;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "team_strategy_exemption_hundred", autoResultMap = true)
public class TeamStrategyHundred extends BaseEntity {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private long id;
/**
*
*/
private long duration;
/**
*
*/
private long maxBuy;
/**
*
*/
private long oneBuy;
/**
*
*/
private long virtualNumber;
/**
*
*/
private String status;
/**
*
*/
private String ruleInfo;
}

View File

@ -0,0 +1,47 @@
package com.muyu.marketing.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.SuperBuilder;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "team_strategy_exemption_ordinary", autoResultMap = true)
public class TeamStrategyOrdinary extends BaseEntity {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private long id;
/**
*
*/
private long duration;
/**
*
*/
private long teamNumber;
/**
*
*/
private long maxBuy;
/**
*
*/
private long oneBuy;
/**
*
*/
private long virtualNumber;
/**
*
*/
private String status;
}

View File

@ -1,7 +1,7 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -82,7 +82,7 @@ public class ActivityTeamDetailModel {
*/ */
private Long strategyId; private Long strategyId;
public static ActivityTeamDetailModel findSkuSumList (ActivityTeamInfo activityTeamInfo, public static ActivityTeamDetailModel findSkuSumList (ActivityTeamInfo activityTeamInfo,
Function<ActivityTeamDetailModelBuilder, ActivityTeamDetailModel> function){ Function<ActivityTeamDetailModel.ActivityTeamDetailModelBuilder, ActivityTeamDetailModel> function){
return function.apply(ActivityTeamDetailModel.builder() return function.apply(ActivityTeamDetailModel.builder()
.id(activityTeamInfo.getId()) .id(activityTeamInfo.getId())
.name(activityTeamInfo.getName()) .name(activityTeamInfo.getName())

View File

@ -1,14 +1,17 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.domain.resp.TeamInfoProductSkuIdByIdResp; import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq;
import com.muyu.marketing.domain.resp.TeamInfoProductSkuIdByIdResp;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.web.context.annotation.ApplicationScope;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -38,6 +41,10 @@ public class ActivityTeamFindByIdModel {
* ID * ID
*/ */
private long productId; private long productId;
/**
*
*/
private BigDecimal price;
/** /**
* *
*/ */
@ -84,7 +91,7 @@ public class ActivityTeamFindByIdModel {
private List<TeamInfoProductSkuIdByIdResp> teamProjectSkuInfoAddReqList; private List<TeamInfoProductSkuIdByIdResp> teamProjectSkuInfoAddReqList;
public static ActivityTeamFindByIdModel findByIdModel(ActivityTeamInfo activityTeamInfo, List<TeamInfoProductSkuIdByIdResp> teamProjectSkuInfoAddReqList){ public static ActivityTeamFindByIdModel findByIdModel(ActivityTeamInfo activityTeamInfo,List<TeamInfoProductSkuIdByIdResp> teamProjectSkuInfoAddReqList){
return ActivityTeamFindByIdModel.builder() return ActivityTeamFindByIdModel.builder()
.id(activityTeamInfo.getId()) .id(activityTeamInfo.getId())
.name(activityTeamInfo.getName()) .name(activityTeamInfo.getName())

View File

@ -0,0 +1,104 @@
package com.muyu.marketing.domain.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.marketing.domain.req.ActivityTeamInfoSaveReq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
*
*
* @author DongZeLiang
* @date 2024-11-26 09:38
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityTeamInfoAddModel {
/**
*
*/
private String name;
/**
* ID
*/
private Long productId;
/**
*
*/
private String productImage;
/**
*
*/
private String introduction;
/**
*
*/
private String unit;
/**
*
*/
private String imageList;
/**
*
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date endTime;
/**
*
*/
private Long sort;
/**
* SkU
*/
private List<ActivityTeamProductSkuAddModel> activityTeamProductSkuAddModelList;
/**
*
*/
private String content;
/**
*
*/
private String status;
/**
*
*/
private String strategyType;
/**
* ID
*/
private Long strategyId;
public static ActivityTeamInfoAddModel addReqBuild (ActivityTeamInfoSaveReq activityTeamInfoSaveReq){
return ActivityTeamInfoAddModel.builder()
.name(activityTeamInfoSaveReq.getName())
.productId(activityTeamInfoSaveReq.getProductId())
.productImage(activityTeamInfoSaveReq.getProductImage())
.introduction(activityTeamInfoSaveReq.getIntroduction())
.unit(activityTeamInfoSaveReq.getUnit())
.imageList(activityTeamInfoSaveReq.getImageList())
.endTime(activityTeamInfoSaveReq.getEndTime())
.sort(activityTeamInfoSaveReq.getSort())
.content(activityTeamInfoSaveReq.getContent())
.status(activityTeamInfoSaveReq.getStatus())
.strategyType(activityTeamInfoSaveReq.getStrategyType())
.strategyId(activityTeamInfoSaveReq.getStrategyId())
.activityTeamProductSkuAddModelList(
activityTeamInfoSaveReq.getTeamProjectSkuInfoAddReqList()
.stream()
.map(addReq -> ActivityTeamProductSkuAddModel.addReqBuild(addReq, activityTeamInfoSaveReq::getProductId))
.toList()
).build();
}
}

View File

@ -1,30 +1,28 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.domain.ActivityTeamInfo; import com.muyu.common.core.web.model.QueryModel;
import lombok.AllArgsConstructor; import com.muyu.marketing.domain.ActivityTeamInfo;
import lombok.Builder; import lombok.*;
import lombok.Data; import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
/** /**
* *
* @author: CuiFu Bo * @author DongZeLiang
* @create: 2024-11-20 19:59 * @date 2024-11-20 14:18:10
**/ */
@Data @Data
@Builder @Builder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
public class ActivityTeamInfoListModel { public class ActivityTeamInfoListModel {
/** /**
* ID * ID
*/ */
private Long id; private Long id;
/** /**
@ -32,44 +30,62 @@ public class ActivityTeamInfoListModel {
*/ */
private String name; private String name;
/** /**
* *
*/ */
private String productImage; private Long addTeamNumber;
/**
*
*/
private BigDecimal teamPrice;
/** /**
* *
*/ */
private Long attendNumber; private Long attendNumber;
/**
*
*/
private Date endTime;
/** /**
* *
*/ */
private Long openTeamNumber; private Long openTeamNumber;
/** /**
* *
*/ */
private Long addTeamNumber; private String productImage;
/** /**
* *
*/ */
private Long teamStock; private BigDecimal productPrice;
/** /**
* *
*/ */
private Long remainStock; private Long remainStock;
/**
*
*/
private Date endTime;
/** /**
* *
*/ */
private String status; private String status;
/**
*
*/
private BigDecimal teamPrice;
/**
*
*/
private Long teamStock;
public static ActivityTeamInfoListModel infoBuild(ActivityTeamInfo activityTeamInfo, Function<ActivityTeamInfoListModel.ActivityTeamInfoListModelBuilder , ActivityTeamInfoListModel> function){ public static ActivityTeamInfoListModel infoBuild(ActivityTeamInfo activityTeamInfo, Function<ActivityTeamInfoListModel.ActivityTeamInfoListModelBuilder, ActivityTeamInfoListModel> function) {
ActivityTeamInfoListModel activityTeamInfoListModel = ActivityTeamInfoListModel.builder()
.id(activityTeamInfo.getId())
.name(activityTeamInfo.getName())
// .openTeamNumber(teamOpenTypeNumber)
// .addTeamNumber(teamInTypeNumber)
// .attendNumber(teamOpenTypeNumber + teamInTypeNumber)
.endTime(activityTeamInfo.getEndTime())
.productImage(activityTeamInfo.getProductImage())
// .teamPrice(discountPrice.getTeamPrice())
// .productPrice(discountPrice.getProductPrice())
// .teamStock(teamProductStockModel.getTeamStock())
// .remainStock(teamProductStockModel.getRemainStock())
.status(activityTeamInfo.getStatus())
.build();
return function.apply( return function.apply(
ActivityTeamInfoListModel.builder() ActivityTeamInfoListModel.builder()
.id(activityTeamInfo.getId()) .id(activityTeamInfo.getId())
@ -79,4 +95,5 @@ public class ActivityTeamInfoListModel {
.status(activityTeamInfo.getStatus()) .status(activityTeamInfo.getStatus())
); );
} }
} }

View File

@ -1,18 +1,21 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.common.core.web.model.QueryModel; import com.muyu.common.core.web.model.QueryModel;
import lombok.*; import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
/** /**
* *
* @author: CuiFu Bo * @author DongZeLiang
* @create: 2024-11-20 20:05 * @date 2024-11-20 14:18:10
**/ */
@Data @Data
@SuperBuilder @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class ActivityTeamInfoListQueryModel extends QueryModel<ActivityTeamInfoListQueryModel> { public class ActivityTeamInfoListQueryModel extends QueryModel<ActivityTeamInfoListQueryModel> {
@ -20,8 +23,10 @@ public class ActivityTeamInfoListQueryModel extends QueryModel<ActivityTeamInfoL
* *
*/ */
private String keyWord; private String keyWord;
/** /**
* *
*/ */
private String status; private String status;
} }

View File

@ -1,12 +1,14 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @program: 2204a-cloud-server * @program: 2204a-cloud-server

View File

@ -1,12 +1,17 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.domain.req.ActivityTeamInfoUpdReq; import com.muyu.marketing.domain.req.ActivityTeamInfoUpdReq;
import com.muyu.marketing.domain.req.ActivityTeamProductSkuSettingReq;
import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq;
import com.muyu.marketing.domain.req.TeamProjectSkuInfoUpdReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @program: 2204a-cloud-server * @program: 2204a-cloud-server

View File

@ -0,0 +1,91 @@
package com.muyu.marketing.domain.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.marketing.domain.req.ActivityTeamOpenInfoAdReq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
*
*
* @author CuiFu Bo
* @create 2024-12-01 20:24
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityTeamOpenInfoAddModel {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private long id;
/**
* ID
*/
private long teamId;
/**
*
*/
private String teamType;
/**
*
*/
private String teamStrategyId;
/**
*
*/
private String executiveType;
/**
*
*/
private Date endTime;
/**
* ID
*/
private String productId;
/**
*
*/
private String productName;
/**
*
*/
private String productSku;
/**
*
*/
private String key;
/**
* ID
*/
private String orderId;
/**
*
*/
private String status;
public static ActivityTeamOpenInfoAddModel addOpenBuild(ActivityTeamOpenInfoAdReq activityTeamOpenInfoAdReq){
return ActivityTeamOpenInfoAddModel.builder()
.id(activityTeamOpenInfoAdReq.getId())
.teamId(activityTeamOpenInfoAdReq.getTeamId())
.teamType(activityTeamOpenInfoAdReq.getTeamType())
.teamStrategyId(activityTeamOpenInfoAdReq.getTeamStrategyId())
.executiveType(activityTeamOpenInfoAdReq.getExecutiveType())
.endTime(activityTeamOpenInfoAdReq.getEndTime())
.productId(activityTeamOpenInfoAdReq.getProductId())
.productName(activityTeamOpenInfoAdReq.getProductName())
.productSku(activityTeamOpenInfoAdReq.getProductSku())
.key(activityTeamOpenInfoAdReq.getKey())
.orderId(activityTeamOpenInfoAdReq.getOrderId())
.status(activityTeamOpenInfoAdReq.getStatus())
.build();
}
}

View File

@ -1,13 +1,14 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.domain.req.TeamProjectSkuInfoAddReq; import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.function.Function;
import java.util.function.Supplier; import java.util.function.Supplier;
/** /**

View File

@ -1,4 +1,4 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;

View File

@ -1,4 +1,4 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,7 +1,7 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.resp.ProjectFindSkuInfoResp;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,6 +1,6 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.domain.req.ActivityTeamProductSkuReq; import com.muyu.marketing.domain.req.ActivityTeamProductSkuReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,7 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.domain.req.ActivityTeamProductSkuSettingReq; import com.muyu.marketing.domain.req.ActivityTeamProductSkuSettingReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,7 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import com.muyu.domain.req.TeamProjectSkuInfoUpdReq; import com.muyu.marketing.domain.req.TeamProjectSkuInfoUpdReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -0,0 +1,55 @@
package com.muyu.marketing.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
*
*
* @author DongZeLiang
* @date 2024-11-21 11:57
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TeamProductDiscountPriceModel {
/**
*
*/
private BigDecimal productPrice;
/**
*
*/
private BigDecimal teamPrice;
/**
* - /
*/
private double discount;
/**
*
* @param productPrice
* @param teamPrice
* @return
*/
public static TeamProductDiscountPriceModel of(BigDecimal productPrice, BigDecimal teamPrice) {
return TeamProductDiscountPriceModel.builder()
.productPrice(productPrice)
.teamPrice(teamPrice)
.discount(
Double.valueOf(productPrice.subtract(teamPrice).divide(productPrice, 2, RoundingMode.HALF_UP).doubleValue())
)
.build();
}
}

View File

@ -1,4 +1,5 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.model;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -6,22 +7,25 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* *
* @author: CuiFu Bo *
* @create: 2024-11-21 16:54 * @author DongZeLiang
**/ * @date 2024-11-21 14:04
*/
@Data @Data
@Builder @Builder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
public class TeamProductStockModel { public class TeamProductStockModel {
/** /**
* *
*/ */
private Long teamStock; private Long teamStock;
/** /**
* *
*/ */
private Long remainStock; private Long remainStock;
} }

View File

@ -1,7 +1,8 @@
package com.muyu.domain.req; package com.muyu.marketing.domain.req;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -23,11 +24,11 @@ public class ActivityTeamInfoSaveReq extends BaseEntity {
/** /**
* ID * ID
*/ */
private Long projectId; private Long productId;
/** /**
* *
*/ */
private String projectImage; private String productImage;
/** /**
* *
*/ */
@ -54,7 +55,7 @@ public class ActivityTeamInfoSaveReq extends BaseEntity {
/** /**
* SkU * SkU
*/ */
private List<ActivityInfoSkuAddReq> teamProjectSkuInfoAddReqList; private List<TeamProjectSkuInfoAddReq> teamProjectSkuInfoAddReqList;
/** /**
* *
*/ */

View File

@ -1,4 +1,4 @@
package com.muyu.domain.req; package com.muyu.marketing.domain.req;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @program: 2204a-cloud-server * @program: 2204a-cloud-server

View File

@ -0,0 +1,76 @@
package com.muyu.marketing.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.marketing.domain.model.ActivityTeamOpenInfoAddModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
*
*
* @author CuiFu Bo
* @create 2024-12-01 20:28
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityTeamOpenInfoAdReq {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private long id;
/**
* ID
*/
private long teamId;
/**
*
*/
private String teamType;
/**
*
*/
private String teamStrategyId;
/**
*
*/
private String executiveType;
/**
*
*/
private Date endTime;
/**
* ID
*/
private String productId;
/**
*
*/
private String productName;
/**
*
*/
private String productSku;
/**
*
*/
private String key;
/**
* ID
*/
private String orderId;
/**
*
*/
private String status;
}

View File

@ -1,4 +1,4 @@
package com.muyu.domain.req; package com.muyu.marketing.domain.req;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;

View File

@ -1,6 +1,7 @@
package com.muyu.domain.req; package com.muyu.marketing.domain.req;
import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,18 +1,14 @@
package com.muyu.domain.req; package com.muyu.marketing.domain.req;
import com.muyu.common.core.web.page.PageDomain; import com.muyu.common.core.web.page.PageDomain;
import com.muyu.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
import lombok.*; import lombok.*;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
/**
*
* @Date2024.11.20 19:49
*/
@Data @Data
@SuperBuilder @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class TeamInfoListReq extends PageDomain { public class TeamInfoListReq extends PageDomain {
@ -20,16 +16,18 @@ public class TeamInfoListReq extends PageDomain {
* *
*/ */
private String keyWord; private String keyWord;
/** /**
* *
*/ */
private String status; private String status;
/** /**
* *
* @return * @return
*/ */
public ActivityTeamInfoListQueryModel buildQueryModel(){ public ActivityTeamInfoListQueryModel buildQueryModel() {
return ActivityTeamInfoListQueryModel.builder() return ActivityTeamInfoListQueryModel.builder()
.keyWord(this.keyWord) .keyWord(this.keyWord)
.status(this.status) .status(this.status)

View File

@ -1,4 +1,4 @@
package com.muyu.domain.req; package com.muyu.marketing.domain.req;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.muyu.domain.req; package com.muyu.marketing.domain.req;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,8 @@
package com.muyu.domain.resp; package com.muyu.marketing.domain.resp;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;

View File

@ -1,28 +1,35 @@
package com.muyu.domain.model; package com.muyu.marketing.domain.resp;
import com.fasterxml.jackson.annotation.JsonFormat; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date; import java.util.Date;
/** /**
*
*
* @author CuiFu Bo * @author CuiFu Bo
* @create 2024-12-04 19:05 * @create 2024-12-01 20:27
**/ **/
@Data @Data
@SuperBuilder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class ActivityTeamOpenInfoAddModel { public class ActivityTeamOpenInfoAddResp {
/**
*
*/
@TableId(value = "id", type = IdType.AUTO)
private long id;
/** /**
* ID * ID
*/ */
private Long teamId; private long teamId;
/** /**
* *
*/ */
@ -30,7 +37,7 @@ public class ActivityTeamOpenInfoAddModel {
/** /**
* *
*/ */
private Long teamStrategyId; private String teamStrategyId;
/** /**
* *
*/ */
@ -38,12 +45,11 @@ public class ActivityTeamOpenInfoAddModel {
/** /**
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime; private Date endTime;
/** /**
* ID * ID
*/ */
private Long productId; private String productId;
/** /**
* *
*/ */
@ -55,15 +61,13 @@ public class ActivityTeamOpenInfoAddModel {
/** /**
* *
*/ */
private String openkey; private String key;
/** /**
* ID * ID
*/ */
private Long orderId; private String orderId;
/** /**
* *
*/ */
private String status; private String status;
} }

View File

@ -1,4 +1,4 @@
package com.muyu.domain.resp; package com.muyu.marketing.domain.resp;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@ -1,6 +1,8 @@
package com.muyu.domain.resp; package com.muyu.marketing.domain.resp;
import com.muyu.domain.model.ActivityTeamProductSkuModel; import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.model.ActivityTeamProductSkuAddModel;
import com.muyu.marketing.domain.model.ActivityTeamProductSkuModel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -1,8 +1,7 @@
package com.muyu.domain.resp; package com.muyu.marketing.domain.resp;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.marketing.domain.model.ActivityTeamDetailModel;
import com.muyu.domain.model.ActivityTeamDetailModel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,12 +1,14 @@
package com.muyu.domain.resp; package com.muyu.marketing.domain.resp;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.domain.model.ActivityTeamFindByIdModel; import com.muyu.marketing.domain.model.ActivityTeamFindByIdModel;
import com.muyu.marketing.domain.req.TeamProjectSkuInfoAddReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;

View File

@ -1,7 +1,7 @@
package com.muyu.domain.resp; package com.muyu.marketing.domain.resp;
import com.muyu.common.core.web.page.PageDomain; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.req.TeamInfoListReq;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -10,17 +10,14 @@ import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/**
*TeamInfoListResp
* @Date2024.11.20 19:47
*/
@Data @Data
@Builder @Builder
@AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TeamInfoListResp { @AllArgsConstructor
public class TeamInfoListResp {
/** /**
* ID * ID
*/ */
private Long id; private Long id;
/** /**
@ -28,56 +25,66 @@ public class TeamInfoListResp {
*/ */
private String name; private String name;
/** /**
* *
*/ */
private String productImage; private Long addTeamNumber;
/**
*
*/
private BigDecimal teamPrice;
/** /**
* *
*/ */
private Long attendNumber; private Long attendNumber;
/**
*
*/
private Date endTime;
/** /**
* *
*/ */
private Long openTeamNumber; private Long openTeamNumber;
/** /**
* *
*/ */
private Long addTeamNumber; private String productImage;
/** /**
* *
*/ */
private Long teamStock; private BigDecimal productPrice;
/** /**
* *
*/ */
private Long remainStock; private Long remainStock;
/**
*
*/
private Date endTime;
/** /**
* *
*/ */
private String status; private String status;
/**
*
*/
private BigDecimal teamPrice;
/**
*
*/
private Long teamStock;
public static TeamInfoListResp listModerBuild(ActivityTeamInfoListModel activityTeamInfoListModel){ /**
*
* @param activityTeamInfoListModel
* @return
*/
public static TeamInfoListResp listModelBuild(ActivityTeamInfoListModel activityTeamInfoListModel) {
return TeamInfoListResp.builder() return TeamInfoListResp.builder()
.id(activityTeamInfoListModel.getId()) .id(activityTeamInfoListModel.getId())
.name(activityTeamInfoListModel.getName()) .name(activityTeamInfoListModel.getName())
.productImage(activityTeamInfoListModel.getProductImage())
.teamPrice(activityTeamInfoListModel.getTeamPrice())
.attendNumber(activityTeamInfoListModel.getAttendNumber())
.openTeamNumber(activityTeamInfoListModel.getOpenTeamNumber()) .openTeamNumber(activityTeamInfoListModel.getOpenTeamNumber())
.addTeamNumber(activityTeamInfoListModel.getAddTeamNumber()) .addTeamNumber(activityTeamInfoListModel.getAddTeamNumber())
.teamStock(activityTeamInfoListModel.getTeamStock()) .addTeamNumber(activityTeamInfoListModel.getAddTeamNumber())
.remainStock(activityTeamInfoListModel.getRemainStock()) .attendNumber(activityTeamInfoListModel.getAttendNumber())
.endTime(activityTeamInfoListModel.getEndTime()) .endTime(activityTeamInfoListModel.getEndTime())
.teamPrice(activityTeamInfoListModel.getTeamPrice())
.productImage(activityTeamInfoListModel.getProductImage())
.productPrice(activityTeamInfoListModel.getProductPrice())
.remainStock(activityTeamInfoListModel.getRemainStock())
.status(activityTeamInfoListModel.getStatus()) .status(activityTeamInfoListModel.getStatus())
.teamStock(activityTeamInfoListModel.getTeamStock())
.build(); .build();
} }
} }

View File

@ -1,14 +1,16 @@
package com.muyu.domain.resp; package com.muyu.marketing.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.domain.model.ActivityTeamProductSkuIdModel; import com.muyu.marketing.domain.model.ActivityTeamFindByIdModel;
import com.muyu.marketing.domain.model.ActivityTeamProductSkuIdModel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* *

View File

@ -9,7 +9,7 @@
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<artifactId>muyu-marketing-remote</artifactId> <artifactId>marketing-remote</artifactId>
<properties> <properties>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
@ -17,4 +17,10 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>marketing-common</artifactId>
</dependency>
</dependencies>
</project> </project>

View File

@ -9,7 +9,7 @@
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<artifactId>muyu-marketing-server</artifactId> <artifactId>marketing-server</artifactId>
<properties> <properties>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
@ -17,16 +17,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-marketing-common</artifactId>
<version>3.6.3</version>
</dependency>
<!-- SpringCloud Alibaba Nacos --> <!-- SpringCloud Alibaba Nacos -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
@ -92,12 +83,18 @@
<groupId>com.dtflys.forest</groupId> <groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot-starter</artifactId> <artifactId>forest-spring-boot-starter</artifactId>
</dependency> </dependency>
<!-- 远程调用 -->
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>com.muyu</groupId>
<artifactId>hutool-all</artifactId> <artifactId>marketing-remote</artifactId>
<version>5.8.3</version>
</dependency> </dependency>
<!-- 商品服务 缓存依赖 -->
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -124,5 +121,4 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -1,4 +1,4 @@
package com.muyu.system.team; package com.muyu.marketing;
import com.muyu.common.security.annotation.EnableCustomConfig; import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients; import com.muyu.common.security.annotation.EnableMyFeignClients;

View File

@ -0,0 +1,81 @@
package com.muyu.marketing.team.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoUpdModel;
import com.muyu.marketing.domain.req.ActivityTeamInfoSaveReq;
import com.muyu.marketing.domain.req.ActivityTeamInfoUpdReq;
import com.muyu.marketing.domain.req.TeamInfoListReq;
import com.muyu.marketing.domain.resp.TeamInfoFindByIdResp;
import com.muyu.marketing.domain.resp.TeamInfoListResp;
import com.muyu.marketing.team.service.ActivityTeamInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
* @author DongZeLiang
* @date 2024-11-20 14:25
*/
@RestController
@RequestMapping("/team")
public class ActivityTeamController {
@Autowired
private ActivityTeamInfoService activityTeamInfoService;;
/**
*
* @param teamInfoListReq
* @return
*/
@PostMapping("/list")
public Result<TableDataInfo<TeamInfoListResp>> list(@RequestBody TeamInfoListReq teamInfoListReq) {
TableDataInfo<ActivityTeamInfoListModel> tableDataInfo = activityTeamInfoService.query(teamInfoListReq.buildQueryModel());
List<TeamInfoListResp> respList = tableDataInfo.getRows().stream().map(TeamInfoListResp::listModelBuild).toList();
return Result.success(
new TableDataInfo<>(){{
setRows(respList);
setTotal(tableDataInfo.getTotal());
}}
);
}
/**
*
* @param activityTeamInfoSaveReq
* @return
*/
@PostMapping
public Result<String> save(@RequestBody ActivityTeamInfoSaveReq activityTeamInfoSaveReq) {
activityTeamInfoService.save(ActivityTeamInfoAddModel.addReqBuild(activityTeamInfoSaveReq));
return Result.success();
}
@PostMapping("/findById/{id}")
public Result<TeamInfoFindByIdResp> 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
*/
@GetMapping("/teamList/{id}")
public Result<List<ActivityTeamInfo>> teamList(@PathVariable("id") Long id){
List<ActivityTeamInfo> activityTeamInfoList= activityTeamInfoService.teamList(id);
return Result.success(activityTeamInfoList);
}
}

View File

@ -0,0 +1,30 @@
package com.muyu.marketing.team.controller;
import com.dtflys.forest.annotation.Post;
import com.muyu.common.core.domain.Result;
import com.muyu.marketing.domain.model.ActivityTeamOpenInfoAddModel;
import com.muyu.marketing.domain.req.ActivityTeamOpenInfoAdReq;
import com.muyu.marketing.team.service.ActivityTeamOpenInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*
* @author CuiFu Bo
* @create 2024-12-01 20:32
**/
@RestController
@RequestMapping("/open")
public class ActivityTeamOpenInfoController {
@Autowired
private ActivityTeamOpenInfoService activityTeamOpenInfoService;
@PostMapping("/install")
public Result<String> save(ActivityTeamOpenInfoAdReq activityTeamOpenInfoAdReq){
activityTeamOpenInfoService.save(ActivityTeamOpenInfoAddModel.addOpenBuild(activityTeamOpenInfoAdReq));
return Result.success();
}
}

View File

@ -0,0 +1,10 @@
package com.muyu.marketing.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.marketing.domain.ActivityTeamInfo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ActivityTeamInfoMapper extends BaseMapper<ActivityTeamInfo> {
}

View File

@ -1,15 +1,10 @@
package com.muyu.system.team.mapper; package com.muyu.marketing.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.ActivityTeamOpenInfo; import com.muyu.marketing.domain.ActivityTeamOpenInfo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/**
* @author: CuiFu Bo
* @create: 2024-11-20 20:44
**/
@Mapper @Mapper
public interface ActivityTeamOpenInfoMapper extends BaseMapper<ActivityTeamOpenInfo> { public interface ActivityTeamOpenInfoMapper extends BaseMapper<ActivityTeamOpenInfo> {
} }

View File

@ -1,17 +1,11 @@
package com.muyu.system.team.mapper; package com.muyu.marketing.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.ActivityTeamOpenInfo;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/**
* @author: CuiFu Bo
* @create: 2024-11-20 20:45
**/
@Mapper @Mapper
public interface ActivityTeamProductSkuInfoMapper extends BaseMapper<ActivityTeamProductSkuInfo> { public interface ActivityTeamProductSkuInfoMapper extends BaseMapper<ActivityTeamProductSkuInfo> {
} }

View File

@ -1,17 +1,11 @@
package com.muyu.system.team.mapper; package com.muyu.marketing.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.TeamStrategyExemption; import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.TeamStrategyExemption;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/**
* @author: CuiFu Bo
* @create: 2024-11-20 20:46
**/
@Mapper @Mapper
public interface TeamStrategyExemptionMapper extends BaseMapper<TeamStrategyExemption> { public interface TeamStrategyExemptionMapper extends BaseMapper<TeamStrategyExemption> {
} }

View File

@ -0,0 +1,10 @@
package com.muyu.marketing.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.marketing.domain.TeamStrategyHundred;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TeamStrategyHundredMapper extends BaseMapper<TeamStrategyHundred> {
}

View File

@ -0,0 +1,10 @@
package com.muyu.marketing.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.marketing.domain.TeamStrategyOrdinary;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TeamStrategyOrdinaryMapper extends BaseMapper<TeamStrategyOrdinary> {
}

View File

@ -1,30 +1,27 @@
package com.muyu.system.team.service; package com.muyu.marketing.team.service;
import com.baomidou.mybatisplus.extension.service.IService; 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.common.core.web.page.TableDataInfo;
import com.muyu.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.domain.model.*; import com.muyu.marketing.domain.model.*;
import com.muyu.domain.req.ActivityTeamInfoSaveReq;
import com.muyu.product.domain.req.ProjectInfoSaveReq;
import java.util.List; import java.util.List;
/**
* @author: CuiFu Bo
* @create: 2024-11-20 20:49
**/
public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> { public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> {
/** /**
* *
* @param activityTeamInfoListQueryModel * @param activityTeamInfoListQueryModel
* @return * @return
*/ */
public TableDataInfo<ActivityTeamInfoListModel> query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel); public TableDataInfo<ActivityTeamInfoListModel> query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel);
/**
Result<String> save(ActivityTeamInfoSaveReq activityTeamInfoSaveReq); *
* @param activityTeamInfoAddModel
*/
public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel);
/** /**
* ID * ID
@ -40,13 +37,9 @@ public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> {
*/ */
boolean update(ActivityTeamInfoUpdModel activityTeamInfoUpdModel); boolean update(ActivityTeamInfoUpdModel activityTeamInfoUpdModel);
/**
* ID List<ActivityTeamInfo> teamList(Long id);
* @param id ID
* @return
*/
List<ActivityTeamInfo> ActivityTeamList(Long id);
} }

View File

@ -0,0 +1,37 @@
package com.muyu.marketing.team.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.core.enums.market.team.TeamOpenTypeEnum;
import com.muyu.marketing.domain.ActivityTeamOpenInfo;
import com.muyu.marketing.domain.model.ActivityTeamOpenInfoAddModel;
public interface ActivityTeamOpenInfoService extends IService<ActivityTeamOpenInfo> {
/**
* ID
* @param teamId ID
* @param teamOpenType
* @return
*/
public Long getTeamOpenNumberByTeamIdAndType(Long teamId, TeamOpenTypeEnum teamOpenType);
/**
* ID
* @param teamId ID
* @return
*/
public default Long getTeamOpenTypeNumberByTeamId(Long teamId){
return this.getTeamOpenNumberByTeamIdAndType(teamId, TeamOpenTypeEnum.OPEN_TEAM);
}
/**
* ID
* @param teamId ID
* @return
*/
public default Long getTeamInTypeNumberByTeamId(Long teamId){
return this.getTeamOpenNumberByTeamIdAndType(teamId, TeamOpenTypeEnum.IN_TEAM);
}
public void save(ActivityTeamOpenInfoAddModel activityTeamOpenInfoAddModel);
}

View File

@ -1,17 +1,12 @@
package com.muyu.system.team.service; package com.muyu.marketing.team.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.domain.model.*; import com.muyu.marketing.domain.model.*;
import java.util.List; import java.util.List;
/**
*
* @author: CuiFu Bo
* @create: 2024-11-20 20:50
**/
public interface ActivityTeamProductSkuInfoService extends IService<ActivityTeamProductSkuInfo> { public interface ActivityTeamProductSkuInfoService extends IService<ActivityTeamProductSkuInfo> {
public default List<ActivityTeamProductSkuInfo> getActivityTeamProductSkuInfoByTeamId(Long teamId){ public default List<ActivityTeamProductSkuInfo> getActivityTeamProductSkuInfoByTeamId(Long teamId){
@ -22,19 +17,21 @@ public interface ActivityTeamProductSkuInfoService extends IService<ActivityTeam
/** /**
* ID * ID
* @param teamId Id * @param teamId ID
* @return * @return
*/ */
public TeamDiscountPriceModel getDiscountPrice(Long teamId); public TeamProductDiscountPriceModel getDiscountPrice(Long teamId);
/** /**
* ID * ID
* @param teamId Id * @param teamId ID
* @return * @return
*/ */
public TeamProductStockModel getStock(Long teamId); public TeamProductStockModel getStock(Long teamId);
/** /**
* SKU * SKU
* @param activityTeamProductSkuAddModelList SKU * @param activityTeamProductSkuAddModelList SKU
@ -74,6 +71,3 @@ public interface ActivityTeamProductSkuInfoService extends IService<ActivityTeam
this.removeByIds(activityTeamProductSkuSettingModel.getRemoveIds()); this.removeByIds(activityTeamProductSkuSettingModel.getRemoveIds());
} }
} }

View File

@ -0,0 +1,11 @@
package com.muyu.marketing.team.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.marketing.domain.TeamStrategyExemption;
import com.muyu.marketing.team.strategy.ActivityTeamStrategy;
/**
*
*/
public interface TeamStrategyExemptionService extends ActivityTeamStrategy, IService<TeamStrategyExemption> {
}

View File

@ -0,0 +1,11 @@
package com.muyu.marketing.team.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.marketing.domain.TeamStrategyHundred;
import com.muyu.marketing.team.strategy.ActivityTeamStrategy;
/**
*
*/
public interface TeamStrategyHundredService extends ActivityTeamStrategy, IService<TeamStrategyHundred> {
}

View File

@ -0,0 +1,11 @@
package com.muyu.marketing.team.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.marketing.domain.TeamStrategyOrdinary;
import com.muyu.marketing.team.strategy.ActivityTeamStrategy;
/**
*
*/
public interface TeamStrategyOrdinaryService extends ActivityTeamStrategy, IService<TeamStrategyOrdinary> {
}

View File

@ -0,0 +1,121 @@
package com.muyu.marketing.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.utils.StringUtils;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.model.*;
import com.muyu.marketing.team.mapper.ActivityTeamInfoMapper;
import com.muyu.marketing.team.service.ActivityTeamInfoService;
import com.muyu.marketing.team.service.ActivityTeamOpenInfoService;
import com.muyu.marketing.team.service.ActivityTeamProductSkuInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.List;
@Service
public class ActivityTeamInfoServiceImpl extends ServiceImpl<ActivityTeamInfoMapper, ActivityTeamInfo>
implements ActivityTeamInfoService {
@Autowired
private ActivityTeamOpenInfoService activityTeamOpenInfoService;
@Autowired
private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService;
@Override
public TableDataInfo<ActivityTeamInfoListModel> query(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel) {
LambdaQueryWrapper<ActivityTeamInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(activityTeamInfoListQueryModel.getKeyWord()), ActivityTeamInfo::getName, activityTeamInfoListQueryModel.getKeyWord());
queryWrapper.like(StringUtils.isNotEmpty(activityTeamInfoListQueryModel.getStatus()), ActivityTeamInfo::getStatus, activityTeamInfoListQueryModel.getStatus());
/**
* Object<T> ->
* <T> Result<T>
*/
Page<ActivityTeamInfo> activityTeamInfoPage = this.page(activityTeamInfoListQueryModel.buildPage(), queryWrapper);
List<ActivityTeamInfo> activityTeamInfoList = activityTeamInfoPage.getRecords();
List<ActivityTeamInfoListModel> activityTeamInfoListModels = activityTeamInfoList.stream()
.map(activityTeamInfo -> ActivityTeamInfoListModel.infoBuild(activityTeamInfo,
(activityTeamInfoListModelBuilder) -> {
TeamProductDiscountPriceModel discountPrice = activityTeamProductSkuInfoService.getDiscountPrice(activityTeamInfo.getId());
TeamProductStockModel teamProductStockModel = activityTeamProductSkuInfoService.getStock(activityTeamInfo.getId());
Long teamOpenTypeNumber = activityTeamOpenInfoService.getTeamOpenTypeNumberByTeamId(activityTeamInfo.getId());
Long teamInTypeNumber = activityTeamOpenInfoService.getTeamInTypeNumberByTeamId(activityTeamInfo.getId());
return activityTeamInfoListModelBuilder
.openTeamNumber(teamOpenTypeNumber)
.addTeamNumber(teamInTypeNumber)
.attendNumber(teamOpenTypeNumber + teamInTypeNumber)
.teamPrice(discountPrice.getTeamPrice())
.productPrice(discountPrice.getProductPrice())
.teamStock(teamProductStockModel.getTeamStock())
.remainStock(teamProductStockModel.getRemainStock())
.build();
})).toList();
TableDataInfo<ActivityTeamInfoListModel> tableDataInfo = new TableDataInfo<>();
tableDataInfo.setTotal(activityTeamInfoPage.getTotal());
tableDataInfo.setRows(activityTeamInfoListModels);
return tableDataInfo;
}
/**
*
*
* @param activityTeamInfoAddModel
*/
@Override
public void save(ActivityTeamInfoAddModel activityTeamInfoAddModel) {
ActivityTeamInfo activityTeamInfo = ActivityTeamInfo.addModelBuild(activityTeamInfoAddModel);
Assert.isTrue(this.save(activityTeamInfo), StringUtils.format("团购活动添加失败:[{}]", activityTeamInfoAddModel));
List<ActivityTeamProductSkuAddModel> teamProductSkuAddModelList = activityTeamInfoAddModel.getActivityTeamProductSkuAddModelList();
teamProductSkuAddModelList.forEach(activityTeamProductSkuAddModel -> activityTeamProductSkuAddModel.setTeamId(activityTeamInfo.getId()));
this.activityTeamProductSkuInfoService.batchSave(teamProductSkuAddModelList);
}
/**
* ID
* @param id ID
* @return
*/
@Override
public ActivityTeamDetailModel findDetailById(Long id) {
ActivityTeamInfo activityTeamInfo = this.getById(id);
List<ActivityTeamProductSkuModel> 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
* @return
*/
@Override
public List<ActivityTeamInfo> teamList(Long id) {
LambdaQueryWrapper<ActivityTeamInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ActivityTeamInfo::getId,id);
List<ActivityTeamInfo> list = this.list(queryWrapper);
return list;
}
}

View File

@ -0,0 +1,41 @@
package com.muyu.marketing.team.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.util.StringUtil;
import com.muyu.common.core.enums.market.team.TeamOpenTypeEnum;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.marketing.domain.ActivityTeamOpenInfo;
import com.muyu.marketing.domain.model.ActivityTeamOpenInfoAddModel;
import com.muyu.marketing.team.mapper.ActivityTeamOpenInfoMapper;
import com.muyu.marketing.team.service.ActivityTeamOpenInfoService;
import org.springframework.stereotype.Service;
@Service
public class ActivityTeamOpenInfoServiceImpl extends ServiceImpl<ActivityTeamOpenInfoMapper, ActivityTeamOpenInfo>
implements ActivityTeamOpenInfoService {
/**
* ID
*
* @param teamId ID
* @param teamOpenType
* @return
*/
@Override
public Long getTeamOpenNumberByTeamIdAndType(Long teamId, TeamOpenTypeEnum teamOpenType) {
LambdaQueryWrapper<ActivityTeamOpenInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ActivityTeamOpenInfo::getTeamId, teamId);
queryWrapper.eq(ActivityTeamOpenInfo::getTeamType, teamOpenType.code());
return this.count(queryWrapper);
}
@Override
public void save(ActivityTeamOpenInfoAddModel activityTeamOpenInfoAddModel) {
ActivityTeamOpenInfo activityTeamOpenInfo = ActivityTeamOpenInfo.addBuildModel(activityTeamOpenInfoAddModel);
Assert.isTrue(this.save(activityTeamOpenInfo), StringUtils.format("团购活动添加失败[{}]",activityTeamOpenInfo));
}
}

View File

@ -1,64 +1,68 @@
package com.muyu.system.team.service.impl; package com.muyu.marketing.team.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.exception.ServiceException;
import com.muyu.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.domain.model.*; import com.muyu.marketing.domain.model.*;
import com.muyu.marketing.team.mapper.ActivityTeamProductSkuInfoMapper;
import com.muyu.marketing.team.service.ActivityTeamProductSkuInfoService;
import com.muyu.product.cache.ProjectSkuCache; import com.muyu.product.cache.ProjectSkuCache;
import com.muyu.product.domain.ProjectSkuInfo; import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.system.team.mapper.ActivityTeamProductSkuInfoMapper; import org.springframework.beans.factory.annotation.Autowired;
import com.muyu.system.team.service.ActivityTeamProductSkuInfoService;
import lombok.SneakyThrows;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.rmi.server.ServerCloneException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
/**
* @author: CuiFu Bo
* @create: 2024-11-20 21:41
**/
@Service @Service
public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityTeamProductSkuInfoMapper, ActivityTeamProductSkuInfo> implements ActivityTeamProductSkuInfoService { public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityTeamProductSkuInfoMapper, ActivityTeamProductSkuInfo>
implements ActivityTeamProductSkuInfoService {
@Resource @Autowired
private ProjectSkuCache projectSkuCache; private ProjectSkuCache projectSkuCache;
@SneakyThrows /**
* ID
*
* @param teamId ID
* @return
*/
@Override @Override
public TeamDiscountPriceModel getDiscountPrice(Long teamId) { public TeamProductDiscountPriceModel getDiscountPrice(Long teamId) {
List<ActivityTeamProductSkuInfo> productSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); List<ActivityTeamProductSkuInfo> teamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId);
if(productSkuInfoList.size()>0){ if(teamProductSkuInfoList.size()>0){
// 优惠模型集合
Optional<TeamProductDiscountPriceModel> discountPriceModelOptional = teamProductSkuInfoList.stream()
.map(activityTeamProductSkuInfo -> {
ProjectSkuInfo projectSkuInfo = projectSkuCache.get(activityTeamProductSkuInfo.getProductId(), activityTeamProductSkuInfo.getProductSku());
return TeamProductDiscountPriceModel.of(projectSkuInfo.getPrice(), activityTeamProductSkuInfo.getTeamPrice());
}).min((o1, o2) -> Double.valueOf(o1.getDiscount() * 100 - o2.getDiscount() * 100).intValue());
if (discountPriceModelOptional.isEmpty()){
Optional<TeamDiscountPriceModel> discountPrice = productSkuInfoList.stream() throw new ServiceException("团购活动下没有商品绑定");
.map(activityTeamProductSkuInfo -> { }
ProjectSkuInfo productPriceList = projectSkuCache.get(activityTeamProductSkuInfo.getProductId(), activityTeamProductSkuInfo.getProductSku()); return discountPriceModelOptional.get();
return TeamDiscountPriceModel.of(productPriceList.getPrice(), activityTeamProductSkuInfo.getTeamPrice());
}).min((o1, o2) -> Double.valueOf(o1.getDiscount() * 100 - o2.getDiscount() * 100).intValue());
if (discountPrice.isEmpty()) {
throw new ServerCloneException("团购活动下没有商品绑定");
} }
return discountPrice.get(); return TeamProductDiscountPriceModel.builder()
}
return TeamDiscountPriceModel.builder()
.productPrice(BigDecimal.valueOf(0)) .productPrice(BigDecimal.valueOf(0))
.teamPrice(BigDecimal.valueOf(0)) .teamPrice(BigDecimal.valueOf(0))
.discount(0.00) .discount(0.00)
.build(); .build();
} }
/**
* ID
*
* @param teamId ID
* @return
*/
@Override @Override
public TeamProductStockModel getStock(Long teamId) { public TeamProductStockModel getStock(Long teamId) {
List<ActivityTeamProductSkuInfo> teamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId); List<ActivityTeamProductSkuInfo> teamProductSkuInfoList = this.getActivityTeamProductSkuInfoByTeamId(teamId);
@ -67,6 +71,7 @@ public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityT
.remainStock(teamProductSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getRemainStock).reduce(0L, Long::sum)) .remainStock(teamProductSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getRemainStock).reduce(0L, Long::sum))
.build(); .build();
} }
/** /**
* SKU * SKU
* *

View File

@ -0,0 +1,69 @@
package com.muyu.marketing.team.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.ActivityTeamOpenInfo;
import com.muyu.marketing.domain.TeamStrategyExemption;
import com.muyu.marketing.team.mapper.TeamStrategyExemptionMapper;
import com.muyu.marketing.team.service.ActivityTeamInfoService;
import com.muyu.marketing.team.service.TeamStrategyExemptionService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Log4j2
@Service("team-strategy-exemption")
public class TeamStrategyExemptionServiceImpl extends ServiceImpl<TeamStrategyExemptionMapper, TeamStrategyExemption>
implements TeamStrategyExemptionService {
/**
*
*
* @param activityTeamId ID
*/
@Override
public void openTeam(Long activityTeamId) {
log.info("参加 - 免单团 - [{}]", activityTeamId);
}
/**
*
*
* @param teamId ID
*/
@Override
public void applyTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
* @param orderNumber
*/
@Override
public void addTeam(Long teamId, String orderNumber) {
}
/**
* 退
*
* @param teamId ID
*/
@Override
public void backTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
*/
@Override
public void settle(Long teamId) {
}
}

View File

@ -0,0 +1,75 @@
package com.muyu.marketing.team.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.ActivityTeamOpenInfo;
import com.muyu.marketing.domain.TeamStrategyHundred;
import com.muyu.marketing.team.mapper.TeamStrategyHundredMapper;
import com.muyu.marketing.team.service.ActivityTeamInfoService;
import com.muyu.marketing.team.service.TeamStrategyHundredService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Log4j2
@Service("team-strategy-hundred")
public class TeamStrategyHundredServiceImpl extends ServiceImpl<TeamStrategyHundredMapper, TeamStrategyHundred>
implements TeamStrategyHundredService {
@Autowired
private ActivityTeamInfoService activityTeamInfoService;
/**
*
*
* @param activityTeamId ID
*/
@Override
public void openTeam(Long activityTeamId) {
log.info("参加 - 百人团 - [{}]", activityTeamId);
ActivityTeamOpenInfo activityTeamOpenInfo = new ActivityTeamOpenInfo();
activityTeamOpenInfo.setTeamId(activityTeamId);
activityTeamOpenInfo.setTeamType("百人团");
ActivityTeamInfo byId = activityTeamInfoService.getById(activityTeamId);
}
/**
*
*
* @param teamId ID
*/
@Override
public void applyTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
* @param orderNumber
*/
@Override
public void addTeam(Long teamId, String orderNumber) {
}
/**
* 退
*
* @param teamId ID
*/
@Override
public void backTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
*/
@Override
public void settle(Long teamId) {
}
}

View File

@ -0,0 +1,66 @@
package com.muyu.marketing.team.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.marketing.domain.TeamStrategyOrdinary;
import com.muyu.marketing.team.mapper.TeamStrategyOrdinaryMapper;
import com.muyu.marketing.team.service.TeamStrategyOrdinaryService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
@Log4j2
@Service("team-strategy-ordinary")
public class TeamStrategyOrdinaryServiceImpl extends ServiceImpl<TeamStrategyOrdinaryMapper, TeamStrategyOrdinary>
implements TeamStrategyOrdinaryService {
/**
*
*
* @param activityTeamId ID
*/
@Override
public void openTeam(Long activityTeamId) {
log.info("参加 - 普通团 - [{}]", activityTeamId);
}
/**
*
*
* @param teamId ID
*/
@Override
public void applyTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
* @param orderNumber
*/
@Override
public void addTeam(Long teamId, String orderNumber) {
}
/**
* 退
*
* @param teamId ID
*/
@Override
public void backTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
*/
@Override
public void settle(Long teamId) {
}
}

View File

@ -1,7 +1,13 @@
package com.muyu.system.team.strategy; package com.muyu.marketing.team.strategy;
import org.apache.ibatis.annotations.Param;
/** /**
* *
*
* @author DongZeLiang
* @date 2024-11-29 15:03
*/ */
public interface ActivityTeamStrategy { public interface ActivityTeamStrategy {
@ -11,23 +17,18 @@ public interface ActivityTeamStrategy {
*/ */
public void openTeam(Long activityTeamId); public void openTeam(Long activityTeamId);
/** /**
* *
* @param teamId ID * @param teamId ID
* @return code
*/ */
public String applyTeam(Long teamId); public void applyTeam(Long teamId);
/** /**
* *
* @param teamId ID * @param teamId ID
* @param orderNumber * @param orderNumber
*/ */
public void addTeam(Long teamId,String orderNumber); public void addTeam(Long teamId, String orderNumber);
/** /**
* 退 * 退
@ -35,11 +36,9 @@ public interface ActivityTeamStrategy {
*/ */
public void backTeam(Long teamId); public void backTeam(Long teamId);
/** /**
* *
* @param teamId ID * @param teamId ID
*/ */
public void settle(Long teamId); public void settle(Long teamId);
} }

View File

@ -0,0 +1,85 @@
package com.muyu.marketing.team.strategy.impl;
import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.core.utils.SpringUtils;
import com.muyu.marketing.team.strategy.ActivityTeamStrategy;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
*
*
* @author DongZeLiang
* @date 2024-11-29 15:28
*/
@Service
@Primary
public class ActivityTeamStrategyImpl implements ActivityTeamStrategy {
/**
*
*
* @param activityTeamId ID
*/
@Override
public void openTeam(Long activityTeamId) {
// 假设这里是通过方法获取的typeactivityTeamId.toString()
// "team-strategy-exemption"
// "team-strategy-hundred"
// "team-strategy-ordinary"
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);
}
/**
*
*
* @param teamId ID
*/
@Override
public void applyTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
* @param orderNumber
*/
@Override
public void addTeam(Long teamId, String orderNumber) {
}
/**
* 退
*
* @param teamId ID
*/
@Override
public void backTeam(Long teamId) {
}
/**
*
*
* @param teamId ID
*/
@Override
public void settle(Long teamId) {
}
}

View File

@ -1,6 +1,6 @@
# Tomcat # Tomcat
server: server:
port: 9219 port: 9209
# Spring # Spring
spring: spring:
@ -25,4 +25,4 @@ spring:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
logging: logging:
level: level:
com.muyu.system.mapper: DEBUG com.muyu.marketing.mapper: DEBUG

View File

@ -0,0 +1,28 @@
package com.muyu.test;
import com.muyu.marketing.MuYuMarketingApplication;
import com.muyu.marketing.team.strategy.ActivityTeamStrategy;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
/**
*
*
* @author DongZeLiang
* @date 2024-11-29 15:40
*/
@SpringBootTest(classes = MuYuMarketingApplication.class)
public class TeamStrategyTest {
@Autowired
private ActivityTeamStrategy activityTeamStrategy;
@Test
public void testStrategy() {
activityTeamStrategy.openTeam(0L);
activityTeamStrategy.openTeam(1L);
activityTeamStrategy.openTeam(2L);
}
}

View File

@ -1,80 +0,0 @@
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;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityTeamOpenInfo {
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 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;
public static ActivityTeamOpenInfo add(ActivityTeamOpenInfoAddModel addModel){
return ActivityTeamOpenInfo.builder()
.teamId(addModel.getTeamId())
.teamType(addModel.getTeamType())
.teamStrategyId(addModel.getTeamStrategyId())
.build();
}
}

View File

@ -1,45 +0,0 @@
package com.muyu.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TeamStrategyExemptionHundred {
/**
*
*/
private long id;
/**
*
*/
private long duration;
/**
*
*/
private long maxBuy;
/**
*
*/
private long oneBuy;
/**
*
*/
private long virtualNumber;
/**
*
*/
private String status;
/**
*
*/
private String ruleInfo;
}

View File

@ -1,43 +0,0 @@
package com.muyu.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TeamStrategyExemptionOrdinary {
/**
*
*/
private long id;
/**
*
*/
private long duration;
/**
*
*/
private long teamNumber;
/**
*
*/
private long maxBuy;
/**
*
*/
private long oneBuy;
/**
*
*/
private long virtualNumber;
/**
*
*/
private String status;
}

View File

@ -1,32 +0,0 @@
package com.muyu.domain.model;
import com.muyu.domain.req.ActivityInfoAddReq;
import com.muyu.domain.req.ActivityInfoSkuAddReq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
*
*
* @author: CuiFu Bo
* @create: 2024-11-22 20:37
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivitySkuModel {
List<ActivityInfoSkuAddReq> activityInfoAdd;
public static ActivitySkuModel activitySkuModel(ActivityInfoAddReq req){
return ActivitySkuModel.builder()
.activityInfoAdd(req.getSkuList())
.build();
}
}

View File

@ -1,110 +0,0 @@
package com.muyu.domain.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.domain.ActivityTeamInfo;
import com.muyu.domain.req.ActivityInfoAddReq;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.util.Date;
import java.util.List;
/**
*
*
* @author: CuiFu Bo
* @create: 2024-11-22 16:48
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityTeamInfoAddModel {
/**
* iD
*/
private Long productId;
/**
*
*/
private String productImage;
/**
*
*/
private String imageList;
/**
*
*/
private String name;
/**
*
*/
private String introduction;
/**
*
*/
private String unit;
/**
*
*/
private String imagesList;
/**
*
*/
private Date endTime;
/**
*
*/
private String strategyType;
/**
*ID
*/
private Long strategyId;
/**
*
*/
private long sort;
/**
*
*/
private String status;
/**
*
*/
private String content;
public static ActivityTeamInfoAddModel activityTeamInfoAddModel (ActivityInfoAddReq req){
return ActivityTeamInfoAddModel.builder()
.productImage(req.getProductImage())
.name(req.getName())
.introduction(req.getIntroduction())
.unit(req.getUnit())
.imagesList(req.getImagesList())
.endTime(req.getEndTime())
.strategyType(req.getStrategyType())
.strategyId(req.getStrategyId())
.sort(req.getSort())
.content(req.getContent())
.build();
}
public ActivityTeamInfo activityTeamInfoAdd(){
return ActivityTeamInfo.builder()
.productImage(this.getProductImage())
.name(this.getName())
.introduction(this.getIntroduction())
.unit(this.getUnit())
.imageList(this.getImagesList())
.endTime(this.getEndTime())
.strategyType(this.getStrategyType())
.strategyId(this.getStrategyId())
.sort(this.getSort())
.content(this.getContent())
.build();
}
}

View File

@ -1,50 +0,0 @@
package com.muyu.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
*
* @author: CuiFu Bo
* @create: 2024-11-21 16:07
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TeamDiscountPriceModel {
/**
*
*/
private BigDecimal teamPrice;
/**
*
*/
private BigDecimal productPrice;
/**
*
*/
private Double discount;
/**
*
* @param
* @param teamPrice
* @return
*/
public static TeamDiscountPriceModel of(BigDecimal price, BigDecimal teamPrice){
return TeamDiscountPriceModel.builder()
.productPrice(price)
.teamPrice(teamPrice)
.discount(price.subtract(teamPrice).divide(price,2, RoundingMode.HALF_EVEN).doubleValue())
.build();
}
}

View File

@ -1,73 +0,0 @@
package com.muyu.domain.req;
import com.muyu.domain.model.ActivitySkuModel;
import com.muyu.domain.model.ActivityTeamInfoAddModel;
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-22 20:48
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityInfoAddReq {
/**
* ID
*/
private Long productId;
/**
*
*/
private String productImage;
/**
*
*/
private String name;
/**
*
*/
private String introduction;
/**
*
*/
private String unit;
/**
*
*/
private String imagesList;
/**
*
*/
private Date endTime;
/**
*
*/
private String strategyType;
/**
*ID
*/
private Long strategyId;
/**
*
*/
private long sort;
/**
*
*/
private String content;
/**
*
*/
private List<ActivityInfoSkuAddReq> skuList;
}

View File

@ -1,34 +0,0 @@
package com.muyu.domain.req;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* Sku
*
* @author: CuiFu Bo
* @create: 2024-11-23 01:18
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityInfoSkuAddReq {
/**
*
*/
private String productSku;
/**
*
*/
private BigDecimal teamPrice;
/**
*
*/
private Long teamStock;
}

View File

@ -1,92 +0,0 @@
package com.muyu.system.team.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dtflys.forest.annotation.Post;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.security.annotation.RequiresPermissions;
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;
/**
*
* @program: cloud-server
* @description:
* @author: CuiFu Bo
* @create: 2024-11-20 21:49
**/
@RestController
@RequestMapping("/team")
public class ActivityTeamInfoController {
@Resource
private ActivityTeamInfoService activityTeamInfoService;
/**
*
* @param teamInfoListReq
* @return
*/
@RequiresPermissions("marketing:marketing:list")
@PostMapping("/list")
public Result<TableDataInfo<TeamInfoListResp>> list(@RequestBody TeamInfoListReq teamInfoListReq){
TableDataInfo<ActivityTeamInfoListModel> tableDataInfo = activityTeamInfoService.query(teamInfoListReq.buildQueryModel());
List<TeamInfoListResp> listResp = tableDataInfo.getRows().stream().map(TeamInfoListResp::listModerBuild).toList();
return Result.success(
new TableDataInfo<>(){{
setRows(listResp);
setTotal(tableDataInfo.getTotal());
}}
);
}
/**
*
* @param activityTeamInfoSaveReq
* @return
*/
@RequiresPermissions("marketing:marketing:save")
@PostMapping("/save")
public Result<String> save(@RequestBody ActivityTeamInfoSaveReq activityTeamInfoSaveReq ) throws ParseException {
return activityTeamInfoService.save(activityTeamInfoSaveReq);
}
@PostMapping("/findById/{id}")
public Result<TeamInfoFindByIdResp> 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 ID
* @return
*/
@GetMapping("/ActivityTeamList/{id}")
public Result<List<ActivityTeamInfo>> teamList(@PathVariable("id") Long id){
List<ActivityTeamInfo> activityTeamInfoList= activityTeamInfoService.ActivityTeamList(id);
return Result.success(activityTeamInfoList);
}
}

View File

@ -1,22 +0,0 @@
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;
}

View File

@ -1,12 +0,0 @@
package com.muyu.system.team.controller;
/**
*
* @author: CuiFu Bo
* @create: 2024-11-20 21:50
**/
public class ActivityTeamProductSkuInfoController {
}

View File

@ -1,11 +0,0 @@
package com.muyu.system.team.controller;
/**
*
* @author: CuiFu Bo
* @create: 2024-11-20 21:51
**/
public class TeamStrategyExemptionController {
}

View File

@ -1,11 +0,0 @@
package com.muyu.system.team.controller;
/**
*
* @author: CuiFu Bo
* @create: 2024-11-20 21:51
**/
public class TeamStrategyExemptionHundredController {
}

View File

@ -1,11 +0,0 @@
package com.muyu.system.team.controller;
/**
*
* @author: CuiFu Bo
* @create: 2024-11-20 21:51
**/
public class TeamStrategyExemptionOrdinaryController {
}

View File

@ -1,18 +0,0 @@
package com.muyu.system.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.ActivityTeamInfo;
import net.minidev.json.writer.BeansMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: CuiFu Bo
* @create: 2024-11-20 20:41
**/
@Mapper
public interface ActivityTeamInfoMapper extends BaseMapper<ActivityTeamInfo> {
}

View File

@ -1,17 +0,0 @@
package com.muyu.system.team.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.TeamStrategyExemptionHundred;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: CuiFu Bo
* @create: 2024-11-20 20:47
**/
@Mapper
public interface TeamStrategyExemptionHundredMapper extends BaseMapper<TeamStrategyExemptionHundred> {
}

Some files were not shown because too many files have changed in this diff Show More