From eb22d344b3b05ba9b8104787d00a2fef18f836a0 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Fri, 5 Apr 2024 01:06:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E5=88=97=E8=A1=A8=E3=80=81=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 14 +++ .idea/misc.xml | 5 + .../com/atguigu/ssyx/enums/ActivityType.java | 16 ++-- .../atguigu/ssyx/model/product/SkuInfo.java | 2 + .../client/product/ProductFeignClient.java | 10 ++ service/service-activity/pom.xml | 6 +- .../activity/ServiceActivityApplication.java | 4 + .../ssyx/activity/config/Knife4jConfig.java | 54 +++++++++++ .../controller/ActivityInfoController.java | 92 +++++++++++++++++-- .../activity/mapper/ActivityInfoMapper.java | 2 + .../activity/mapper/ActivityRuleMapper.java | 10 ++ .../activity/mapper/ActivitySkuMapper.java | 9 ++ .../activity/mapper/CouponInfoMapper.java | 2 + .../activity/service/ActivityInfoService.java | 45 +++++++-- .../service/impl/ActivityInfoServiceImpl.java | 88 ++++++++++++++++-- .../resources/mapper/ActivityRuleMapper.xml | 5 + .../resources/mapper/ActivitySkuMapper.xml | 5 + .../product/api/ProductInnerController.java | 14 ++- .../ssyx/product/service/SkuInfoService.java | 10 ++ .../service/impl/SkuInfoServiceImpl.java | 11 +++ 20 files changed, 364 insertions(+), 40 deletions(-) create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/config/Knife4jConfig.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityRuleMapper.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivitySkuMapper.java create mode 100644 service/service-activity/src/main/resources/mapper/ActivityRuleMapper.xml create mode 100644 service/service-activity/src/main/resources/mapper/ActivitySkuMapper.xml diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 2f95d82..0d3f3f1 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -57,5 +57,19 @@ $ProjectFileDir$ + + mysql.8 + true + true + $PROJECT_DIR$/service/service-activity/src/main/resources/application.yml + com.mysql.cj.jdbc.Driver + jdbc:mysql://106.15.251.123:3305/shequ-activity?serverTimezone=GMT + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 7b89c3a..fb0bd54 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,10 @@ + + + + + diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java index 9959687..9aafd80 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java @@ -2,6 +2,8 @@ package com.atguigu.ssyx.activity; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -10,6 +12,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; "com.atguigu.ssyx.common", "com.atguigu.ssyx.activity"}) @EnableTransactionManagement +@EnableDiscoveryClient +@EnableFeignClients(basePackages = {"com.atguigu.ssyx.client"}) public class ServiceActivityApplication { public static void main(String[] args) { SpringApplication.run(ServiceActivityApplication.class, args); diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/config/Knife4jConfig.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/config/Knife4jConfig.java new file mode 100644 index 0000000..373758b --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/config/Knife4jConfig.java @@ -0,0 +1,54 @@ +package com.atguigu.ssyx.activity.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; + +import java.util.ArrayList; +import java.util.List; + +@Configuration +@EnableSwagger2WebMvc +public class Knife4jConfig { + @Bean + public Docket adminApiConfig() { + List pars = new ArrayList<>(); + ParameterBuilder tokenPar = new ParameterBuilder(); + tokenPar.name("adminId") + .description("用户token") + .defaultValue("1") + .modelRef(new ModelRef("string")) + .parameterType("header") + .required(false) + .build(); + pars.add(tokenPar.build()); + + return new Docket(DocumentationType.SWAGGER_2) + .groupName("活动相关API") + .apiInfo(adminApiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx.activity.controller")) + .paths(PathSelectors.regex("/admin/.*")) + .build() + .globalOperationParameters(pars); + } + + private ApiInfo adminApiInfo() { + return new ApiInfoBuilder() + .title("后台管理系统-API文档") + .description("本文档描述了尚上优选后台系统服务接口定义") + .version("1.0") + .contact(new Contact("atguigu", "http://atguigu.com", "atguigu")) + .build(); + } +} \ No newline at end of file diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java index 2d6eecb..97f13ae 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java @@ -2,23 +2,95 @@ package com.atguigu.ssyx.activity.controller; import com.atguigu.ssyx.activity.service.ActivityInfoService; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.activity.ActivityInfo; +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.vo.activity.ActivityRuleVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; -/** - *

- * 活动表 前端控制器 - *

