feat:拼团信息
parent
a6235a7e35
commit
e08cf5c2a9
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"商品id": "Long",
|
||||||
|
"商品图片": "String",
|
||||||
|
"活动名称":"String",
|
||||||
|
"活动简介": "String",
|
||||||
|
"商品单位":"String",
|
||||||
|
"商品轮播图数组": [
|
||||||
|
"String","String"
|
||||||
|
],
|
||||||
|
"策略id":"Long",
|
||||||
|
"规格集合": [
|
||||||
|
{
|
||||||
|
"规格sku":"String",
|
||||||
|
"拼团价":"BigDecimal",
|
||||||
|
"拼团库存":"Long"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"详情":"text"
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.muyu.common.core.enums.activity.team;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 参团类型枚举类
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-21 11:39
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
public enum TeamOpenInfoEnum {
|
||||||
|
OPEN_TEAM("open_team","开团"),
|
||||||
|
IN_TEAM("in_team","参团")
|
||||||
|
;
|
||||||
|
private final String code;
|
||||||
|
private final String label;
|
||||||
|
|
||||||
|
TeamOpenInfoEnum(String code, String label) {
|
||||||
|
this.code = code;
|
||||||
|
this.label = label;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String code() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String label() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.muyu.common.core.web.model;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.muyu.common.core.web.page.PageDomain;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 列表查询模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-20 20:28
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class QueryModel<T> {
|
||||||
|
/**
|
||||||
|
* 当前记录起始索引
|
||||||
|
*/
|
||||||
|
private Integer pageNum;
|
||||||
|
/**
|
||||||
|
* 每页显示记录数
|
||||||
|
*/
|
||||||
|
private Integer pageSize;
|
||||||
|
/**
|
||||||
|
* 排序列
|
||||||
|
*/
|
||||||
|
private String orderByColumn;
|
||||||
|
/**
|
||||||
|
* 排序的方向
|
||||||
|
*/
|
||||||
|
private boolean isAsc= true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建分页对象
|
||||||
|
* @param pageDomain
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public T domainBuild(PageDomain pageDomain){
|
||||||
|
this.isAsc="asc".equals(pageDomain.getIsAsc()) ? true : false;
|
||||||
|
this.orderByColumn=pageDomain.getOrderByColumn();
|
||||||
|
this.pageNum=pageDomain.getPageNum();
|
||||||
|
this.pageSize=pageDomain.getPageSize();
|
||||||
|
return (T) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建分页查询对象
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public <T> Page<T> buildPage(){
|
||||||
|
Page<T> page = Page.of(this.getPageNum(), this.getPageSize());
|
||||||
|
page.setOrders(List.of(this.isAsc() ? OrderItem.asc(this.getOrderByColumn()) : OrderItem.asc(this.getOrderByColumn())));
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,20 @@
|
||||||
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 lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页数据
|
* 分页数据
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
public class PageDomain {
|
public class PageDomain {
|
||||||
/**
|
/**
|
||||||
* 当前记录起始索引
|
* 当前记录起始索引
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 18080
|
port: 8080
|
||||||
|
|
||||||
# Spring
|
# Spring
|
||||||
spring:
|
spring:
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-group</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>muyu-group-common</artifactId>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product-common</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- 系统公共核心包 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-core</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,34 @@
|
||||||
|
package com.muyu.group.domain;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 拼团商品规格
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-23 17:33
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class ActivitySkuInfo {
|
||||||
|
/**
|
||||||
|
* 商品规格属性
|
||||||
|
*/
|
||||||
|
private String productSku;
|
||||||
|
/**
|
||||||
|
* 拼团价格
|
||||||
|
*/
|
||||||
|
private BigDecimal teamPrice;
|
||||||
|
/**
|
||||||
|
*拼团库存
|
||||||
|
*/
|
||||||
|
private Long teamStock;
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
package com.muyu.group.domain;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import com.muyu.group.domain.model.GroupActivityModel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode()
|
||||||
|
@TableName(value = "activity_team_info",autoResultMap = true)
|
||||||
|
public class ActivityTeamInfo extends BaseEntity {
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@NotNull(message = "主键不能为空")
|
||||||
|
private long id;
|
||||||
|
/**
|
||||||
|
* 拼团名称
|
||||||
|
*/
|
||||||
|
@NotNull(message = "拼团名称不能为空")
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 商品ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "商品ID不能为空")
|
||||||
|
private long productId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品活动图
|
||||||
|
*/
|
||||||
|
@NotNull(message = "商品活动图不能为空")
|
||||||
|
private String productImage;
|
||||||
|
/**
|
||||||
|
* 活动简介
|
||||||
|
*/
|
||||||
|
@NotNull(message = "活动简介不能为空")
|
||||||
|
private String introduction;
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
@NotNull(message = "单位不能为空")
|
||||||
|
private String unit;
|
||||||
|
/**
|
||||||
|
* 轮播图
|
||||||
|
*/
|
||||||
|
@NotNull(message = "轮播图不能为空")
|
||||||
|
private String imageList;
|
||||||
|
/**
|
||||||
|
* 活动结束时间
|
||||||
|
*/
|
||||||
|
@NotNull(message = "活动结束时间不能为空")
|
||||||
|
private Date endTime;
|
||||||
|
/**
|
||||||
|
* 活动排序
|
||||||
|
*/
|
||||||
|
@NotNull(message = "活动排序不能为空")
|
||||||
|
private long sort;
|
||||||
|
/**
|
||||||
|
* 活动详情
|
||||||
|
*/
|
||||||
|
@NotNull(message = "活动详情不能为空")
|
||||||
|
private String content;
|
||||||
|
/**
|
||||||
|
* 活动状态
|
||||||
|
*/
|
||||||
|
@NotNull(message = "活动状态不能为空")
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 策略类型
|
||||||
|
*/
|
||||||
|
private String strategyType;
|
||||||
|
/**
|
||||||
|
* 策略ID
|
||||||
|
*/
|
||||||
|
private long strategyId;
|
||||||
|
public static ActivityTeamInfo inBuild(GroupActivityModel groupActivityModel){
|
||||||
|
return ActivityTeamInfo.builder()
|
||||||
|
.name(groupActivityModel.getName())
|
||||||
|
.productId(groupActivityModel.getProductId())
|
||||||
|
.productImage(groupActivityModel.getImage())
|
||||||
|
.introduction(groupActivityModel.getIntroduction())
|
||||||
|
.unit(groupActivityModel.getUnit())
|
||||||
|
.imageList(groupActivityModel.getImageList())
|
||||||
|
.endTime(groupActivityModel.getEndTime())
|
||||||
|
.sort(groupActivityModel.getSort())
|
||||||
|
.content(groupActivityModel.getContent())
|
||||||
|
.status(groupActivityModel.getStatus())
|
||||||
|
.strategyType(groupActivityModel.getStrategyType())
|
||||||
|
.strategyId(groupActivityModel.getStrategyId())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 商品拼团信息模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-22 11:22
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class ActivityProductListModel extends BaseEntity {
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 商品图片
|
||||||
|
*/
|
||||||
|
private String image;
|
||||||
|
/**
|
||||||
|
* 商品轮播图
|
||||||
|
*/
|
||||||
|
private String carouselImages;
|
||||||
|
/**
|
||||||
|
* 规格id
|
||||||
|
*/
|
||||||
|
private Long ruleId;
|
||||||
|
public static ActivityProductListModel infoBuild(ProjectInfo projectInfo){
|
||||||
|
return ActivityProductListModel.builder()
|
||||||
|
.id(projectInfo.getId())
|
||||||
|
.carouselImages(projectInfo.getCarouselImages())
|
||||||
|
.image(projectInfo.getImage())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import com.muyu.group.domain.ActivityTeamInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 团购活动列表查询结果模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-20 23:35
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class ActivityTeamInfoListModel {
|
||||||
|
private Long id;
|
||||||
|
private String name;
|
||||||
|
private String productImage;
|
||||||
|
private BigDecimal productPrice;
|
||||||
|
private BigDecimal teamPrice;
|
||||||
|
private Long attendNumber;
|
||||||
|
private Long openTeamNumber;
|
||||||
|
private Long addTeamNumber;
|
||||||
|
private Long teamStock;
|
||||||
|
private Long remainStock;
|
||||||
|
private Date endTime;
|
||||||
|
private String status;
|
||||||
|
public static ActivityTeamInfoListModel infoBuild(ActivityTeamInfo activityTeamInfo, Function<ActivityTeamInfoListModel.ActivityTeamInfoListModelBuilder,ActivityTeamInfoListModel> function){
|
||||||
|
return function.apply(
|
||||||
|
ActivityTeamInfoListModel.builder()
|
||||||
|
.id(activityTeamInfo.getId())
|
||||||
|
.name(activityTeamInfo.getName())
|
||||||
|
.endTime(activityTeamInfo.getEndTime())
|
||||||
|
.productImage(activityTeamInfo.getProductImage())
|
||||||
|
.status(activityTeamInfo.getStatus())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import com.muyu.common.core.web.model.QueryModel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 团购活动列表查询模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-20 20:09
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class ActivityTeamInfoListQueryModel extends QueryModel<ActivityTeamInfoListQueryModel> {
|
||||||
|
/**
|
||||||
|
* 搜索关键词
|
||||||
|
*/
|
||||||
|
private String keyWord;
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import com.muyu.group.domain.ActivitySkuInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 拼团活动模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-23 15:21
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class GroupActivityModel {
|
||||||
|
/**
|
||||||
|
* 拼团名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 商品ID
|
||||||
|
*/
|
||||||
|
private Long productId;
|
||||||
|
/**
|
||||||
|
* 商品活动图
|
||||||
|
*/
|
||||||
|
private String image;
|
||||||
|
/**
|
||||||
|
* 活动简介
|
||||||
|
*/
|
||||||
|
private String introduction;
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String unit;
|
||||||
|
/**
|
||||||
|
* 轮播图
|
||||||
|
*/
|
||||||
|
private String imageList;
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private Date endTime;
|
||||||
|
/**
|
||||||
|
* 活动排序
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
/**
|
||||||
|
* 活动详情
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
/**
|
||||||
|
* 活动状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 策略类型
|
||||||
|
*/
|
||||||
|
private String strategyType;
|
||||||
|
/**
|
||||||
|
* 策略id
|
||||||
|
*/
|
||||||
|
private Long strategyId;
|
||||||
|
/**
|
||||||
|
* 活动时间
|
||||||
|
*/
|
||||||
|
private Date activeTime;
|
||||||
|
/**
|
||||||
|
* 拼团时效
|
||||||
|
*/
|
||||||
|
private Long groupAging;
|
||||||
|
/**
|
||||||
|
* 拼团人数
|
||||||
|
*/
|
||||||
|
private Long groupNumber;
|
||||||
|
/**
|
||||||
|
* 最大购买数量
|
||||||
|
*/
|
||||||
|
private Long maxBuy;
|
||||||
|
/**
|
||||||
|
* 单次购买数量
|
||||||
|
*/
|
||||||
|
private Long oneBuy;
|
||||||
|
/**
|
||||||
|
* 虚拟人数
|
||||||
|
*/
|
||||||
|
private Long virtualNumber;
|
||||||
|
/**
|
||||||
|
* 商品规格
|
||||||
|
*/
|
||||||
|
private List<ActivitySkuInfo> projectSkuInfoList;
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import com.muyu.group.domain.ActivitySkuInfo;
|
||||||
|
import com.muyu.group.domain.ActivityTeamProductSkuInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 商品规格模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-23 17:23
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class GroupActivitySkuInfoModel {
|
||||||
|
/**
|
||||||
|
* 商品规格属性
|
||||||
|
*/
|
||||||
|
private String productSku;
|
||||||
|
/**
|
||||||
|
* 拼团价格
|
||||||
|
*/
|
||||||
|
private BigDecimal groupPrice;
|
||||||
|
/**
|
||||||
|
*拼团库存
|
||||||
|
*/
|
||||||
|
private Long groupStock;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 团购活动价格模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-21 15:28
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class TeamDiscountPriceModel {
|
||||||
|
/**
|
||||||
|
* 拼团价格
|
||||||
|
*/
|
||||||
|
private BigDecimal teamPrice;
|
||||||
|
/**
|
||||||
|
* 商品价格
|
||||||
|
*/
|
||||||
|
private BigDecimal productPrice;
|
||||||
|
/**
|
||||||
|
* 优惠力度
|
||||||
|
*/
|
||||||
|
private Double discount;
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 商品库存模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-21 16:49
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class TeamStockModel {
|
||||||
|
/**
|
||||||
|
* 拼团库存
|
||||||
|
*/
|
||||||
|
private Long teamStock;
|
||||||
|
/**
|
||||||
|
* 剩余库存
|
||||||
|
*/
|
||||||
|
private Long remainStock;
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionHundred;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName(value = "team_strategy_exemption_hundred",autoResultMap = true)
|
||||||
|
public class TeamStrategyExemptionHundredModel extends BaseEntity {
|
||||||
|
/**
|
||||||
|
* 持续时间
|
||||||
|
*/
|
||||||
|
private long duration;
|
||||||
|
/**
|
||||||
|
* 最大购买量
|
||||||
|
*/
|
||||||
|
private long maxBuy;
|
||||||
|
/**
|
||||||
|
* 单次购买量
|
||||||
|
*/
|
||||||
|
private long oneBuy;
|
||||||
|
/**
|
||||||
|
* 虚拟人数
|
||||||
|
*/
|
||||||
|
private long virtualNumber;
|
||||||
|
//普通团
|
||||||
|
public static TeamStrategyExemptionHundredModel normalBuild(GroupActivityModel groupActivityModel){
|
||||||
|
return TeamStrategyExemptionHundredModel.builder()
|
||||||
|
.duration(groupActivityModel.getGroupAging())
|
||||||
|
.maxBuy(groupActivityModel.getMaxBuy())
|
||||||
|
.oneBuy(groupActivityModel.getOneBuy())
|
||||||
|
.virtualNumber(groupActivityModel.getVirtualNumber())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName(value = "team_strategy_exemption",autoResultMap = true)
|
||||||
|
public class TeamStrategyExemptionModel extends BaseEntity {
|
||||||
|
/**
|
||||||
|
* 持续时间
|
||||||
|
*/
|
||||||
|
private long duration;
|
||||||
|
/**
|
||||||
|
* 免单人数
|
||||||
|
*/
|
||||||
|
private long exemptionNumber;
|
||||||
|
/**
|
||||||
|
* 最大购买量
|
||||||
|
*/
|
||||||
|
private long maxBuy;
|
||||||
|
/**
|
||||||
|
* 单次购买量
|
||||||
|
*/
|
||||||
|
private long oneBuy;
|
||||||
|
/**
|
||||||
|
* 虚拟人数
|
||||||
|
*/
|
||||||
|
private long virtualNumber;
|
||||||
|
|
||||||
|
//免单团
|
||||||
|
public static TeamStrategyExemptionModel freeBuild(GroupActivityModel groupActivityModel){
|
||||||
|
return TeamStrategyExemptionModel.builder()
|
||||||
|
.exemptionNumber(groupActivityModel.getVirtualNumber())
|
||||||
|
.duration(groupActivityModel.getGroupAging())
|
||||||
|
.maxBuy(groupActivityModel.getMaxBuy())
|
||||||
|
.oneBuy(groupActivityModel.getOneBuy())
|
||||||
|
.virtualNumber(groupActivityModel.getGroupNumber())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionOrdinary;
|
||||||
|
import com.muyu.group.domain.req.GroupActivityInfoReq;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName(value = "team_strategy_exemption_ordinary",autoResultMap = true)
|
||||||
|
public class TeamStrategyExemptionOrdinaryModel extends BaseEntity {
|
||||||
|
/**
|
||||||
|
* 持续时间
|
||||||
|
*/
|
||||||
|
private long duration;
|
||||||
|
/**
|
||||||
|
* 成团人数
|
||||||
|
*/
|
||||||
|
private long teamNumber;
|
||||||
|
/**
|
||||||
|
* 最大购买量
|
||||||
|
*/
|
||||||
|
private long maxBuy;
|
||||||
|
/**
|
||||||
|
* 单次购买量
|
||||||
|
*/
|
||||||
|
private long oneBuy;
|
||||||
|
/**
|
||||||
|
* 虚拟人数
|
||||||
|
*/
|
||||||
|
private long virtualNumber;
|
||||||
|
//百人团
|
||||||
|
public static TeamStrategyExemptionOrdinaryModel techBuild(GroupActivityModel groupActivityModel) {
|
||||||
|
return TeamStrategyExemptionOrdinaryModel.builder()
|
||||||
|
.duration(groupActivityModel.getGroupAging())
|
||||||
|
.maxBuy(groupActivityModel.getMaxBuy())
|
||||||
|
.oneBuy(groupActivityModel.getOneBuy())
|
||||||
|
.virtualNumber(groupActivityModel.getVirtualNumber())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.muyu.group.domain.model;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 策略模型
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-23 15:55
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class TeamStrategyModel {
|
||||||
|
/**
|
||||||
|
* 活动时间
|
||||||
|
*/
|
||||||
|
private Date groupTime;
|
||||||
|
/**
|
||||||
|
* 拼团时效
|
||||||
|
*/
|
||||||
|
private Long groupAgeing;
|
||||||
|
/**
|
||||||
|
* 拼团人数
|
||||||
|
*/
|
||||||
|
private Long groupNumber;
|
||||||
|
/**
|
||||||
|
* 总购买数量
|
||||||
|
*/
|
||||||
|
private Long grossQuantity;
|
||||||
|
/**
|
||||||
|
* 单词购买数量
|
||||||
|
*/
|
||||||
|
private Long purchaseQuantity;
|
||||||
|
/**
|
||||||
|
* 补齐人数
|
||||||
|
*/
|
||||||
|
private Long replenishmentNumber;
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.muyu.group.domain.muen;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 参团类型枚举类
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-21 11:39
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
public enum TeamOpenInfoEnum {
|
||||||
|
OPEN_TEAM("open_team","开团"),
|
||||||
|
IN_TEAM("in_team","参团")
|
||||||
|
;
|
||||||
|
private final String code;
|
||||||
|
private final String label;
|
||||||
|
|
||||||
|
TeamOpenInfoEnum(String code, String label) {
|
||||||
|
this.code = code;
|
||||||
|
this.label = label;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String code() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String label() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,125 @@
|
||||||
|
package com.muyu.group.domain.req;
|
||||||
|
|
||||||
|
import com.muyu.group.domain.ActivitySkuInfo;
|
||||||
|
import com.muyu.group.domain.model.GroupActivityModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionHundredModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionOrdinaryModel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 拼团活动表
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-23 15:00
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
public class GroupActivityInfoReq {
|
||||||
|
/**
|
||||||
|
* 拼团名称
|
||||||
|
*/
|
||||||
|
private String groupName;
|
||||||
|
/**
|
||||||
|
* 商品ID
|
||||||
|
*/
|
||||||
|
private Long productId;
|
||||||
|
/**
|
||||||
|
* 商品活动图
|
||||||
|
*/
|
||||||
|
private String image;
|
||||||
|
/**
|
||||||
|
* 活动简介
|
||||||
|
*/
|
||||||
|
private String groupIntroduction;
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String unit;
|
||||||
|
/**
|
||||||
|
* 轮播图
|
||||||
|
*/
|
||||||
|
private String imageList;
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private Date endTime;
|
||||||
|
/**
|
||||||
|
* 活动排序
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
/**
|
||||||
|
* 活动详情
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
/**
|
||||||
|
* 活动状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 策略类型
|
||||||
|
*/
|
||||||
|
private String strategyType;
|
||||||
|
/**
|
||||||
|
* 活动时间
|
||||||
|
*/
|
||||||
|
private Date activeTime;
|
||||||
|
/**
|
||||||
|
* 拼团时效
|
||||||
|
*/
|
||||||
|
private Long groupAging;
|
||||||
|
/**
|
||||||
|
* 拼团人数
|
||||||
|
*/
|
||||||
|
private Long groupNumber;
|
||||||
|
/**
|
||||||
|
* 最大购买数量
|
||||||
|
*/
|
||||||
|
private Long maxBuy;
|
||||||
|
/**
|
||||||
|
* 单次购买数量
|
||||||
|
*/
|
||||||
|
private Long oneBuy;
|
||||||
|
/**
|
||||||
|
* 虚拟人数
|
||||||
|
*/
|
||||||
|
private Long virtualNumber;
|
||||||
|
/**
|
||||||
|
* 商品规格
|
||||||
|
*/
|
||||||
|
private List<ActivitySkuInfo> projectSkuInfoList;
|
||||||
|
|
||||||
|
public GroupActivityModel inBuild() {
|
||||||
|
return GroupActivityModel.builder()
|
||||||
|
.name(this.groupName)
|
||||||
|
.productId(this.productId)
|
||||||
|
.content(this.content)
|
||||||
|
.projectSkuInfoList(this.projectSkuInfoList)
|
||||||
|
.imageList(this.imageList)
|
||||||
|
.introduction(this.groupIntroduction)
|
||||||
|
.endTime(this.endTime)
|
||||||
|
.sort(this.sort)
|
||||||
|
.unit(this.unit)
|
||||||
|
.status(this.status)
|
||||||
|
.image(this.image)
|
||||||
|
.groupNumber(this.groupNumber)
|
||||||
|
.groupAging(this.groupAging)
|
||||||
|
.maxBuy(this.maxBuy)
|
||||||
|
.oneBuy(this.oneBuy)
|
||||||
|
.virtualNumber(this.virtualNumber)
|
||||||
|
.strategyType(this.strategyType)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.muyu.group.domain.req;
|
||||||
|
|
||||||
|
import com.muyu.common.core.web.page.PageDomain;
|
||||||
|
import com.muyu.group.domain.model.ActivityTeamInfoListQueryModel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 15442
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class TeamInfoReq extends PageDomain {
|
||||||
|
/**
|
||||||
|
* 搜索关键词
|
||||||
|
*/
|
||||||
|
private String keyWord;
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 团购活动列表模型
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ActivityTeamInfoListQueryModel queryModel(){
|
||||||
|
return ActivityTeamInfoListQueryModel.builder()
|
||||||
|
.keyWord(this.keyWord)
|
||||||
|
.status(this.status)
|
||||||
|
.build()
|
||||||
|
.domainBuild(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.muyu.group.domain.resp;
|
||||||
|
|
||||||
|
import com.muyu.group.domain.model.ActivityTeamInfoListModel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class TeamInfoListResp {
|
||||||
|
private Long id;
|
||||||
|
private String name;
|
||||||
|
private String productImage;
|
||||||
|
private BigDecimal productPrice;
|
||||||
|
private BigDecimal teamPrice;
|
||||||
|
private Long attendNumber;
|
||||||
|
private Long openTeamNumber;
|
||||||
|
private Long addTeamNumber;
|
||||||
|
private Long teamStock;
|
||||||
|
private Long remainStock;
|
||||||
|
private Date endTime;
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
public static TeamInfoListResp infoList(ActivityTeamInfoListModel activityTeamInfoListModel) {
|
||||||
|
return TeamInfoListResp.builder()
|
||||||
|
.name(activityTeamInfoListModel.getName())
|
||||||
|
.id(activityTeamInfoListModel.getId())
|
||||||
|
.addTeamNumber(activityTeamInfoListModel.getAddTeamNumber())
|
||||||
|
.attendNumber(activityTeamInfoListModel.getAttendNumber())
|
||||||
|
.openTeamNumber(activityTeamInfoListModel.getOpenTeamNumber())
|
||||||
|
.endTime(activityTeamInfoListModel.getEndTime())
|
||||||
|
.productImage(activityTeamInfoListModel.getProductImage())
|
||||||
|
.productPrice(activityTeamInfoListModel.getProductPrice())
|
||||||
|
.teamPrice(activityTeamInfoListModel.getTeamPrice())
|
||||||
|
.teamStock(activityTeamInfoListModel.getTeamStock())
|
||||||
|
.remainStock(activityTeamInfoListModel.getRemainStock())
|
||||||
|
.status(activityTeamInfoListModel.getStatus())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-group</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>muyu-group-remont</artifactId>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-system</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product-common</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,133 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-group</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>muyu-group-server</artifactId>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product-cache</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-group-common</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-group-remont</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.yulichang</groupId>
|
||||||
|
<artifactId>mybatis-plus-join-boot-starter</artifactId>
|
||||||
|
<version>1.4.11</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Nacos -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Nacos Config -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Sentinel -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringBoot Actuator -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Swagger UI -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
|
<version>${swagger.fox.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Mysql Connector -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common DataSource -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-datasource</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common DataScope -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-datascope</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common Log -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-log</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common Swagger -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-swagger</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product-server</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>${project.artifactId}</finalName>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- 加入maven deploy插件,当在deploy时,忽略些model-->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<skip>true</skip>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.muyu.activity;
|
||||||
|
|
||||||
|
import com.muyu.common.security.annotation.EnableCustomConfig;
|
||||||
|
import com.muyu.common.security.annotation.EnableMyFeignClients;
|
||||||
|
import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
/**
|
||||||
|
* @author 15442
|
||||||
|
*/
|
||||||
|
@EnableMyFeignClients
|
||||||
|
@EnableCustomConfig
|
||||||
|
@EnableCustomSwagger2
|
||||||
|
@SpringBootApplication
|
||||||
|
public class MuYuGroupApplication {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(MuYuGroupApplication.class);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
package com.muyu.activity.controller;
|
||||||
|
|
||||||
|
import com.dtflys.forest.annotation.Post;
|
||||||
|
import com.muyu.group.domain.model.ActivityTeamInfoListModel;
|
||||||
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
|
import com.muyu.group.domain.req.GroupActivityInfoReq;
|
||||||
|
import com.muyu.group.domain.req.TeamInfoReq;
|
||||||
|
import com.muyu.group.domain.resp.TeamInfoListResp;
|
||||||
|
import com.muyu.activity.service.ActivityTeamInfoService;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 营销团购活动控制层
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-20 21:40
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Log4j2
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/team")
|
||||||
|
public class ActivityTeamController {
|
||||||
|
|
||||||
|
public ActivityTeamController() {
|
||||||
|
log.info("控制层对象实例化:{}", getClass().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ActivityTeamInfoService activityTeamInfoService;
|
||||||
|
/**
|
||||||
|
* 查询拼团列表
|
||||||
|
* @param teamInfoReq
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/list")
|
||||||
|
public Result<TableDataInfo<TeamInfoListResp>> teamList(@RequestBody TeamInfoReq teamInfoReq){
|
||||||
|
TableDataInfo<ActivityTeamInfoListModel> modelTableDataInfo = activityTeamInfoService.query(teamInfoReq.queryModel());
|
||||||
|
List<ActivityTeamInfoListModel> listModelList = modelTableDataInfo.getRows();
|
||||||
|
List<TeamInfoListResp> listRespList = listModelList.stream().map(TeamInfoListResp::infoList).toList();
|
||||||
|
TableDataInfo<TeamInfoListResp> dataInfo = new TableDataInfo<>();
|
||||||
|
dataInfo.setRows(listRespList);
|
||||||
|
dataInfo.setTotal(modelTableDataInfo.getTotal());
|
||||||
|
return Result.success(dataInfo);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 添加拼团活动
|
||||||
|
*/
|
||||||
|
@PostMapping("/save")
|
||||||
|
public Result saveGroupActivity(@RequestBody GroupActivityInfoReq groupActivityInfoReq){
|
||||||
|
boolean success=activityTeamInfoService.seve(groupActivityInfoReq.inBuild());
|
||||||
|
if (success){
|
||||||
|
return Result.success("添加成功");
|
||||||
|
}
|
||||||
|
return Result.error("添加失败");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.muyu.activity.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.group.domain.ActivityTeamInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface ActivityTeamInfoMapper extends BaseMapper<ActivityTeamInfo> {
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.muyu.activity.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.group.domain.ActivityTeamOpenInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface ActivityTeamOpenInfoMapper extends BaseMapper<ActivityTeamOpenInfo> {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.muyu.activity.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.group.domain.ActivityTeamProductSkuInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface ActivityTeamProductSkuInfoMapper extends BaseMapper<ActivityTeamProductSkuInfo> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.muyu.activity.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionHundred;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface TeamStrategyExemptionHundredMapper extends BaseMapper<TeamStrategyExemptionHundred> {
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.muyu.activity.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemption;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface TeamStrategyExemptionMapper extends BaseMapper<TeamStrategyExemption> {
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.muyu.activity.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionOrdinary;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface TeamStrategyExemptionOrdinaryMapper extends BaseMapper<TeamStrategyExemptionOrdinary> {
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.muyu.activity.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.group.domain.ActivityTeamInfo;
|
||||||
|
import com.muyu.group.domain.model.ActivityProductListModel;
|
||||||
|
import com.muyu.group.domain.model.ActivityTeamInfoListModel;
|
||||||
|
import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
|
import com.muyu.group.domain.model.ActivityTeamInfoListQueryModel;
|
||||||
|
import com.muyu.group.domain.model.GroupActivityModel;
|
||||||
|
import com.muyu.group.domain.req.GroupActivityInfoReq;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> {
|
||||||
|
/**
|
||||||
|
* 通过查询查询团购活动
|
||||||
|
* @param teamInfoListQueryModel
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public TableDataInfo<ActivityTeamInfoListModel> query(ActivityTeamInfoListQueryModel teamInfoListQueryModel);
|
||||||
|
|
||||||
|
|
||||||
|
boolean seve(GroupActivityModel inBuild);
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package com.muyu.activity.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.group.domain.ActivityTeamOpenInfo;
|
||||||
|
import com.muyu.group.domain.muen.TeamOpenInfoEnum;
|
||||||
|
|
||||||
|
public interface ActivityTeamOpenInfoService extends IService<ActivityTeamOpenInfo> {
|
||||||
|
/**
|
||||||
|
* 根据活动id和团购类型查找开团和参团人数
|
||||||
|
* @param teamId
|
||||||
|
* @param teamOpenInfoEnum
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Long getTeamOpenByTeamIdAndType(Long teamId, TeamOpenInfoEnum teamOpenInfoEnum);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开团人数 open
|
||||||
|
*/
|
||||||
|
public default Long getTeamOpenTeamId(Long teamId){
|
||||||
|
return getTeamOpenByTeamIdAndType(teamId,TeamOpenInfoEnum.OPEN_TEAM);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 参团人数 in
|
||||||
|
*/
|
||||||
|
public default Long getTeamInTeamId(Long teamId){
|
||||||
|
return getTeamOpenByTeamIdAndType(teamId,TeamOpenInfoEnum.IN_TEAM);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package com.muyu.activity.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.group.domain.ActivityTeamProductSkuInfo;
|
||||||
|
import com.muyu.group.domain.model.GroupActivitySkuInfoModel;
|
||||||
|
import com.muyu.group.domain.model.TeamDiscountPriceModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStockModel;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface ActivityTeamProductSkuInfoService extends IService<ActivityTeamProductSkuInfo> {
|
||||||
|
/**
|
||||||
|
* 根据商品id查询拼团优惠力度最大的价格
|
||||||
|
* @param teamId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public TeamDiscountPriceModel getDisCountPrice(Long teamId);
|
||||||
|
/**
|
||||||
|
* 根据商品id查询剩余库存
|
||||||
|
*/
|
||||||
|
public TeamStockModel getStock(Long teamId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提取的共有方法
|
||||||
|
* @param teamId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public default List<ActivityTeamProductSkuInfo> ownedByAl(Long teamId){
|
||||||
|
//根据活动id查询
|
||||||
|
LambdaQueryWrapper<ActivityTeamProductSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ActivityTeamProductSkuInfo::getTeamId,teamId);
|
||||||
|
List<ActivityTeamProductSkuInfo> teamProductSkuInfoList = this.list(queryWrapper);
|
||||||
|
return teamProductSkuInfoList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.muyu.activity.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionHundred;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionHundredModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionOrdinaryModel;
|
||||||
|
|
||||||
|
public interface TeamStrategyExemptionHundredService extends IService<TeamStrategyExemptionHundred> {
|
||||||
|
/**
|
||||||
|
*添加百人策略
|
||||||
|
* @param normalBuild
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Long saveHuandrea(TeamStrategyExemptionHundredModel normalBuild);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.muyu.activity.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionOrdinary;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionHundredModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionOrdinaryModel;
|
||||||
|
|
||||||
|
public interface TeamStrategyExemptionOrdinaryService extends IService<TeamStrategyExemptionOrdinary> {
|
||||||
|
/**
|
||||||
|
*添加普通策略
|
||||||
|
* @param techBuild
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Long saveOrdinary(TeamStrategyExemptionOrdinaryModel techBuild);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.muyu.activity.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemption;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionModel;
|
||||||
|
|
||||||
|
public interface TeamStrategyExemptionService extends IService<TeamStrategyExemption> {
|
||||||
|
/**
|
||||||
|
* 添加免单策略返回id
|
||||||
|
* @param freeBuild
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Long saveStrategy(TeamStrategyExemptionModel freeBuild);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
package com.muyu.activity.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.activity.service.*;
|
||||||
|
import com.muyu.group.domain.ActivitySkuInfo;
|
||||||
|
import com.muyu.group.domain.ActivityTeamInfo;
|
||||||
|
import com.muyu.group.domain.ActivityTeamProductSkuInfo;
|
||||||
|
import com.muyu.group.domain.model.*;
|
||||||
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
|
import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
|
import com.muyu.activity.mapper.ActivityTeamInfoMapper;
|
||||||
|
import com.muyu.group.domain.req.GroupActivityInfoReq;
|
||||||
|
import com.muyu.product.cache.ProjectSkuCache;
|
||||||
|
import com.muyu.product.cache.datasource.ProjectInfoData;
|
||||||
|
import com.muyu.product.cache.datasource.ProjectSkuData;
|
||||||
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
|
import com.muyu.product.domain.ProjectSkuInfo;
|
||||||
|
import org.checkerframework.checker.units.qual.A;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ActivityTeamInfoServiceImpl extends ServiceImpl<ActivityTeamInfoMapper, ActivityTeamInfo> implements ActivityTeamInfoService {
|
||||||
|
@Autowired
|
||||||
|
private ActivityTeamProductSkuInfoService activityTeamProductSkuInfoService;
|
||||||
|
@Autowired
|
||||||
|
private ActivityTeamOpenInfoService activityTeamOpenInfoService;
|
||||||
|
@Autowired
|
||||||
|
private TeamStrategyExemptionHundredService teamStrategyExemptionHundredService;
|
||||||
|
@Autowired
|
||||||
|
private TeamStrategyExemptionOrdinaryService teamStrategyExemptionOrdinaryService;;
|
||||||
|
@Autowired
|
||||||
|
private TeamStrategyExemptionService teamStrategyExemptionService;
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<ActivityTeamInfoListModel> query(ActivityTeamInfoListQueryModel model){
|
||||||
|
LambdaQueryWrapper<ActivityTeamInfo> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.like(StringUtils.isNotEmpty(model.getKeyWord()), ActivityTeamInfo::getName, model.getKeyWord());
|
||||||
|
wrapper.like(StringUtils.isNotEmpty(model.getStatus()), ActivityTeamInfo::getStatus, model.getStatus());
|
||||||
|
Page<ActivityTeamInfo> infoPage = this.page(model.buildPage(), wrapper);
|
||||||
|
List<ActivityTeamInfo> activityTeamInfos = infoPage.getRecords();
|
||||||
|
List<ActivityTeamInfoListModel> activityTeamInfoListModelList = activityTeamInfos.stream().map(activityTeamInfo -> ActivityTeamInfoListModel.infoBuild(activityTeamInfo,
|
||||||
|
(activityTeamInfoListModelBuilder) -> {
|
||||||
|
Long teamInTeamId = activityTeamOpenInfoService.getTeamInTeamId(activityTeamInfo.getId());
|
||||||
|
Long teamOpenTeamId = activityTeamOpenInfoService.getTeamOpenTeamId(activityTeamInfo.getId());
|
||||||
|
TeamDiscountPriceModel disCountPrice = activityTeamProductSkuInfoService.getDisCountPrice(activityTeamInfo.getId());
|
||||||
|
TeamStockModel stock = activityTeamProductSkuInfoService.getStock(activityTeamInfo.getId());
|
||||||
|
return activityTeamInfoListModelBuilder.teamStock(stock.getTeamStock())
|
||||||
|
.teamPrice(disCountPrice.getTeamPrice())
|
||||||
|
.openTeamNumber(teamOpenTeamId)
|
||||||
|
.addTeamNumber(teamInTeamId)
|
||||||
|
.productPrice(disCountPrice.getProductPrice())
|
||||||
|
.attendNumber(teamInTeamId+teamOpenTeamId)
|
||||||
|
.remainStock(stock.getRemainStock())
|
||||||
|
.build();
|
||||||
|
})).toList();
|
||||||
|
TableDataInfo<ActivityTeamInfoListModel> modelTableDataInfo = new TableDataInfo<>();
|
||||||
|
modelTableDataInfo.setTotal(infoPage.getTotal());
|
||||||
|
modelTableDataInfo.setRows(activityTeamInfoListModelList);
|
||||||
|
return modelTableDataInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加拼团活动详细信息
|
||||||
|
* @param inBuild
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean seve(GroupActivityModel inBuild) {
|
||||||
|
//添加策略返回主键
|
||||||
|
//免单
|
||||||
|
if (inBuild.getStrategyType().equals("免单")){
|
||||||
|
Long noOrderPolicyId = teamStrategyExemptionService.saveStrategy(TeamStrategyExemptionModel.freeBuild(inBuild));
|
||||||
|
if (null!=noOrderPolicyId){
|
||||||
|
inBuild.setStrategyId(noOrderPolicyId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//百人
|
||||||
|
if (inBuild.getStrategyType().equals("百人")){
|
||||||
|
Long hundredManStrategyId =teamStrategyExemptionHundredService.saveHuandrea(TeamStrategyExemptionHundredModel.normalBuild(inBuild));
|
||||||
|
if (null!=hundredManStrategyId){
|
||||||
|
inBuild.setStrategyId(hundredManStrategyId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//普通
|
||||||
|
if (inBuild.getStrategyType().equals("普通")){
|
||||||
|
Long commonStrategyId= teamStrategyExemptionOrdinaryService.saveOrdinary(TeamStrategyExemptionOrdinaryModel.techBuild(inBuild));
|
||||||
|
if (null!=commonStrategyId){
|
||||||
|
inBuild.setStrategyId(commonStrategyId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//添加商品拼团
|
||||||
|
ActivityTeamInfo activityTeamInfo = ActivityTeamInfo.inBuild(inBuild);
|
||||||
|
boolean save = this.save(activityTeamInfo);
|
||||||
|
if (save){
|
||||||
|
//添过规格
|
||||||
|
List<ActivitySkuInfo> productSkuList = inBuild.getProjectSkuInfoList();
|
||||||
|
ActivityTeamProductSkuInfo productSkuInfo = new ActivityTeamProductSkuInfo();
|
||||||
|
productSkuList.forEach(activitySkuInfo -> {
|
||||||
|
productSkuInfo.setTeamId(activityTeamInfo.getId());
|
||||||
|
productSkuInfo.setProductSku(activitySkuInfo.getProductSku());
|
||||||
|
productSkuInfo.setProductId(inBuild.getProductId());
|
||||||
|
productSkuInfo.setTeamPrice(activitySkuInfo.getTeamPrice());
|
||||||
|
productSkuInfo.setTeamStock(activitySkuInfo.getTeamStock());
|
||||||
|
});
|
||||||
|
activityTeamProductSkuInfoService.save(productSkuInfo);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.muyu.activity.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.group.domain.ActivityTeamOpenInfo;
|
||||||
|
import com.muyu.group.domain.muen.TeamOpenInfoEnum;
|
||||||
|
import com.muyu.activity.mapper.ActivityTeamOpenInfoMapper;
|
||||||
|
import com.muyu.activity.service.ActivityTeamOpenInfoService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: cloud-server
|
||||||
|
* @description: 团购活动
|
||||||
|
* @author: MengFanKuo
|
||||||
|
* @create: 2024-11-21 10:35
|
||||||
|
* *
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ActivityTeamOpenInfoServiceImpl extends ServiceImpl<ActivityTeamOpenInfoMapper, ActivityTeamOpenInfo> implements ActivityTeamOpenInfoService {
|
||||||
|
/**
|
||||||
|
* 根据活动id 和团购类型查找 团购活动执行表 开团和参团人数
|
||||||
|
* @param teamId
|
||||||
|
* @param teamOpenInfoEnum
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long getTeamOpenByTeamIdAndType(Long teamId, TeamOpenInfoEnum teamOpenInfoEnum) {
|
||||||
|
LambdaQueryWrapper<ActivityTeamOpenInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ActivityTeamOpenInfo::getTeamId,teamId);
|
||||||
|
queryWrapper.eq(ActivityTeamOpenInfo::getTeamType,teamOpenInfoEnum.code());
|
||||||
|
return this.count(queryWrapper);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
package com.muyu.activity.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.group.domain.ActivityTeamProductSkuInfo;
|
||||||
|
import com.muyu.group.domain.model.TeamDiscountPriceModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStockModel;
|
||||||
|
import com.muyu.common.core.exception.ServiceException;
|
||||||
|
import com.muyu.activity.mapper.ActivityTeamProductSkuInfoMapper;
|
||||||
|
import com.muyu.activity.service.ActivityTeamProductSkuInfoService;
|
||||||
|
import com.muyu.product.cache.ProjectSkuCache;
|
||||||
|
import com.muyu.product.domain.ProjectSkuInfo;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityTeamProductSkuInfoMapper, ActivityTeamProductSkuInfo> implements ActivityTeamProductSkuInfoService {
|
||||||
|
@Autowired
|
||||||
|
private ProjectSkuCache projectSkuCache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据活动id查询商品价格
|
||||||
|
* @param teamId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TeamDiscountPriceModel getDisCountPrice(Long teamId) {
|
||||||
|
//根据活动id查询
|
||||||
|
List<ActivityTeamProductSkuInfo> activityTeamProductSkuInfoList = this.ownedByAl(teamId);
|
||||||
|
if (activityTeamProductSkuInfoList.size()>0){
|
||||||
|
Optional<TeamDiscountPriceModel> discountPriceModel = activityTeamProductSkuInfoList.stream().map(activityTeamProductSkuInfo -> {
|
||||||
|
ProjectSkuInfo projectSkuInfo = projectSkuCache.get(activityTeamProductSkuInfo.getProductId(), activityTeamProductSkuInfo.getProductSku());
|
||||||
|
return TeamDiscountPriceModel.of(projectSkuInfo.getPrice(), activityTeamProductSkuInfo.getTeamPrice());
|
||||||
|
}).min((o1, o2) -> Double.valueOf(o2.getDiscount() * 100 - o1.getDiscount() * 100).intValue());
|
||||||
|
if (discountPriceModel.isEmpty()){
|
||||||
|
throw new ServiceException("活动下没有这个商品");
|
||||||
|
}
|
||||||
|
return discountPriceModel.get();
|
||||||
|
}
|
||||||
|
return TeamDiscountPriceModel.builder()
|
||||||
|
.productPrice(BigDecimal.valueOf(0.00))
|
||||||
|
.teamPrice(BigDecimal.valueOf(0.00))
|
||||||
|
.discount(0.00)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据活动id查询商品库存
|
||||||
|
* @param teamId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TeamStockModel getStock(Long teamId) {
|
||||||
|
List<ActivityTeamProductSkuInfo> activityTeamProductSkuInfoList = this.ownedByAl(teamId);
|
||||||
|
return TeamStockModel.builder()
|
||||||
|
.teamStock(activityTeamProductSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getTeamStock).reduce(0L,Long::sum))
|
||||||
|
.remainStock(activityTeamProductSkuInfoList.stream().map(ActivityTeamProductSkuInfo::getRemainStock).reduce(0L,Long::sum))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.muyu.activity.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionHundred;
|
||||||
|
import com.muyu.activity.mapper.TeamStrategyExemptionHundredMapper;
|
||||||
|
import com.muyu.activity.service.TeamStrategyExemptionHundredService;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionOrdinary;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionHundredModel;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionOrdinaryModel;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class TeamStrategyExemptionHundredServiceImpl extends ServiceImpl<TeamStrategyExemptionHundredMapper, TeamStrategyExemptionHundred> implements TeamStrategyExemptionHundredService {
|
||||||
|
/**
|
||||||
|
* 添加普通策略返回主键
|
||||||
|
* @param normalBuild
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long saveHuandrea(TeamStrategyExemptionHundredModel normalBuild) {
|
||||||
|
TeamStrategyExemptionHundred teamStrategyExemptionHundred = TeamStrategyExemptionHundred.normalBuild(normalBuild);
|
||||||
|
this.save(teamStrategyExemptionHundred);
|
||||||
|
return teamStrategyExemptionHundred.getId();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.muyu.activity.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionHundred;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemptionOrdinary;
|
||||||
|
import com.muyu.activity.mapper.TeamStrategyExemptionOrdinaryMapper;
|
||||||
|
import com.muyu.activity.service.TeamStrategyExemptionOrdinaryService;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionOrdinaryModel;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class TeamStrategyExemptionOrdinaryServiceImpl extends ServiceImpl<TeamStrategyExemptionOrdinaryMapper, TeamStrategyExemptionOrdinary> implements TeamStrategyExemptionOrdinaryService {
|
||||||
|
/**
|
||||||
|
* 添加普通策略返回主键
|
||||||
|
* @param techBuild
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long saveOrdinary(TeamStrategyExemptionOrdinaryModel techBuild) {
|
||||||
|
TeamStrategyExemptionOrdinary teamStrategyExemptionOrdinary = TeamStrategyExemptionOrdinary.normalBuild(techBuild);
|
||||||
|
this.save(teamStrategyExemptionOrdinary);
|
||||||
|
return teamStrategyExemptionOrdinary.getId();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.muyu.activity.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.group.domain.TeamStrategyExemption;
|
||||||
|
import com.muyu.activity.mapper.TeamStrategyExemptionMapper;
|
||||||
|
import com.muyu.activity.service.TeamStrategyExemptionService;
|
||||||
|
import com.muyu.group.domain.model.TeamStrategyExemptionModel;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class TeamStrategyExemptionServiceImpl extends ServiceImpl<TeamStrategyExemptionMapper, TeamStrategyExemption> implements TeamStrategyExemptionService {
|
||||||
|
/**
|
||||||
|
* 添加策略返回id
|
||||||
|
* @param freeBuild
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long saveStrategy(TeamStrategyExemptionModel freeBuild) {
|
||||||
|
TeamStrategyExemption teamStrategyExemption = TeamStrategyExemption.freeBuild(freeBuild);
|
||||||
|
this.save(teamStrategyExemption);
|
||||||
|
return teamStrategyExemption.getId();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
Spring Boot Version: ${spring-boot.version}
|
||||||
|
Spring Application Name: ${spring.application.name}
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Tomcat
|
||||||
|
server:
|
||||||
|
port: 9309
|
||||||
|
|
||||||
|
# Spring
|
||||||
|
spring:
|
||||||
|
application:
|
||||||
|
# 应用名称
|
||||||
|
name: muyu-group
|
||||||
|
profiles:
|
||||||
|
# 环境配置
|
||||||
|
active: dev
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
discovery:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: 123.249.122.74:8848
|
||||||
|
namespace: mall
|
||||||
|
config:
|
||||||
|
# 配置中心地址
|
||||||
|
server-addr: 123.249.122.74:8848
|
||||||
|
namespace: mall
|
||||||
|
# 配置文件格式
|
||||||
|
file-extension: yml
|
||||||
|
# 共享配置
|
||||||
|
shared-configs:
|
||||||
|
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
com.muyu.activity.mapper: DEBUG
|
|
@ -0,0 +1,74 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="logs/muyu-product"/>
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/info.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.muyu" level="info"/>
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn"/>
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info"/>
|
||||||
|
<appender-ref ref="file_error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.group.mapper.ActivityTeamInfoMapper">
|
||||||
|
|
||||||
|
</mapper>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.group.mapper.ActivityTeamOpenInfoMapper">
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.group.mapper.ActivityTeamProductSkuInfoMapper">
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.group.mapper.TeamStrategyExemptionHundredMapper">
|
||||||
|
|
||||||
|
</mapper>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.group.mapper.TeamStrategyExemptionMapper">
|
||||||
|
|
||||||
|
</mapper>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.group.mapper.TeamStrategyExemptionOrdinaryMapper">
|
||||||
|
|
||||||
|
</mapper>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-modules</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>muyu-group</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<modules>
|
||||||
|
<module>muyu-group-common</module>
|
||||||
|
<module>muyu-group-remont</module>
|
||||||
|
<module>muyu-group-server</module>
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
|
@ -65,4 +65,8 @@ public class ProjectInfoCache extends CacheAbs<Long, ProjectInfo> {
|
||||||
public ProjectInfo defaultValue () {
|
public ProjectInfo defaultValue () {
|
||||||
return new ProjectInfo();
|
return new ProjectInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Object getPro(Long id) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,6 @@ public class ProjectSkuDataRemoteImpl implements ProjectSkuData {
|
||||||
if (Result.isError(projectListResult)){
|
if (Result.isError(projectListResult)){
|
||||||
return new HashMap<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ProjectSkuInfo> projectSkuInfoList = projectListResult.getData();
|
List<ProjectSkuInfo> projectSkuInfoList = projectListResult.getData();
|
||||||
return projectSkuInfoList.stream()
|
return projectSkuInfoList.stream()
|
||||||
.collect(Collectors.toMap(ProjectSkuInfo::getSku, projectSkuInfo -> projectSkuInfo));
|
.collect(Collectors.toMap(ProjectSkuInfo::getSku, projectSkuInfo -> projectSkuInfo));
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.muyu.product.domain;
|
package com.muyu.product.domain;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
@ -53,7 +54,6 @@ public class AsProductAttributeInfo extends BaseEntity {
|
||||||
@Excel(name = "属性值")
|
@Excel(name = "属性值")
|
||||||
@ApiModelProperty(name = "属性值", value = "属性值", required = true)
|
@ApiModelProperty(name = "属性值", value = "属性值", required = true)
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
public static AsProductAttributeInfo attrValueModelBuild(AttrValueModel attrValueModel, Supplier<Long> projectId){
|
public static AsProductAttributeInfo attrValueModelBuild(AttrValueModel attrValueModel, Supplier<Long> projectId){
|
||||||
return AsProductAttributeInfo.builder()
|
return AsProductAttributeInfo.builder()
|
||||||
.productId(projectId.get())
|
.productId(projectId.get())
|
||||||
|
|
|
@ -54,11 +54,10 @@ public class AttributeInfo extends BaseEntity {
|
||||||
public TemplateAttributeModel buildTemplateModel(){
|
public TemplateAttributeModel buildTemplateModel(){
|
||||||
return TemplateAttributeModel.builder()
|
return TemplateAttributeModel.builder()
|
||||||
.id(this.getId())
|
.id(this.getId())
|
||||||
.code(this.getCode())
|
|
||||||
.name(this.getName())
|
.name(this.getName())
|
||||||
|
.code(this.getCode())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询构造器
|
* 查询构造器
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -90,7 +90,6 @@ public class ProjectInfo extends BaseEntity {
|
||||||
@Excel(name = "品牌")
|
@Excel(name = "品牌")
|
||||||
@ApiModelProperty(name = "品牌", value = "品牌")
|
@ApiModelProperty(name = "品牌", value = "品牌")
|
||||||
private Long brandId;
|
private Long brandId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询构造器
|
* 查询构造器
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,6 +2,8 @@ package com.muyu.product.domain.model;
|
||||||
|
|
||||||
import com.muyu.common.core.utils.StringUtils;
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import com.muyu.product.domain.AsCategoryAttribute;
|
||||||
|
import com.muyu.product.domain.AsProductAttributeInfo;
|
||||||
import com.muyu.product.domain.AttributeGroup;
|
import com.muyu.product.domain.AttributeGroup;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -34,7 +36,6 @@ public class TemplateAttributeGroupModel extends BaseEntity {
|
||||||
* 属性组下属性集合
|
* 属性组下属性集合
|
||||||
*/
|
*/
|
||||||
private List<TemplateAttributeModel> attributeList;
|
private List<TemplateAttributeModel> attributeList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否有效
|
* 是否有效
|
||||||
* @return
|
* @return
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.muyu.product.domain.model;
|
package com.muyu.product.domain.model;
|
||||||
|
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import com.muyu.product.domain.AsProductAttributeInfo;
|
||||||
import com.muyu.product.domain.AttributeInfo;
|
import com.muyu.product.domain.AttributeInfo;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -8,6 +9,8 @@ import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author DongZl
|
* @author DongZl
|
||||||
* @description: 共有属性
|
* @description: 共有属性
|
||||||
|
@ -35,11 +38,14 @@ public class TemplateAttributeModel extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
|
private String value;
|
||||||
|
private List<AsProductAttributeInfo> attributeInfoList;
|
||||||
public static TemplateAttributeModel attributeInfoBuild(AttributeInfo attributeInfo){
|
public static TemplateAttributeModel attributeInfoBuild(AttributeInfo attributeInfo){
|
||||||
return TemplateAttributeModel.builder()
|
return TemplateAttributeModel.builder()
|
||||||
.id(attributeInfo.getId())
|
.id(attributeInfo.getId())
|
||||||
.name(attributeInfo.getName())
|
.name(attributeInfo.getName())
|
||||||
.code(attributeInfo.getCode())
|
.code(attributeInfo.getCode())
|
||||||
|
.attributeInfoList(attributeInfo.buildTemplateModel().getAttributeInfoList())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,5 +62,5 @@ public class ProjectInfoQueryReq extends BaseEntity {
|
||||||
/** 品牌 */
|
/** 品牌 */
|
||||||
@ApiModelProperty(name = "品牌", value = "品牌")
|
@ApiModelProperty(name = "品牌", value = "品牌")
|
||||||
private Long brandId;
|
private Long brandId;
|
||||||
|
private String [] proType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,4 @@ public class CategoryCommonElementResp extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
private List<TemplateAttributeModel> attributeList;
|
private List<TemplateAttributeModel> attributeList;
|
||||||
|
|
||||||
/**
|
|
||||||
* 级联
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,25 +40,22 @@ public class ProjectDetailResp {
|
||||||
/**
|
/**
|
||||||
* 商品Sku集合
|
* 商品Sku集合
|
||||||
*/
|
*/
|
||||||
private List<ProjectSkuInfo> projectSkuInfoList;
|
private List<ProjectSkuInfo> projectSkuInfoList; //projectSkuInfoList
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品和属性集合
|
* 商品和属性集合
|
||||||
*/
|
*/
|
||||||
private List<AsProductAttributeInfo> productAttributeInfoList;
|
private List<AsProductAttributeInfo> productAttributeInfoList; //productAttributeInfoList
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品规格
|
* 商品规格
|
||||||
*/
|
*/
|
||||||
private List<RuleAttrAddModel> ruleAttrModelList;
|
private List<RuleAttrAddModel> ruleAttrModelList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 属性集合
|
* 属性集合
|
||||||
*/
|
*/
|
||||||
private List<TemplateAttributeModel> attributeInfoList;
|
private List<TemplateAttributeModel> attributeInfoList;//templateAttributeList
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 属性组集合
|
* 属性组集合
|
||||||
*/
|
*/
|
||||||
private List<TemplateAttributeGroupModel> attributeGroupList;
|
private List<TemplateAttributeGroupModel> attributeGroupList;//templateAttributeGroupList
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.muyu.product.domain.resp;
|
||||||
|
|
||||||
|
import com.muyu.product.domain.AsProductAttributeInfo;
|
||||||
|
import com.muyu.product.domain.ProjectSkuInfo;
|
||||||
|
import com.muyu.product.domain.model.TemplateAttributeModel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
@SuperBuilder
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class ProjectSkuInfoResp {
|
||||||
|
/**
|
||||||
|
* 商品Sku集合
|
||||||
|
*/
|
||||||
|
private List<ProjectSkuInfo> projectSkuInfoList; //projectSkuInfoList
|
||||||
|
/**
|
||||||
|
* 商品和属性集合
|
||||||
|
*/
|
||||||
|
private List<AsProductAttributeInfo> productAttributeInfoList; //productAttributeInfoList
|
||||||
|
}
|
|
@ -66,7 +66,6 @@ public class AttributeGroupController extends BaseController {
|
||||||
ExcelUtil<AttributeGroup> util = new ExcelUtil<AttributeGroup>(AttributeGroup.class);
|
ExcelUtil<AttributeGroup> util = new ExcelUtil<AttributeGroup>(AttributeGroup.class);
|
||||||
util.exportExcel(response, list, "属性组数据");
|
util.exportExcel(response, list, "属性组数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 获取属性组详细信息
|
// * 获取属性组详细信息
|
||||||
// */
|
// */
|
||||||
|
|
|
@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import com.muyu.product.cache.ProjectInfoCache;
|
import com.muyu.product.cache.ProjectInfoCache;
|
||||||
import com.muyu.product.domain.resp.ProjectDetailResp;
|
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||||
|
import com.muyu.product.domain.resp.ProjectSkuInfoResp;
|
||||||
import io.swagger.annotations.*;
|
import io.swagger.annotations.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
@ -69,6 +70,7 @@ public class ProjectInfoController extends BaseController {
|
||||||
util.exportExcel(response, list, "商品信息数据");
|
util.exportExcel(response, list, "商品信息数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取商品信息详细信息
|
* 获取商品信息详细信息
|
||||||
*/
|
*/
|
||||||
|
@ -101,7 +103,16 @@ public class ProjectInfoController extends BaseController {
|
||||||
public Result<ProjectDetailResp> getDetailInfo(@PathVariable("id") Long id) {
|
public Result<ProjectDetailResp> getDetailInfo(@PathVariable("id") Long id) {
|
||||||
return Result.success(projectInfoService.getDetailInfo(id));
|
return Result.success(projectInfoService.getDetailInfo(id));
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 获取商品信息详细信息
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取商品信息详细信息")
|
||||||
|
@RequiresPermissions("product:info:query")
|
||||||
|
@GetMapping(value = "/getProductInfo/{id}")
|
||||||
|
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
|
||||||
|
public Result<ProjectSkuInfoResp> getProductInfo(@PathVariable("id") Long id) {
|
||||||
|
return Result.success(projectInfoService.getProductInfo(id));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 新增商品信息
|
* 新增商品信息
|
||||||
*/
|
*/
|
||||||
|
@ -124,7 +135,6 @@ public class ProjectInfoController extends BaseController {
|
||||||
projectInfoService.updateProductById(id,projectInfoSaveReq);
|
projectInfoService.updateProductById(id,projectInfoSaveReq);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除商品信息
|
* 删除商品信息
|
||||||
*/
|
*/
|
||||||
|
@ -136,4 +146,15 @@ public class ProjectInfoController extends BaseController {
|
||||||
public Result<String> remove(@PathVariable List<Long> ids) {
|
public Result<String> remove(@PathVariable List<Long> ids) {
|
||||||
return toAjax(projectInfoService.removeBatchByIds(ids));
|
return toAjax(projectInfoService.removeBatchByIds(ids));
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 获取商品列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("product:info:remove")
|
||||||
|
@Log(title = "商品信息", businessType = BusinessType.DELETE)
|
||||||
|
@GetMapping("/getProduct")
|
||||||
|
@ApiOperation("获取商品列表")
|
||||||
|
public Result<List<ProjectInfo>> getProduct() {
|
||||||
|
List<ProjectInfo> infoList = projectInfoService.list();
|
||||||
|
return Result.success(infoList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
||||||
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
||||||
import com.muyu.product.domain.resp.ProjectDetailResp;
|
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||||
|
import com.muyu.product.domain.resp.ProjectSkuInfoResp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品信息Service接口
|
* 商品信息Service接口
|
||||||
|
@ -43,4 +44,7 @@ public interface ProjectInfoService extends IService<ProjectInfo> {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
void updateProductById(Long id, ProjectInfoSaveReq projectInfoSaveReq);
|
void updateProductById(Long id, ProjectInfoSaveReq projectInfoSaveReq);
|
||||||
|
|
||||||
|
|
||||||
|
ProjectSkuInfoResp getProductInfo(Long id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,4 +33,7 @@ public interface ProjectSkuInfoService extends IService<ProjectSkuInfo> {
|
||||||
* @return 商品SKU信息
|
* @return 商品SKU信息
|
||||||
*/
|
*/
|
||||||
List<ProjectSkuInfo> listByProjectId (Long projectId);
|
List<ProjectSkuInfo> listByProjectId (Long projectId);
|
||||||
|
|
||||||
|
ProjectSkuInfo getByProduct(String productId, String productSku);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,8 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
|
||||||
private AttributeGroupService attributeGroupService;
|
private AttributeGroupService attributeGroupService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CategoryInfoMapper categoryInfoMapper;
|
private CategoryInfoMapper categoryInfoMapper;
|
||||||
|
@Autowired
|
||||||
|
private AsProductAttributeInfoService asProductAttributeInfoService;
|
||||||
/**
|
/**
|
||||||
* 查询品类信息列表
|
* 查询品类信息列表
|
||||||
*
|
*
|
||||||
|
@ -470,19 +472,23 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
|
||||||
templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream()// 过滤后的品类属性中间表的商品属性id查找商品属性
|
templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream()// 过滤后的品类属性中间表的商品属性id查找商品属性
|
||||||
.map(AttributeInfo::buildTemplateModel)
|
.map(AttributeInfo::buildTemplateModel)
|
||||||
.toList();
|
.toList();
|
||||||
|
//查询商品属性表
|
||||||
|
List<AsProductAttributeInfo> list = asProductAttributeInfoService.listByIds(templateAttributeIdList);
|
||||||
|
for (AsProductAttributeInfo asProductAttributeInfo : list) {
|
||||||
|
TemplateAttributeModel.builder()
|
||||||
|
.value(asProductAttributeInfo.getValue())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
List<TemplateAttributeModel> attributeModelList = new ArrayList<>();
|
List<TemplateAttributeModel> attributeModelList = new ArrayList<>();
|
||||||
|
|
||||||
if (!templateAttributeModelList.isEmpty()){
|
if (!templateAttributeModelList.isEmpty()){
|
||||||
attributeIdSet.addAll(
|
attributeIdSet.addAll(
|
||||||
templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList()//商品属性表id
|
templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList()//商品属性表id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
LambdaQueryWrapper<AttributeInfo> attributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<AttributeInfo> attributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
attributeInfoLambdaQueryWrapper.notIn(!attributeIdSet.isEmpty(), AttributeInfo::getId, attributeIdSet);
|
attributeInfoLambdaQueryWrapper.notIn(!attributeIdSet.isEmpty(), AttributeInfo::getId, attributeIdSet);
|
||||||
attributeModelList = attributeInfoService.list(attributeInfoLambdaQueryWrapper).stream().map(AttributeInfo::buildTemplateModel).toList();
|
attributeModelList = attributeInfoService.list(attributeInfoLambdaQueryWrapper).stream().map(AttributeInfo::buildTemplateModel).toList();
|
||||||
|
|
||||||
return CategoryCommonElementResp.builder()
|
return CategoryCommonElementResp.builder()
|
||||||
.templateAttributeGroupList(attributeGroupModelList)
|
.templateAttributeGroupList(attributeGroupModelList)
|
||||||
.templateAttributeList(templateAttributeModelList)
|
.templateAttributeList(templateAttributeModelList)
|
||||||
|
|
|
@ -10,9 +10,11 @@ import com.muyu.common.security.utils.SecurityUtils;
|
||||||
import com.muyu.product.domain.*;
|
import com.muyu.product.domain.*;
|
||||||
import com.muyu.product.domain.model.*;
|
import com.muyu.product.domain.model.*;
|
||||||
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
||||||
|
import com.muyu.product.domain.req.ProjectInfoQueryReq;
|
||||||
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
||||||
import com.muyu.product.domain.resp.CategoryCommonElementResp;
|
import com.muyu.product.domain.resp.CategoryCommonElementResp;
|
||||||
import com.muyu.product.domain.resp.ProjectDetailResp;
|
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||||
|
import com.muyu.product.domain.resp.ProjectSkuInfoResp;
|
||||||
import com.muyu.product.service.*;
|
import com.muyu.product.service.*;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -100,11 +102,6 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
||||||
if (ObjUtils.notNull(projectInfo.getBrandId())){
|
if (ObjUtils.notNull(projectInfo.getBrandId())){
|
||||||
queryWrapper.eq(ProjectInfo::getBrandId, projectInfo.getBrandId());
|
queryWrapper.eq(ProjectInfo::getBrandId, projectInfo.getBrandId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return list(queryWrapper);
|
return list(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +247,32 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
||||||
updProduct(id,projectInfoSaveReq);
|
updProduct(id,projectInfoSaveReq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据商品id查找属性信息
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProjectSkuInfoResp getProductInfo(Long id) {
|
||||||
|
//根据商品id查找商品属性
|
||||||
|
LambdaQueryWrapper<AsProductAttributeInfo> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(AsProductAttributeInfo::getProductId,id);
|
||||||
|
List<AsProductAttributeInfo> attributeInfoList = asProductAttributeInfoService.list(wrapper);
|
||||||
|
List<Long> infoList = attributeInfoList.stream().map(AsProductAttributeInfo::getAttributeId).toList();
|
||||||
|
//商品规格
|
||||||
|
LambdaQueryWrapper<ProjectSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(ProjectSkuInfo::getProjectId,id);
|
||||||
|
List<ProjectSkuInfo> skuInfoList = projectSkuInfoService.list(queryWrapper);
|
||||||
|
return ProjectSkuInfoResp.builder()
|
||||||
|
.projectSkuInfoList(skuInfoList)
|
||||||
|
.productAttributeInfoList(attributeInfoList)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
//修改商品属性中间表
|
//修改商品属性中间表
|
||||||
|
|
||||||
|
|
||||||
private void updProduct(Long id, ProjectInfoSaveReq projectInfoSaveReq) {
|
private void updProduct(Long id, ProjectInfoSaveReq projectInfoSaveReq) {
|
||||||
//删除商品属性中间表
|
//删除商品属性中间表
|
||||||
LambdaQueryWrapper<AsProductAttributeInfo> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<AsProductAttributeInfo> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
|
|
@ -88,4 +88,9 @@ public class ProjectSkuInfoServiceImpl extends ServiceImpl<ProjectSkuInfoMapper,
|
||||||
queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId);
|
queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId);
|
||||||
return this.list(queryWrapper);
|
return this.list(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProjectSkuInfo getByProduct(String productId, String productSku) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,14 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysConfig;
|
import com.muyu.system.domain.SysConfig;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author DongZl
|
* @author DongZl
|
||||||
* @description: 配置mybatis配置
|
* @description: 配置mybatis配置
|
||||||
* @Date 2023-11-13 上午 10:05
|
* @Date 2023-11-13 上午 10:05
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysConfigMapper extends BaseMapper<SysConfig> {
|
public interface SysConfigMapper extends BaseMapper<SysConfig> {
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysDept;
|
import com.muyu.common.system.domain.SysDept;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysDeptMapper extends BaseMapper<SysDept> {
|
public interface SysDeptMapper extends BaseMapper<SysDept> {
|
||||||
/**
|
/**
|
||||||
* 查询部门管理数据
|
* 查询部门管理数据
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysDictData;
|
import com.muyu.common.system.domain.SysDictData;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysDictDataMapper extends BaseMapper<SysDictData> {
|
public interface SysDictDataMapper extends BaseMapper<SysDictData> {
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询字典数据
|
* 根据条件分页查询字典数据
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysDictType;
|
import com.muyu.common.system.domain.SysDictType;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysDictTypeMapper extends BaseMapper<SysDictType> {
|
public interface SysDictTypeMapper extends BaseMapper<SysDictType> {
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询字典类型
|
* 根据条件分页查询字典类型
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysDistrict;
|
import com.muyu.common.system.domain.SysDistrict;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地域地区Mapper接口
|
* 地域地区Mapper接口
|
||||||
|
@ -9,6 +10,7 @@ import com.muyu.common.system.domain.SysDistrict;
|
||||||
* @author DongZeLiang
|
* @author DongZeLiang
|
||||||
* @date 2024-04-11
|
* @date 2024-04-11
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysDistrictMapper extends BaseMapper<SysDistrict> {
|
public interface SysDistrictMapper extends BaseMapper<SysDistrict> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysLogininfor;
|
import com.muyu.common.system.domain.SysLogininfor;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysLogininforMapper extends BaseMapper<SysLogininfor> {
|
public interface SysLogininforMapper extends BaseMapper<SysLogininfor> {
|
||||||
/**
|
/**
|
||||||
* 新增系统登录日志
|
* 新增系统登录日志
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysMenu;
|
import com.muyu.system.domain.SysMenu;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||||
/**
|
/**
|
||||||
* 查询系统菜单列表
|
* 查询系统菜单列表
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysNotice;
|
import com.muyu.system.domain.SysNotice;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysNoticeMapper extends BaseMapper<SysNotice> {
|
public interface SysNoticeMapper extends BaseMapper<SysNotice> {
|
||||||
/**
|
/**
|
||||||
* 查询公告信息
|
* 查询公告信息
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysOperLog;
|
import com.muyu.common.system.domain.SysOperLog;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysOperLogMapper extends BaseMapper<SysOperLog> {
|
public interface SysOperLogMapper extends BaseMapper<SysOperLog> {
|
||||||
/**
|
/**
|
||||||
* 新增操作日志
|
* 新增操作日志
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysPost;
|
import com.muyu.system.domain.SysPost;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysPostMapper extends BaseMapper<SysPost> {
|
public interface SysPostMapper extends BaseMapper<SysPost> {
|
||||||
/**
|
/**
|
||||||
* 查询岗位数据集合
|
* 查询岗位数据集合
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysRoleDept;
|
import com.muyu.system.domain.SysRoleDept;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysRoleDeptMapper extends BaseMapper<SysRoleDept> {
|
public interface SysRoleDeptMapper extends BaseMapper<SysRoleDept> {
|
||||||
/**
|
/**
|
||||||
* 通过角色ID删除角色和部门关联
|
* 通过角色ID删除角色和部门关联
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysRole;
|
import com.muyu.common.system.domain.SysRole;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysRoleMapper extends BaseMapper<SysRole> {
|
public interface SysRoleMapper extends BaseMapper<SysRole> {
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询角色数据
|
* 根据条件分页查询角色数据
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysRoleMenu;
|
import com.muyu.system.domain.SysRoleMenu;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
|
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
|
||||||
/**
|
/**
|
||||||
* 查询菜单使用数量
|
* 查询菜单使用数量
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.system.domain.SysUser;
|
import com.muyu.common.system.domain.SysUser;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysUserMapper extends BaseMapper<SysUser> {
|
public interface SysUserMapper extends BaseMapper<SysUser> {
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询用户列表
|
* 根据条件分页查询用户列表
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysUserPost;
|
import com.muyu.system.domain.SysUserPost;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysUserPostMapper extends BaseMapper<SysUserPost> {
|
public interface SysUserPostMapper extends BaseMapper<SysUserPost> {
|
||||||
/**
|
/**
|
||||||
* 通过用户ID删除用户和岗位关联
|
* 通过用户ID删除用户和岗位关联
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.muyu.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.system.domain.SysUserRole;
|
import com.muyu.system.domain.SysUserRole;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
|
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
|
||||||
/**
|
/**
|
||||||
* 通过用户ID删除用户和角色关联
|
* 通过用户ID删除用户和角色关联
|
||||||
|
|
|
@ -28,3 +28,4 @@ spring:
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
com.muyu.system.mapper: DEBUG
|
com.muyu.system.mapper: DEBUG
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<module>muyu-file</module>
|
<module>muyu-file</module>
|
||||||
<module>muyu-product</module>
|
<module>muyu-product</module>
|
||||||
<module>muyu-shop-cart</module>
|
<module>muyu-shop-cart</module>
|
||||||
|
<module>muyu-group</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<artifactId>muyu-modules</artifactId>
|
<artifactId>muyu-modules</artifactId>
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
<version>3.6.3</version>
|
<version>3.6.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>muyu-monitor</module>
|
<module>muyu-monitor</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
Loading…
Reference in New Issue