From e667f6e4612123a1441f33c9a882b2124018a4dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B4=94=E7=A6=8F=E6=B3=A2?= <14587188+cui-fubo@user.noreply.gitee.com> Date: Fri, 15 Nov 2024 11:55:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=93=81=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu-group-buy-common/pom.xml | 27 ++++ .../com/muyu/product/domain/GroupBuy.java | 109 +++++++++++++++ .../product/domain/req/GroupBuyEditReq.java | 50 +++++++ .../product/domain/req/GroupBuyQueryReq.java | 50 +++++++ .../product/domain/req/GroupBuySaveReq.java | 60 +++++++++ .../muyu-group-buy-remote/pom.xml | 27 ++++ .../remote/RemoteProjectInfoService.java | 29 ++++ .../remote/RemoteProjectSkuService.java | 42 ++++++ .../product/remote/RemoteRuleAttrService.java | 34 +++++ .../product/remote/RemoteRuleService.java | 32 +++++ .../factory/RemoteProjectInfoFactory.java | 31 +++++ .../factory/RemoteProjectSkuFactory.java | 37 +++++ .../remote/factory/RemoteRuleAttrFactory.java | 34 +++++ .../remote/factory/RemoteRuleFactory.java | 31 +++++ ...ot.autoconfigure.AutoConfiguration.imports | 4 + .../muyu-group-buy-server/pom.xml | 127 ++++++++++++++++++ .../muyu/product/MuYuGroupBuyApplication.java | 23 ++++ .../controller/GroupBuyController.java | 111 +++++++++++++++ .../muyu/product/mapper/GroupBuyMapper.java | 15 +++ .../muyu/product/service/GroupBuyService.java | 22 +++ .../service/impl/GroupBuyServiceImpl.java | 56 ++++++++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 28 ++++ .../src/main/resources/logback.xml | 74 ++++++++++ .../main/resources/mapper/GroupBuyMapper.xml | 19 +++ muyu-modules/muyu-group-buy/pom.xml | 26 ++++ muyu-modules/muyu-group-buy/结构 | 26 ++++ .../domain/req/AttributeGroupEditReq.java | 3 +- .../domain/req/CategoryInfoEditReq.java | 15 +++ .../product/domain/req/RuleInfoEditReq.java | 5 + .../controller/CategoryInfoController.java | 10 +- .../controller/RuleInfoController.java | 5 +- .../product/mapper/CategoryInfoMapper.java | 6 + .../product/service/CategoryInfoService.java | 7 + .../muyu/product/service/RuleInfoService.java | 4 + .../impl/AsCategoryAttributeServiceImpl.java | 2 +- .../impl/AttributeGroupServiceImpl.java | 4 +- .../service/impl/CategoryInfoServiceImpl.java | 55 ++++++++ .../service/impl/RuleInfoServiceImpl.java | 18 +++ .../mapper/product/CategoryInfoMapper.xml | 7 + muyu-modules/pom.xml | 1 + 41 files changed, 1258 insertions(+), 10 deletions(-) create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-common/pom.xml create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/GroupBuy.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyEditReq.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyQueryReq.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuySaveReq.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/pom.xml create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectInfoService.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectSkuService.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleAttrService.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleService.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectInfoFactory.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectSkuFactory.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleAttrFactory.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleFactory.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/pom.xml create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/MuYuGroupBuyApplication.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/controller/GroupBuyController.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/mapper/GroupBuyMapper.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/GroupBuyService.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/impl/GroupBuyServiceImpl.java create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/banner.txt create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/bootstrap.yml create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/logback.xml create mode 100644 muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/mapper/GroupBuyMapper.xml create mode 100644 muyu-modules/muyu-group-buy/pom.xml create mode 100644 muyu-modules/muyu-group-buy/结构 diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-common/pom.xml b/muyu-modules/muyu-group-buy/muyu-group-buy-common/pom.xml new file mode 100644 index 0000000..5662a02 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-common/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.muyu + muyu-group-buy + 3.6.3 + + + muyu-group-buy-common + + + 17 + 17 + UTF-8 + + + + + + com.muyu + muyu-common-core + + + diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/GroupBuy.java b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/GroupBuy.java new file mode 100644 index 0000000..41f3671 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/GroupBuy.java @@ -0,0 +1,109 @@ +package com.muyu.product.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.annotation.Excel; +import com.muyu.product.domain.req.GroupBuyQueryReq; +import com.muyu.product.domain.req.GroupBuySaveReq; +import com.muyu.product.domain.req.GroupBuyEditReq; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 拼团对象 group_buy + * + * @author DongZeLiang + * @date 2024-11-14 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("group_buy") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "GroupBuy", description = "拼团") +public class GroupBuy extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 主键 */ + @TableId(value = "id",type = IdType.AUTO) + @ApiModelProperty(name = "主键", value = "主键") + private Long id; + + /** 外键,关联商品 */ + @Excel(name = "外键,关联商品") + @ApiModelProperty(name = "外键,关联商品", value = "外键,关联商品") + private Long projectId; + + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") + @ApiModelProperty(name = "开始时间", value = "开始时间") + private Date startTime; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd") + @ApiModelProperty(name = "结束时间", value = "结束时间") + private Date endTime; + + /** 最小成团人数 */ + @Excel(name = "最小成团人数") + @ApiModelProperty(name = "最小成团人数", value = "最小成团人数") + private String minMembers; + + /** 活动状态 */ + @Excel(name = "活动状态") + @ApiModelProperty(name = "活动状态", value = "活动状态") + private String status; + + /** + * 查询构造器 + */ + public static GroupBuy queryBuild( GroupBuyQueryReq groupBuyQueryReq){ + return GroupBuy.builder() + .projectId(groupBuyQueryReq.getProjectId()) + .startTime(groupBuyQueryReq.getStartTime()) + .endTime(groupBuyQueryReq.getEndTime()) + .minMembers(groupBuyQueryReq.getMinMembers()) + .status(groupBuyQueryReq.getStatus()) + .build(); + } + + /** + * 添加构造器 + */ + public static GroupBuy saveBuild(GroupBuySaveReq groupBuySaveReq){ + return GroupBuy.builder() + .projectId(groupBuySaveReq.getProjectId()) + .startTime(groupBuySaveReq.getStartTime()) + .endTime(groupBuySaveReq.getEndTime()) + .minMembers(groupBuySaveReq.getMinMembers()) + .status(groupBuySaveReq.getStatus()) + .build(); + } + + /** + * 修改构造器 + */ + public static GroupBuy editBuild(Long id, GroupBuyEditReq groupBuyEditReq){ + return GroupBuy.builder() + .id(id) + .projectId(groupBuyEditReq.getProjectId()) + .startTime(groupBuyEditReq.getStartTime()) + .endTime(groupBuyEditReq.getEndTime()) + .minMembers(groupBuyEditReq.getMinMembers()) + .status(groupBuyEditReq.getStatus()) + .build(); + } + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyEditReq.java b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyEditReq.java new file mode 100644 index 0000000..48642ea --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyEditReq.java @@ -0,0 +1,50 @@ +package com.muyu.product.domain.req; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 拼团对象 group_buy + * + * @author DongZeLiang + * @date 2024-11-14 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "GroupBuyEditReq", description = "拼团") +public class GroupBuyEditReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 外键,关联商品 */ + @ApiModelProperty(name = "外键,关联商品", value = "外键,关联商品") + private Long projectId; + + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(name = "开始时间", value = "开始时间") + private Date startTime; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(name = "结束时间", value = "结束时间") + private Date endTime; + + /** 最小成团人数 */ + @ApiModelProperty(name = "最小成团人数", value = "最小成团人数") + private String minMembers; + + /** 活动状态 */ + @ApiModelProperty(name = "活动状态", value = "活动状态") + private String status; + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyQueryReq.java b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyQueryReq.java new file mode 100644 index 0000000..76e3ec8 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuyQueryReq.java @@ -0,0 +1,50 @@ +package com.muyu.product.domain.req; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 拼团对象 group_buy + * + * @author DongZeLiang + * @date 2024-11-14 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "GroupBuyQueryReq", description = "拼团") +public class GroupBuyQueryReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 外键,关联商品 */ + @ApiModelProperty(name = "外键,关联商品", value = "外键,关联商品") + private Long projectId; + + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(name = "开始时间", value = "开始时间") + private Date startTime; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(name = "结束时间", value = "结束时间") + private Date endTime; + + /** 最小成团人数 */ + @ApiModelProperty(name = "最小成团人数", value = "最小成团人数") + private String minMembers; + + /** 活动状态 */ + @ApiModelProperty(name = "活动状态", value = "活动状态") + private String status; + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuySaveReq.java b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuySaveReq.java new file mode 100644 index 0000000..e8a9cdb --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-common/src/main/java/com/muyu/product/domain/req/GroupBuySaveReq.java @@ -0,0 +1,60 @@ +package com.muyu.product.domain.req; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 拼团对象 group_buy + * + * @author DongZeLiang + * @date 2024-11-14 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "GroupBuySaveReq", description = "拼团") +public class GroupBuySaveReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 主键 */ + + @ApiModelProperty(name = "主键", value = "主键") + private Long id; + + /** 外键,关联商品 */ + + @ApiModelProperty(name = "外键,关联商品", value = "外键,关联商品") + private Long projectId; + + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + + @ApiModelProperty(name = "开始时间", value = "开始时间") + private Date startTime; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + + @ApiModelProperty(name = "结束时间", value = "结束时间") + private Date endTime; + + /** 最小成团人数 */ + + @ApiModelProperty(name = "最小成团人数", value = "最小成团人数") + private String minMembers; + + /** 活动状态 */ + + @ApiModelProperty(name = "活动状态", value = "活动状态") + private String status; + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/pom.xml b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/pom.xml new file mode 100644 index 0000000..d45335c --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.muyu + muyu-group-buy + 3.6.3 + + + muyu-group-buy-remote + + + 17 + 17 + UTF-8 + + + + + + com.muyu + muyu-product-common + + + diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectInfoService.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectInfoService.java new file mode 100644 index 0000000..fd88ca8 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectInfoService.java @@ -0,0 +1,29 @@ +package com.muyu.product.remote; + +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectInfo; +import com.muyu.product.remote.factory.RemoteProjectInfoFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +/** + * @author DongZl + * @description: 规格远程调用业务层 + * @Date 2024-4-7 上午 10:58 + */ +@FeignClient( + contextId = "remoteProjectInfoService", + value = ServiceNameConstants.PRODUCT_SERVICE, + fallbackFactory = RemoteProjectInfoFactory.class, + path = "/info" +) +public interface RemoteProjectInfoService { + /** + * 获取商品信息详细信息 + */ + @GetMapping(value = "/{id}") + public Result getInfo(@PathVariable("id") Long id) ; + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectSkuService.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectSkuService.java new file mode 100644 index 0000000..177ced8 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteProjectSkuService.java @@ -0,0 +1,42 @@ +package com.muyu.product.remote; + +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.remote.factory.RemoteProjectSkuFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.util.List; + +/** + * @author DongZl + * @description: 远程调用业务层 + * @Date 2024-4-7 上午 10:58 + */ +@FeignClient( + contextId = "remoteProjectSkuService", + value = ServiceNameConstants.PRODUCT_SERVICE, + fallbackFactory = RemoteProjectSkuFactory.class, + path = "/sku" +) +public interface RemoteProjectSkuService { + + /** + * 通过商品ID和SKU获取SKU信息 + * @param projectId 商品ID + * @param projectSku 商品SKU + * @return 商品SKU信息 + */ + @GetMapping("/info/{projectId}/{projectSku}") + public Result getInfoByProjectIdAndSku(@PathVariable("projectId") Long projectId, + @PathVariable("projectSku") String projectSku); + /** + * 通过商品ID和SKU获取SKU信息 + * @param projectId 商品ID + * @return 商品SKU信息 + */ + @GetMapping("/list/{projectId}") + public Result> listByProjectId(@PathVariable("projectId") Long projectId); +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleAttrService.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleAttrService.java new file mode 100644 index 0000000..6268dd2 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleAttrService.java @@ -0,0 +1,34 @@ +package com.muyu.product.remote; + +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.domain.RuleAttrInfo; +import com.muyu.product.remote.factory.RemoteProjectSkuFactory; +import com.muyu.product.remote.factory.RemoteRuleAttrFactory; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.util.List; + +/** + * @author DongZl + * @description: 规格信息远程调用业务层 + * @Date 2024-4-7 上午 10:58 + */ +@FeignClient( + contextId = "remoteRuleAttrService", + value = ServiceNameConstants.PRODUCT_SERVICE, + fallbackFactory = RemoteRuleAttrFactory.class, + path = "/ruleAttr" +) +public interface RemoteRuleAttrService { + /** + * 获取规格详情详细信息 + */ + @GetMapping(value = "/list/ruleId/{ruleId}") + public Result> getInfoByRuleId(@PathVariable("ruleId") Long id); +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleService.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleService.java new file mode 100644 index 0000000..14a5ad3 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/RemoteRuleService.java @@ -0,0 +1,32 @@ +package com.muyu.product.remote; + +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.domain.RuleInfo; +import com.muyu.product.remote.factory.RemoteProjectSkuFactory; +import com.muyu.product.remote.factory.RemoteRuleFactory; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +/** + * @author DongZl + * @description: 规格远程调用业务层 + * @Date 2024-4-7 上午 10:58 + */ +@FeignClient( + contextId = "remoteRuleService", + value = ServiceNameConstants.PRODUCT_SERVICE, + fallbackFactory = RemoteRuleFactory.class, + path = "/rule" +) +public interface RemoteRuleService { + /** + * 获取商品规格详细信息 + */ + @GetMapping(value = "/{id}") + public Result getInfo(@PathVariable("id") Long id); +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectInfoFactory.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectInfoFactory.java new file mode 100644 index 0000000..e07d42f --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectInfoFactory.java @@ -0,0 +1,31 @@ +package com.muyu.product.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectInfo; +import com.muyu.product.domain.RuleInfo; +import com.muyu.product.remote.RemoteProjectInfoService; +import com.muyu.product.remote.RemoteRuleService; +import org.springframework.cloud.openfeign.FallbackFactory; + +/** + * @author DongZl + * @description: 规格远程调熔断器 + * @Date 2024-4-7 上午 10:59 + */ +public class RemoteProjectInfoFactory implements FallbackFactory { + @Override + public RemoteProjectInfoService create (Throwable cause) { + return new RemoteProjectInfoService() { + + /** + * 获取商品规格详细信息 + * + * @param id + */ + @Override + public Result getInfo (Long id) { + return Result.error(cause.getMessage()); + } + }; + } +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectSkuFactory.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectSkuFactory.java new file mode 100644 index 0000000..78fab1b --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteProjectSkuFactory.java @@ -0,0 +1,37 @@ +package com.muyu.product.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.remote.RemoteProjectSkuService; +import org.springframework.cloud.openfeign.FallbackFactory; + +import java.util.List; + +/** + * @author DongZl + * @description: 远程调熔断器 + * @Date 2024-4-7 上午 10:59 + */ +public class RemoteProjectSkuFactory implements FallbackFactory { + @Override + public RemoteProjectSkuService create (Throwable cause) { + return new RemoteProjectSkuService() { + @Override + public Result getInfoByProjectIdAndSku (Long projectId, String projectSku) { + return Result.error(cause.getMessage()); + } + + /** + * 通过商品ID和SKU获取SKU信息 + * + * @param projectId 商品ID + * + * @return 商品SKU信息 + */ + @Override + public Result> listByProjectId (Long projectId) { + return Result.error(cause.getMessage()); + } + }; + } +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleAttrFactory.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleAttrFactory.java new file mode 100644 index 0000000..2a11137 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleAttrFactory.java @@ -0,0 +1,34 @@ +package com.muyu.product.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.domain.RuleAttrInfo; +import com.muyu.product.remote.RemoteProjectSkuService; +import com.muyu.product.remote.RemoteRuleAttrService; +import com.muyu.product.remote.RemoteRuleService; +import org.springframework.cloud.openfeign.FallbackFactory; + +import java.util.List; + +/** + * @author DongZl + * @description: 规格详情远程调熔断器 + * @Date 2024-4-7 上午 10:59 + */ +public class RemoteRuleAttrFactory implements FallbackFactory { + @Override + public RemoteRuleAttrService create (Throwable cause) { + return new RemoteRuleAttrService() { + + /** + * 获取规格详情详细信息 + * + * @param id + */ + @Override + public Result> getInfoByRuleId (Long id) { + return Result.error(cause.getMessage()); + } + }; + } +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleFactory.java b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleFactory.java new file mode 100644 index 0000000..9a99497 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/java/com/muyu/product/remote/factory/RemoteRuleFactory.java @@ -0,0 +1,31 @@ +package com.muyu.product.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.domain.RuleInfo; +import com.muyu.product.remote.RemoteProjectSkuService; +import com.muyu.product.remote.RemoteRuleService; +import org.springframework.cloud.openfeign.FallbackFactory; + +/** + * @author DongZl + * @description: 规格远程调熔断器 + * @Date 2024-4-7 上午 10:59 + */ +public class RemoteRuleFactory implements FallbackFactory { + @Override + public RemoteRuleService create (Throwable cause) { + return new RemoteRuleService() { + + /** + * 获取商品规格详细信息 + * + * @param id + */ + @Override + public Result getInfo (Long id) { + return Result.error(cause.getMessage()); + } + }; + } +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..2d16640 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,4 @@ +com.muyu.product.remote.factory.RemoteProjectSkuFactory +com.muyu.product.remote.factory.RemoteRuleAttrFactory +com.muyu.product.remote.factory.RemoteRuleFactory +com.muyu.product.remote.factory.RemoteProjectInfoFactory diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/pom.xml b/muyu-modules/muyu-group-buy/muyu-group-buy-server/pom.xml new file mode 100644 index 0000000..340ef25 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/pom.xml @@ -0,0 +1,127 @@ + + + 4.0.0 + + com.muyu + muyu-group-buy + 3.6.3 + + + muyu-group-buy-server + + + 17 + 17 + UTF-8 + + + + + + + + com.muyu + muyu-group-buy-common + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + muyu-common-datasource + + + + + com.muyu + muyu-common-datascope + + + + + com.muyu + muyu-common-log + + + + + com.muyu + muyu-common-swagger + + + com.muyu + muyu-group-buy-common + 3.6.3 + compile + + + com.muyu + muyu-group-buy-common + 3.6.3 + compile + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/MuYuGroupBuyApplication.java b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/MuYuGroupBuyApplication.java new file mode 100644 index 0000000..35d0577 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/MuYuGroupBuyApplication.java @@ -0,0 +1,23 @@ +package com.muyu.product; + +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 DongZl + * @description: 商品启动类 + * @Date 2024-2-26 下午 04:07 + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableMyFeignClients +@SpringBootApplication +public class MuYuGroupBuyApplication { + public static void main (String[] args) { + SpringApplication.run(MuYuGroupBuyApplication.class, args); + } + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/controller/GroupBuyController.java b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/controller/GroupBuyController.java new file mode 100644 index 0000000..9c7566d --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/controller/GroupBuyController.java @@ -0,0 +1,111 @@ +package com.muyu.product.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.product.domain.GroupBuy; +import com.muyu.product.domain.req.GroupBuyQueryReq; +import com.muyu.product.domain.req.GroupBuySaveReq; +import com.muyu.product.domain.req.GroupBuyEditReq; +import com.muyu.product.service.GroupBuyService; +import com.muyu.common.core.web.page.TableDataInfo; + +/** + * 拼团Controller + * + * @author DongZeLiang + * @date 2024-11-14 + */ +@Api(tags = "拼团") +@RestController +@RequestMapping("/buy") +public class GroupBuyController extends BaseController { + @Autowired + private GroupBuyService groupBuyService; + + /** + * 查询拼团列表 + */ + @ApiOperation("获取拼团列表") + @RequiresPermissions("product:buy:list") + @GetMapping("/list") + public Result> list(GroupBuyQueryReq groupBuyQueryReq) { + startPage(); + List list = groupBuyService.list(GroupBuy.queryBuild(groupBuyQueryReq)); + return getDataTable(list); + } + + /** + * 导出拼团列表 + */ + @ApiOperation("导出拼团列表") + @RequiresPermissions("product:buy:export") + @Log(title = "拼团", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, GroupBuy groupBuy) { + List list = groupBuyService.list(groupBuy); + ExcelUtil util = new ExcelUtil(GroupBuy.class); + util.exportExcel(response, list, "拼团数据"); + } + + /** + * 获取拼团详细信息 + */ + @ApiOperation("获取拼团详细信息") + @RequiresPermissions("product:buy:query") + @GetMapping(value = "/{id}") + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class) + public Result getInfo(@PathVariable("id") Long id) { + return Result.success(groupBuyService.getById(id)); + } + + /** + * 新增拼团 + */ + @RequiresPermissions("product:buy:add") + @Log(title = "拼团", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation("新增拼团") + public Result add(@RequestBody GroupBuySaveReq groupBuySaveReq) { + return toAjax(groupBuyService.save(GroupBuy.saveBuild(groupBuySaveReq))); + } + + /** + * 修改拼团 + */ + @RequiresPermissions("product:buy:edit") + @Log(title = "拼团", businessType = BusinessType.UPDATE) + @PutMapping("/{id}") + @ApiOperation("修改拼团") + public Result edit(@PathVariable Long id, @RequestBody GroupBuyEditReq groupBuyEditReq) { + return toAjax(groupBuyService.updateById(GroupBuy.editBuild(id,groupBuyEditReq))); + } + + /** + * 删除拼团 + */ + @RequiresPermissions("product:buy:remove") + @Log(title = "拼团", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + @ApiOperation("删除拼团") + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") + public Result remove(@PathVariable List ids) { + return toAjax(groupBuyService.removeBatchByIds(ids)); + } +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/mapper/GroupBuyMapper.java b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/mapper/GroupBuyMapper.java new file mode 100644 index 0000000..602bdf3 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/mapper/GroupBuyMapper.java @@ -0,0 +1,15 @@ +package com.muyu.product.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.product.domain.GroupBuy; + +/** + * 拼团Mapper接口 + * + * @author DongZeLiang + * @date 2024-11-14 + */ +public interface GroupBuyMapper extends BaseMapper { + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/GroupBuyService.java b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/GroupBuyService.java new file mode 100644 index 0000000..8fbd093 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/GroupBuyService.java @@ -0,0 +1,22 @@ +package com.muyu.product.service; + +import java.util.List; +import com.muyu.product.domain.GroupBuy; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 拼团Service接口 + * + * @author DongZeLiang + * @date 2024-11-14 + */ +public interface GroupBuyService extends IService { + /** + * 查询拼团列表 + * + * @param groupBuy 拼团 + * @return 拼团集合 + */ + public List list(GroupBuy groupBuy); + +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/impl/GroupBuyServiceImpl.java b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/impl/GroupBuyServiceImpl.java new file mode 100644 index 0000000..541cf82 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/java/com/muyu/product/service/impl/GroupBuyServiceImpl.java @@ -0,0 +1,56 @@ +package com.muyu.product.service.impl; + +import java.util.List; + +import com.muyu.common.core.utils.ObjUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.muyu.product.mapper.GroupBuyMapper; +import com.muyu.product.domain.GroupBuy; +import com.muyu.product.service.GroupBuyService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; + +/** + * 拼团Service业务层处理 + * + * @author DongZeLiang + * @date 2024-11-14 + */ +@Slf4j +@Service +public class GroupBuyServiceImpl extends ServiceImpl implements GroupBuyService { + + /** + * 查询拼团列表 + * + * @param groupBuy 拼团 + * @return 拼团 + */ + @Override + public List list(GroupBuy groupBuy) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + + if (ObjUtils.notNull(groupBuy.getProjectId())){ + queryWrapper.eq(GroupBuy::getProjectId, groupBuy.getProjectId()); + } + + if (ObjUtils.notNull(groupBuy.getStartTime())){ + queryWrapper.eq(GroupBuy::getStartTime, groupBuy.getStartTime()); + } + + if (ObjUtils.notNull(groupBuy.getEndTime())){ + queryWrapper.eq(GroupBuy::getEndTime, groupBuy.getEndTime()); + } + + if (ObjUtils.notNull(groupBuy.getMinMembers())){ + queryWrapper.eq(GroupBuy::getMinMembers, groupBuy.getMinMembers()); + } + + if (ObjUtils.notNull(groupBuy.getStatus())){ + queryWrapper.eq(GroupBuy::getStatus, groupBuy.getStatus()); + } + return list(queryWrapper); + } +} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/banner.txt b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/bootstrap.yml b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..3e7c168 --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/bootstrap.yml @@ -0,0 +1,28 @@ +# Tomcat +server: + port: 9308 + +# Spring +spring: + application: + # 应用名称 + name: muyu-group-buy + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 10.10.10.132:8848 + config: + # 配置中心地址 + server-addr: 10.10.10.132:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.product.mapper: DEBUG diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/logback.xml b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/logback.xml new file mode 100644 index 0000000..69fb68b --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/logback.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/mapper/GroupBuyMapper.xml b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/mapper/GroupBuyMapper.xml new file mode 100644 index 0000000..47f117d --- /dev/null +++ b/muyu-modules/muyu-group-buy/muyu-group-buy-server/src/main/resources/mapper/GroupBuyMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + select id, project_id, start_time, end_time, min_members, status from group_buy + + diff --git a/muyu-modules/muyu-group-buy/pom.xml b/muyu-modules/muyu-group-buy/pom.xml new file mode 100644 index 0000000..2ac62ca --- /dev/null +++ b/muyu-modules/muyu-group-buy/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.muyu + muyu-modules + 3.6.3 + + + muyu-group-buy + pom + + muyu-group-buy-common + muyu-group-buy-remote + muyu-group-buy-server + + + + 17 + 17 + UTF-8 + + + diff --git a/muyu-modules/muyu-group-buy/结构 b/muyu-modules/muyu-group-buy/结构 new file mode 100644 index 0000000..f4f14d7 --- /dev/null +++ b/muyu-modules/muyu-group-buy/结构 @@ -0,0 +1,26 @@ +{ 基本信息: { + name: "", + introduction: "", + mianType: "", + parentType: "", + type: "", + image: "", + carouselImages: "", + status: "", + ruleId: "", + branId: "", + remark: "" + }, + 品类属性: [ { + id: "", + value: "", + } ………… + ], + 商品规格: [ { + SKU: "",(所有的规格属性拼接而成) + "images": "", + 库存: "", + 价格: "", + } ………… + ] +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java index 936bde6..cfb0e1a 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.product.domain.AttributeInfo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -36,5 +37,5 @@ public class AttributeGroupEditReq extends BaseEntity { @ApiModelProperty(name = "状态", value = "状态", required = true) private String states; - private List attributeIdList ; + private List attributeIdList ; } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java index 023446a..a5536ab 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java @@ -8,6 +8,8 @@ import lombok.experimental.SuperBuilder; import io.swagger.annotations.*; import com.muyu.common.core.web.domain.TreeEntity; +import java.util.List; + /** * 品类信息对象 category_info * @@ -38,5 +40,18 @@ public class CategoryInfoEditReq extends TreeEntity { /** 介绍 */ @ApiModelProperty(name = "介绍", value = "介绍") private String introduction; + /** + * 商品属性组关联ID + */ + private List attributeGroupIdList; + /** + * 商品属性关联ID + */ + private List attributeIdList; + + /** + * 商品品牌组关联ID + */ + private List brandIdList; } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoEditReq.java index bc9d602..b2bc4d0 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoEditReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoEditReq.java @@ -1,5 +1,6 @@ package com.muyu.product.domain.req; +import com.muyu.product.domain.model.RuleAttrAddModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -8,6 +9,8 @@ import lombok.experimental.SuperBuilder; import io.swagger.annotations.*; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.List; + /** * 商品规格对象 rule_info * @@ -31,4 +34,6 @@ public class RuleInfoEditReq extends BaseEntity { @ApiModelProperty(name = "规格状态", value = "规格状态") private String status; + private List ruleAttrList; + } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java index 55dbaef..c942196 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java @@ -112,8 +112,9 @@ public class CategoryInfoController extends BaseController { @Log(title = "品类信息", businessType = BusinessType.UPDATE) @PutMapping("/{id}") @ApiOperation("修改品类信息") - public Result edit(@PathVariable Long id, @RequestBody CategoryInfoEditReq categoryInfoEditReq) { - return toAjax(categoryInfoService.updateById(CategoryInfo.editBuild(id,categoryInfoEditReq))); + public boolean edit(@PathVariable Long id, @RequestBody CategoryInfoEditReq categoryInfoEditReq) { + boolean b = categoryInfoService.updateById(id, categoryInfoEditReq); + return b; } /** @@ -124,8 +125,9 @@ public class CategoryInfoController extends BaseController { @DeleteMapping("/{ids}") @ApiOperation("删除品类信息") @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") - public Result remove(@PathVariable List ids) { - return toAjax(categoryInfoService.removeBatchByIds(ids)); + public int remove(@PathVariable Long ids) { + int i = categoryInfoService.removeBatchById(ids); + return i; } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java index bb03272..d4a1a5c 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java @@ -101,8 +101,9 @@ public class RuleInfoController extends BaseController { @Log(title = "商品规格", businessType = BusinessType.UPDATE) @PutMapping("/{id}") @ApiOperation("修改商品规格") - public Result edit(@PathVariable Long id, @RequestBody RuleInfoEditReq ruleInfoEditReq) { - return toAjax(ruleInfoService.updateById(RuleInfo.editBuild(id,ruleInfoEditReq))); + public boolean edit(@PathVariable Long id, @RequestBody RuleInfoEditReq ruleInfoEditReq) { + boolean b = ruleInfoService.updateById(id, ruleInfoEditReq); + return b; } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java index 6ed8f75..47f4817 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java @@ -3,6 +3,8 @@ package com.muyu.product.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.muyu.product.domain.CategoryInfo; +import com.muyu.product.domain.ProjectInfo; +import org.apache.ibatis.annotations.Param; /** * 品类信息Mapper接口 @@ -12,4 +14,8 @@ import com.muyu.product.domain.CategoryInfo; */ public interface CategoryInfoMapper extends BaseMapper { + + List selByParentId(@Param("id") Long id); + + List selectByProjectInfo(@Param("parentId") Long parentId); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java index 9b99d9d..8924a61 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java @@ -2,12 +2,14 @@ package com.muyu.product.service; import java.util.List; +import com.muyu.common.core.domain.Result; import com.muyu.product.domain.AttributeGroup; import com.muyu.product.domain.AttributeInfo; import com.muyu.product.domain.BrandInfo; import com.muyu.product.domain.CategoryInfo; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.product.domain.model.CategoryInfoSaveModel; +import com.muyu.product.domain.req.CategoryInfoEditReq; import com.muyu.product.domain.resp.CategoryCommonElementResp; import com.muyu.product.domain.resp.CategoryParentCommonElementResp; @@ -69,4 +71,9 @@ public interface CategoryInfoService extends IService { CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId); public List getCommon (Long categoryId, IService iService, IService bsiService); + + boolean updateById(Long id, CategoryInfoEditReq categoryInfoEditReq); + + + int removeBatchById(Long id); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java index d177b0d..3544305 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java @@ -6,6 +6,7 @@ import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.product.domain.RuleInfo; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.product.domain.model.RuleInfoAddModel; +import com.muyu.product.domain.req.RuleInfoEditReq; import com.muyu.product.domain.req.RuleInfoQueryReq; import com.muyu.product.domain.resp.RuleAttributeResp; import com.muyu.product.domain.resp.RuleInfoResp; @@ -37,4 +38,7 @@ public interface RuleInfoService extends IService { RuleInfoUpdResp getUpdById(Long id); + + boolean updateById(Long id, RuleInfoEditReq ruleInfoEditReq); + } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsCategoryAttributeServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsCategoryAttributeServiceImpl.java index 48e263d..a2a7083 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsCategoryAttributeServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsCategoryAttributeServiceImpl.java @@ -4,6 +4,7 @@ import java.util.List; import com.muyu.common.core.utils.ObjUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.muyu.product.mapper.AsCategoryAttributeMapper; import com.muyu.product.domain.AsCategoryAttribute; @@ -20,7 +21,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @Slf4j @Service public class AsCategoryAttributeServiceImpl extends ServiceImpl implements AsCategoryAttributeService { - /** * 查询品类属性中间列表 * diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java index 22b8ab9..c2bbae4 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java @@ -128,8 +128,8 @@ public class AttributeGroupServiceImpl extends ServiceImpl longs = attributeGroupEditReq.getAttributeIdList().stream().map(AttributeInfo::getId).toList(); + attributeGroupMapper.install(id,longs); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java index 2d6b4d5..c3320c4 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java @@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.common.security.utils.SecurityUtils; import com.muyu.product.domain.*; import com.muyu.product.domain.base.CategoryBase; import com.muyu.product.domain.model.CategoryInfoSaveModel; import com.muyu.product.domain.model.TemplateAttributeGroupModel; import com.muyu.product.domain.model.TemplateAttributeModel; +import com.muyu.product.domain.req.CategoryInfoEditReq; import com.muyu.product.domain.resp.CategoryCommonElementResp; import com.muyu.product.domain.resp.CategoryParentCommonElementResp; import com.muyu.product.mapper.CategoryInfoMapper; @@ -19,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -57,6 +61,8 @@ public class CategoryInfoServiceImpl extends ServiceImpl().eq(AsCategoryAttribute::getCategoryId, id)); + this.asCategoryAttributeGroupService.remove(new LambdaQueryWrapper().eq(AsCategoryAttributeGroup::getCategoryId, id)); + this. asCategoryBrandService.remove(new LambdaQueryWrapper().eq(AsCategoryBrand::getCategoryId, id)); + + asCategoryAttributeService.saveBatch( + categoryInfoEditReq.getAttributeIdList().stream() + .map(categoryAttributeId -> AsCategoryAttribute.categoryBuild(categoryAttributeId,id)) + .toList() + ); + asCategoryAttributeGroupService.saveBatch( + categoryInfoEditReq.getAttributeIdList().stream() + .map(categoryGoryAttributeGroupId -> AsCategoryAttributeGroup.categoryBuild(categoryGoryAttributeGroupId,id)) + .toList() + ); + asCategoryBrandService.saveBatch( + categoryInfoEditReq.getAttributeIdList().stream() + .map(categoryBrandId -> AsCategoryBrand.categoryBuild(categoryBrandId,id)) + .toList() + ); + + } + + return b; + } + + + @Override + public int removeBatchById(Long id) { + CategoryInfo categoryInfo = categoryInfoMapper.selectById(id); + List categoryInfos = categoryInfoMapper.selByParentId(categoryInfo.getId()); + + if(categoryInfos.size() != 0){ + throw new SecurityException("不能删除还有子集"); + } + + List projectInfos = categoryInfoMapper.selectByProjectInfo(categoryInfo.getParentId()); + if(projectInfos.size() != 0){ + throw new SecurityException("不能删除与商品关联"); + } + int i = categoryInfoMapper.deleteById(id); + return i; + } + + /** * 通过品类ID获取父级以上的属性、属性组、品牌集合 * diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java index 035837e..bfcea3a 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java @@ -16,6 +16,7 @@ import com.muyu.common.security.utils.SecurityUtils; import com.muyu.product.domain.RuleAttrInfo; import com.muyu.product.domain.model.RuleAttrAddModel; import com.muyu.product.domain.model.RuleInfoAddModel; +import com.muyu.product.domain.req.RuleInfoEditReq; import com.muyu.product.domain.req.RuleInfoQueryReq; import com.muyu.product.domain.resp.RuleAttributeResp; import com.muyu.product.domain.resp.RuleInfoResp; @@ -127,6 +128,23 @@ public class RuleInfoServiceImpl extends ServiceImpl .build(); } + @Override + public boolean updateById(Long id, RuleInfoEditReq ruleInfoEditReq) { + boolean update = this.updateById(RuleInfo.editBuild(id, ruleInfoEditReq)); + if(update){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RuleAttrInfo::getRuleId,id); + this.ruleAttrInfoService.remove(queryWrapper); + + ruleAttrInfoService.saveBatch( + ruleInfoEditReq.getRuleAttrList().stream() + .map(ruleAttrAddModel -> RuleAttrInfo.addModelBuild(ruleAttrAddModel, () -> id, SecurityUtils::getUsername)) + .toList() + ); + } + return update; + } + // RuleInfo byId = this.getById(id); // diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml index 99be65b..308945b 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml @@ -21,4 +21,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, name, image, parent_id, start, introduction, remark, create_by, create_time, update_by, update_time from category_info + + + diff --git a/muyu-modules/pom.xml b/muyu-modules/pom.xml index b9faa97..9cb767e 100644 --- a/muyu-modules/pom.xml +++ b/muyu-modules/pom.xml @@ -15,6 +15,7 @@ muyu-file muyu-product muyu-shop-cart + muyu-group-buy