2204-11-20 (添加拼团)

yingxiao
笨蛋 2024-11-23 16:03:36 +08:00
parent ad07b4b025
commit e09cb28b9c
15 changed files with 240 additions and 96 deletions

View File

@ -16,6 +16,7 @@
<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>
<dependency> <dependency>
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>

View File

@ -4,17 +4,20 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import org.springframework.format.annotation.DateTimeFormat;
import java.awt.*; import java.awt.*;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.sql.Date;
import java.sql.Time; import java.sql.Time;
import java.util.Date;
import java.util.List; import java.util.List;
/** 商品拼团*/ /** 商品拼团*/
@ -22,17 +25,16 @@ import java.util.List;
@SuperBuilder @SuperBuilder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@TableName(value = "activity_team_info",autoResultMap = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ActivityTeamInfo", description = "商品拼团") @TableName("activity_team_info")
public class ActivityTeamInfo extends BaseEntity { public class ActivityTeamInfo extends BaseEntity {
@TableId(type = IdType.AUTO)
/** 主键*/ /** 主键*/
private long id; @TableId(type = IdType.AUTO)
private Long id;
/** 拼团名称*/ /** 拼团名称*/
private String name; private String name;
/** 商品ID*/ /** 商品ID*/
private long productId; private Long productId;
/** 商品活动图*/ /** 商品活动图*/
private String productImage; private String productImage;
/** 活动简介*/ /** 活动简介*/
@ -41,8 +43,9 @@ public class ActivityTeamInfo extends BaseEntity {
private String unit; private String unit;
/** 轮播图*/ /** 轮播图*/
private String imageList; private String imageList;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
/** 活动结束时间*/ /** 活动结束时间*/
private Timestamp endTime; private Date endTime;
/** 活动排序*/ /** 活动排序*/
private long sort; private long sort;
/** 活动详情*/ /** 活动详情*/
@ -52,5 +55,8 @@ public class ActivityTeamInfo extends BaseEntity {
/** 策略类型*/ /** 策略类型*/
private String strategyType; private String strategyType;
/** 策略ID*/ /** 策略ID*/
private long strategyId; private Long strategyId;
} }

View File

@ -10,11 +10,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import org.apache.poi.hpsf.Decimal;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.sql.Date;
import java.sql.Time;
/** 商品拼团规格信息*/ /** 商品拼团规格信息*/
@Data @Data
@SuperBuilder @SuperBuilder
@ -36,7 +32,7 @@ public class ActivityTeamProductSkuInfo extends BaseEntity {
/** 拼团库存*/ /** 拼团库存*/
private Long teamStock; private Long teamStock;
/** 拼团价格*/ /** 拼团价格*/
private BigDecimal teamPrice; private Decimal teamPrice;
} }

View File

@ -0,0 +1,70 @@
package com.muyu.marketing.domain.model;
import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.req.ActivityTeamInfoReq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.sql.Date;
import java.sql.Timestamp;
/**
* Model
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityTeamInfoAddModel {
/** 主键*/
private Long id;
/** 拼团名称*/
private String name;
/** 商品ID*/
private Long productId;
/** 商品活动图*/
private String productImage;
/** 活动简介*/
private String introduction;
/** 单位*/
private String unit;
/** 轮播图*/
private String imageList;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
/** 活动结束时间*/
private Date endTime;
/** 活动排序*/
private Long sort;
/** 活动详情*/
private String content;
/** 活动状态*/
private String status;
/** 策略类型*/
private String strategyType;
/** 策略ID*/
private Long strategyId;
/** 拼团活动对象*/
public static ActivityTeamInfo saveModelBuild(ActivityTeamInfoReq teamInfoReq) {
ActivityTeamInfo build = ActivityTeamInfo.builder()
.name(teamInfoReq.getActivityName())
.productId(teamInfoReq.getProjectId())
.productImage(teamInfoReq.getProjectImage())
.introduction(teamInfoReq.getActivities())
.unit(teamInfoReq.getProjectUnit())
.imageList(teamInfoReq.getCarouselImages())
.endTime(teamInfoReq.getEndTime())
.content(teamInfoReq.getGoodsDetails())
.strategyType(teamInfoReq.getStrategyType())
.strategyId(teamInfoReq.getStrategyId())
.build();
return build;
}
}

View File

@ -0,0 +1,44 @@
package com.muyu.marketing.domain.model;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.req.AddProjectSkuListReq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.poi.hpsf.Decimal;
/** 添加拼团商品规格Model*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ActivityTeamProductSkuInfoModel {
/** 主键*/
private Long id;
/** 活动ID*/
private Long teamId;
/** 商品ID*/
private Long productId;
/** 商品SKU*/
private String productSku;
/** 拼团库存*/
private String teamStock;
/** 拼团价格*/
private Decimal teamPrice;
/** * 拼团活动的商品规格*/
public static ActivityTeamProductSkuInfo saveModelBuild(Long projectId,Long goodsId,AddProjectSkuListReq skuInfo) {
ActivityTeamProductSkuInfo build = ActivityTeamProductSkuInfo.builder()
.teamId(projectId)
.productId(goodsId)
.productSku(skuInfo.getProductSku())
.teamStock(0L)
.teamPrice(skuInfo.getTeamPrice())
.build();
return build;
}
}