- * - * @author bunny - * @since 2024-04-04 - */ +import java.util.Date; +import java.util.List; +import java.util.Map; + + +@Api(tags = "活动相关接口") @RestController @RequestMapping("/admin/activity/activityInfo") public class ActivityInfoController { @Autowired private ActivityInfoService activityInfoService; + @ApiOperation(value = "获取分页列表") + @GetMapping("{page}/{limit}") + public Result> index( + @ApiParam(name = "page", value = "当前页码", required = true) @PathVariable Long page, + @ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable Long limit + ) { + Page pageParam = new Page<>(page, limit); + IPage pageModel = activityInfoService.selectPage(pageParam); + return Result.success(pageModel); + } + + @ApiOperation(value = "获取活动") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + ActivityInfo activityInfo = activityInfoService.getById(id); + activityInfo.setActivityTypeString(activityInfo.getActivityType().getComment()); + return Result.success(activityInfo); + } + + @ApiOperation(value = "新建活动") + @PostMapping("save") + public Result save(@RequestBody ActivityInfo activityInfo) { + activityInfo.setCreateTime(new Date()); + activityInfoService.save(activityInfo); + return Result.success(); + } + + @ApiOperation(value = "修改活动") + @PutMapping("update") + public Result updateById(@RequestBody ActivityInfo activityInfo) { + activityInfoService.updateById(activityInfo); + return Result.success(); + } + + @ApiOperation(value = "删除活动") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + activityInfoService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "根据id列表删除活动") + @DeleteMapping("batchRemove") + public Result batchRemove(@RequestBody List ids) { + activityInfoService.removeByIds(ids); + return Result.success(); + } + + @ApiOperation(value = "获取活动规则") + @GetMapping("findActivityRuleList/{id}") + public Result> findActivityRuleList(@PathVariable Long id) { + return Result.success(activityInfoService.findActivityRuleList(id)); + } + + @ApiOperation(value = "新增活动规则") + @PostMapping("saveActivityRule") + public Result saveActivityRule(@RequestBody ActivityRuleVo activityRuleVo) { + activityInfoService.saveActivityRule(activityRuleVo); + return Result.success(); + } + + @ApiOperation(value = "根据关键字获取sku列表,活动使用") + @GetMapping("findSkuInfoByKeyword/{keyword}") + public Result> findSkuInfoByKeyword(@PathVariable("keyword") String keyword) { + return Result.success(activityInfoService.findSkuInfoByKeyword(keyword)); + } } diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java index 7658569..98653a8 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java @@ -2,6 +2,7 @@ package com.atguigu.ssyx.activity.mapper; import com.atguigu.ssyx.model.activity.ActivityInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** *

@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author bunny * @since 2024-04-04 */ +@Mapper public interface ActivityInfoMapper extends BaseMapper { } diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityRuleMapper.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityRuleMapper.java new file mode 100644 index 0000000..e4cd45a --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityRuleMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.ssyx.activity.mapper; + +import com.atguigu.ssyx.model.activity.ActivityRule; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ActivityRuleMapper extends BaseMapper { + +} diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivitySkuMapper.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivitySkuMapper.java new file mode 100644 index 0000000..36e051a --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivitySkuMapper.java @@ -0,0 +1,9 @@ +package com.atguigu.ssyx.activity.mapper; + +import com.atguigu.ssyx.model.activity.ActivitySku; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ActivitySkuMapper extends BaseMapper { +} diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java index 2b88f12..28eed15 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java @@ -2,6 +2,7 @@ package com.atguigu.ssyx.activity.mapper; import com.atguigu.ssyx.model.activity.CouponInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** *