View File

@ -13,7 +13,6 @@ import java.math.RoundingMode;
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class TeamProductDiscountPriceModel { public class TeamProductDiscountPriceModel {
/** 商品价格*/ /** 商品价格*/

View File

@ -1,52 +0,0 @@
package com.muyu.marketing.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.sql.Timestamp;
/**
* resp
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ActivityTeamInfoListReq", description = "拼团")
public class ActivityTeamInfoListReq {
@TableId(type = IdType.AUTO)
/** 主键*/
private long id;
/** 拼团名称*/
private String name;
/** 商品ID*/
private long productId;
/** 商品活动图*/
private String productImage;
/** 活动简介*/
private String introduction;
/** 单位*/
private String unit;
/** 轮播图*/
private String imageList;
/** 活动结束时间*/
private Timestamp endTime;
/** 活动排序*/
private long sort;
/** 活动详情*/
private String content;
/** 活动状态*/
private String status;
/** 策略类型*/
private String strategyType;
/** 策略ID*/
private long strategyId;
}

View File

@ -0,0 +1,62 @@
package com.muyu.marketing.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.springframework.format.annotation.DateTimeFormat;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
/**
* req
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ActivityTeamInfoListReq", description = "拼团")
public class ActivityTeamInfoReq {
private Long projectId;
/** 商品图片*/
private String projectImage;
/** 活动名称*/
private String activityName;
/** 活动介绍*/
private String activities;
/** 商品单位*/
private String projectUnit;
/** 轮播图*/
private String carouselImages;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
/** 结束时间*/
private Date endTime;
/** 拼团策略id*/
private Long strategyId;
/** 拼团策略类型*/
private String strategyType;
/** 商品规格List*/
private List<AddProjectSkuListReq> projectSkuList;
/** 全重*/
private Long weight;
/** 商品详情*/
private String goodsDetails;
}

View File