@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author bunny * @since 2024-04-04 */ +@Mapper public interface CouponInfoMapper extends BaseMapper { } diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java index 3e1ac81..8350ed9 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java @@ -1,16 +1,45 @@ package com.atguigu.ssyx.activity.service; import com.atguigu.ssyx.model.activity.ActivityInfo; +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.vo.activity.ActivityRuleVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -/** - *

- * 活动表 服务类 - *

- * - * @author bunny - * @since 2024-04-04 - */ +import java.util.List; +import java.util.Map; + public interface ActivityInfoService extends IService { + /** + * 获取分页列表 + * + * @param pageParam 分页查询条件 + * @return 分页结果 + */ + IPage selectPage(Page pageParam); + + /** + * 获取活动规则 + * + * @param id 当前id + * @return 返回集合 + */ + Map findActivityRuleList(Long id); + + /** + * 新增活动规则 + * + * @param activityRuleVo 活动规则 + */ + void saveActivityRule(ActivityRuleVo activityRuleVo); + + /** + * 根据关键字获取sku列表,活动使用 + * + * @param keyword 关键字 + * @return 活动列表 + */ + List findSkuInfoByKeyword(String keyword); } diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java index 66b80b8..853136a 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java @@ -1,20 +1,92 @@ package com.atguigu.ssyx.activity.service.impl; import com.atguigu.ssyx.activity.mapper.ActivityInfoMapper; +import com.atguigu.ssyx.activity.mapper.ActivityRuleMapper; +import com.atguigu.ssyx.activity.mapper.ActivitySkuMapper; import com.atguigu.ssyx.activity.service.ActivityInfoService; +import com.atguigu.ssyx.client.product.ProductFeignClient; import com.atguigu.ssyx.model.activity.ActivityInfo; +import com.atguigu.ssyx.model.activity.ActivityRule; +import com.atguigu.ssyx.model.activity.ActivitySku; +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.vo.activity.ActivityRuleVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -/** - *

- * 活动表 服务实现类 - *

- * - * @author bunny - * @since 2024-04-04 - */ +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + @Service public class ActivityInfoServiceImpl extends ServiceImpl implements ActivityInfoService { + @Autowired + private ProductFeignClient productFeignClient; + @Autowired + private ActivityRuleMapper activityRuleMapper; + @Autowired + private ActivitySkuMapper activitySkuMapper; + /** + * 获取分页列表 + * + * @param pageParam 分页查询条件 + * @return 分页结果 + */ + @Override + public IPage selectPage(Page pageParam) { + Page page = page(pageParam); + List activityInfoList = page.getRecords(); + activityInfoList.forEach(activityInfo -> { + String comment = activityInfo.getActivityType().getComment(); + activityInfo.setActivityTypeString(comment); + }); + return page; + } + + /** + * 获取活动规则 + * + * @param id 当前id + * @return 返回集合 + */ + @Override + public Map findActivityRuleList(Long id) { + Map result = new HashMap<>(); + List activityInfoList = activityRuleMapper.selectList(Wrappers.lambdaQuery().eq(ActivityRule::getActivityId, id)); + result.put("activityRuleList", activityInfoList); + + List activitySkuList = activitySkuMapper.selectList(Wrappers.lambdaQuery().eq(ActivitySku::getActivityId, id)); + List skuIdList = activitySkuList.stream().map(ActivitySku::getSkuId).collect(Collectors.toList()); + + // 通过远程调用根据skuId得到商品信息 + List skuInfoList = productFeignClient.findSkuInfoList(skuIdList).getData(); + result.put("skuInfoList", skuInfoList); + return result; + } + + /** + * 新增活动规则 + * + * @param activityRuleVo 活动规则 + */ + @Override + public void saveActivityRule(ActivityRuleVo activityRuleVo) { + + } + + /** + * 根据关键字获取sku列表,活动使用 + * + * @param keyword 关键字 + * @return 活动列表 + */ + @Override + public List findSkuInfoByKeyword(String keyword) { + return null; + } } diff --git a/service/service-activity/src/main/resources/mapper/ActivityRuleMapper.xml b/service/service-activity/src/main/resources/mapper/ActivityRuleMapper.xml new file mode 100644 index 0000000..e9919f3 --- /dev/null +++ b/service/service-activity/src/main/resources/mapper/ActivityRuleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-activity/src/main/resources/mapper/ActivitySkuMapper.xml b/service/service-activity/src/main/resources/mapper/ActivitySkuMapper.xml new file mode 100644 index 0000000..e390cca --- /dev/null +++ b/service/service-activity/src/main/resources/mapper/ActivitySkuMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java index 11f852b..98519a7 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java @@ -8,10 +8,9 @@ import com.atguigu.ssyx.product.service.SkuInfoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @Api(value = "远程调用接口", tags = "远程调用接口") @RestController @@ -35,4 +34,11 @@ public class ProductInnerController { SkuInfo skuInfo = skuInfoService.getById(skuId); return Result.success(skuInfo); } + + @ApiOperation(value = "根据skuId得到sku信息列表") + @PostMapping("inner/findSkuInfoList") + public Result> findSkuInfoList(@RequestBody List skuIdList) { + List skuInfoList = skuInfoService.findSkuInfoList(skuIdList); + return Result.success(skuInfoList); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java index a76aa13..d46790b 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* sku信息 服务类 @@ -71,4 +73,12 @@ public interface SkuInfoService extends IService { * @param status 商品状态 */ void isNewPerson(Long skuId, Integer status); + + /** + * 根据skuId得到sku信息列表 + * + * @param skuIdList skuId + * @return List + */ + List findSkuInfoList(List skuIdList); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java index 26f0f20..19a726f 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java @@ -223,4 +223,15 @@ public class SkuInfoServiceImpl extends ServiceImpl impl skuInfo.setIsNewPerson(status); baseMapper.updateById(skuInfo); } + + /** + * 根据skuId得到sku信息列表 + * + * @param skuIdList skuId + * @return List + */ + @Override + public List findSkuInfoList(List skuIdList) { + return baseMapper.selectBatchIds(skuIdList); + } }