@ -11,7 +11,7 @@ import org.apache.poi.hpsf.Decimal;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
public class AddProjectSkuList { public class AddProjectSkuListReq {
/** 商品sku*/ /** 商品sku*/
private String productSku; private String productSku;
/** 拼团价格*/ /** 拼团价格*/

View File

@ -1,13 +1,13 @@
package com.muyu.marketing.domain.resp; package com.muyu.marketing.domain.resp;
import com.muyu.marketing.domain.req.AddProjectSkuList;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
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.format.annotation.DateTimeFormat;
import java.util.List; import java.util.Date;
/** /**
* Resp * Resp
@ -19,9 +19,11 @@ import java.util.List;
@ApiModel(value = "ActivityTeamInfoReq", description = "添加拼团") @ApiModel(value = "ActivityTeamInfoReq", description = "添加拼团")
public class ActivityTeamInfoAddResp { public class ActivityTeamInfoAddResp {
private Long id;
/** 商品id*/ /** 商品id*/
private Long projectId; private Long projectId;
/** 商品图片*/ /** 商品图片*/
private String projectImage; private String projectImage;
@ -36,6 +38,9 @@ public class ActivityTeamInfoAddResp {
/** 轮播图*/ /** 轮播图*/
private String carouselImages; private String carouselImages;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
/** 结束时间*/
private Date endTime;
/** 拼团策略id*/ /** 拼团策略id*/
private Long strategyId; private Long strategyId;
@ -44,7 +49,7 @@ public class ActivityTeamInfoAddResp {
private String strategyType; private String strategyType;
/** 商品规格List*/ /** 商品规格List*/
private List<AddProjectSkuList> projectSkuList; private String projectSkuList;
/** 全重*/ /** 全重*/
private Long weight; private Long weight;

View File

@ -48,10 +48,12 @@
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${dynamic-ds.version}</version> <version>${dynamic-ds.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId> <artifactId>muyu-product-cache</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>muyu-common-security</artifactId> <artifactId>muyu-common-security</artifactId>

View File

@ -3,12 +3,12 @@ package com.muyu.marketing.controller;
import com.muyu.common.core.domain.Result; 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.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
import com.muyu.marketing.domain.req.ActivityTeamInfoReq;
import com.muyu.marketing.domain.req.TeamInfoListReq; import com.muyu.marketing.domain.req.TeamInfoListReq;
import com.muyu.marketing.domain.resp.ActivityTeamInfoAddResp;
import com.muyu.marketing.service.ActivityTeamInfoService; import com.muyu.marketing.service.ActivityTeamInfoService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
* @author muyu * @author muyu
*/ */
@RestController @RestController
@RequestMapping("team") @RequestMapping("/team")
public class ActivityTeamInfoController { public class ActivityTeamInfoController {
@Autowired @Autowired
@ -46,9 +46,9 @@ public class ActivityTeamInfoController {
* *
*/ */
@ApiOperation("添加拼团") @ApiOperation("添加拼团")
@PostMapping("add") @PostMapping("/add")
public Result<String> add(@RequestBody ActivityTeamInfoAddResp activityTeamInfoAddResp) { public Result<String> add(@RequestBody ActivityTeamInfoReq activityTeamInfoReq) {
activityTeamInfoService.addActivityTeamInfo(activityTeamInfoAddResp); activityTeamInfoService.addActivityTeamInfo(activityTeamInfoReq);
return Result.success("创建成功"); return Result.success("创建成功");
} }

View File

@ -5,6 +5,7 @@ import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
import com.muyu.marketing.domain.req.ActivityTeamInfoReq;
import com.muyu.marketing.domain.resp.ActivityTeamInfoAddResp; import com.muyu.marketing.domain.resp.ActivityTeamInfoAddResp;
@ -22,7 +23,7 @@ public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> {
/** /**
* *
*/ */
void addActivityTeamInfo(ActivityTeamInfoAddResp activityTeamInfoAddResp); void addActivityTeamInfo(ActivityTeamInfoReq activityTeamInfoReq);
} }

View File

@ -6,13 +6,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoAddModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
import com.muyu.marketing.domain.resp.ActivityTeamInfoAddResp; import com.muyu.marketing.domain.model.ActivityTeamProductSkuInfoModel;
import com.muyu.marketing.domain.req.ActivityTeamInfoReq;
import com.muyu.marketing.domain.req.AddProjectSkuListReq;
import com.muyu.marketing.mapper.ActivityTeamInfoMapper; import com.muyu.marketing.mapper.ActivityTeamInfoMapper;
import com.muyu.marketing.mapper.ActivityTeamProductSkuInfoMapper;
import com.muyu.marketing.service.ActivityTeamInfoService; import com.muyu.marketing.service.ActivityTeamInfoService;
import com.muyu.marketing.service.ActivityTeamOpenInfoService; import com.muyu.marketing.service.ActivityTeamOpenInfoService;
import com.muyu.marketing.service.ActivityTeamProductSkuInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -33,6 +37,8 @@ implements ActivityTeamInfoService {
@Autowired @Autowired
private ActivityTeamOpenInfoService activityTeamOpenInfoService; private ActivityTeamOpenInfoService activityTeamOpenInfoService;
@Autowired
private ActivityTeamProductSkuInfoMapper activityTeamProductSkuInfoMapper;
/** /**
* *
*/ */
@ -80,24 +86,29 @@ implements ActivityTeamInfoService {
* *
*/ */
@Override @Override
public void addActivityTeamInfo(ActivityTeamInfoAddResp addResp) { public void addActivityTeamInfo(ActivityTeamInfoReq activityTeamInfoReq) {
//查询 商品 ActivityTeamInfo activityTeamInfo = ActivityTeamInfoAddModel.saveModelBuild(activityTeamInfoReq);
ActivityTeamInfo build = ActivityTeamInfo.builder() boolean save = this.save(activityTeamInfo);
.name(addResp.getActivityName())
.productId(addResp.getProjectId()) //添加 拼团规格表
.productImage(addResp.getProjectImage()) if (save){
.introduction(addResp.getCarouselImages()) Long projectId = activityTeamInfo.getId();//活动id
.unit(addResp.getProjectUnit()) Long goodsId = activityTeamInfo.getProductId();
.imageList(addResp.getCarouselImages()) List<AddProjectSkuListReq> skuList = activityTeamInfoReq.getProjectSkuList();
.strategyType(addResp.getStrategyType())
.strategyId(addResp.getStrategyId()) skuList.forEach(skuInfo->{
.build(); ActivityTeamProductSkuInfoModel.saveModelBuild(projectId,goodsId,skuInfo);
});
}
activityTeamInfoMapper.insert(build);
} }
} }

View File

@ -1,12 +1,11 @@
# Tomcat # Tomcat
server: server:
port: 9204 port: 9204
# Spring # Spring
spring: spring:
application: application:
# 应用名称 # 应用名称
name: marketing-server name: muyu-marketing
profiles: profiles:
# 环境配置 # 环境配置
active: dev active: dev