From 7fb6fbea0d467ffe40dd9bb711740b42d8895e6a Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Tue, 7 Jan 2025 15:16:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=82=B9=E9=A4=90h5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RemoteCanteenOnlineCategoryService.java | 45 ++++++ .../feign/RemoteOnlineCanteenSpuService.java | 67 +++++++++ .../CanteenOnlineSpuUpdateStockReqDTO.java | 47 +++++++ .../pjcloud/canteen/vo/APPOnlineSpuVO.java | 129 ++++++++++++++++++ .../controller/CanteenCategoryController.java | 6 + .../CanteenOnlineCategoryController.java | 22 +++ .../CanteenOnlineSpuController.java | 39 ++++++ .../controller/CanteenSpuController.java | 2 +- .../canteen/entity/CanteenCategoryEntity.java | 6 + .../entity/CanteenOnlineCategoryEntity.java | 6 + .../entity/CanteenOnlineSpuEntity.java | 8 ++ .../mapper/CanteenOnlineSpuMapper.java | 26 ++++ .../service/CanteenOnlineSpuService.java | 19 +++ .../impl/CanteenOnlineSpuServiceImpl.java | 37 +++++ 14 files changed, 458 insertions(+), 1 deletion(-) create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenOnlineCategoryService.java create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/CanteenOnlineSpuUpdateStockReqDTO.java create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/APPOnlineSpuVO.java diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenOnlineCategoryService.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenOnlineCategoryService.java new file mode 100644 index 000000000..5db0cd270 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenOnlineCategoryService.java @@ -0,0 +1,45 @@ +/* + * + * Copyright (c) 2018-2025, pjcloud All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: pjcloud + * + */ + +package com.bsd.pjcloud.canteen.api.feign; + + +import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; +import com.bsd.pjcloud.common.core.util.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @author zjf + * @date 2018/6/22 + */ +@FeignClient(contextId = "remoteCanteenOnlineCategoryService", value = ServiceNameConstants.CANTEEN_SERVICE) +public interface RemoteCanteenOnlineCategoryService { + + + /** + * 查询所有的菜品分类 + * @param merchantId 商户id + * @return R + */ + @GetMapping("/canteenOnlineCategory/app/getAllSimple") + R getAllSimple(@RequestParam(value = "merchantId")Long merchantId); + +} diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java new file mode 100644 index 000000000..1acc357bb --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java @@ -0,0 +1,67 @@ +/* + * + * Copyright (c) 2018-2025, pjcloud All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: pjcloud + * + */ + +package com.bsd.pjcloud.canteen.api.feign; + + +import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; +import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; +import com.bsd.pjcloud.common.core.util.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author zjf + * @date 2018/6/22 + */ +@FeignClient(contextId = "remoteOnlineCanteenSpuService", value = ServiceNameConstants.CANTEEN_SERVICE) +public interface RemoteOnlineCanteenSpuService { + + + /** + * 获取菜品列表 + * @param categoryId 不填默认查全部 + * @return + */ + @GetMapping("/canteenOnlineSpu/app/getCanteenSpuList") + R getCanteenSpuList(@RequestParam(value = "categoryId",required = false)String categoryId); + + + /** + * 扣减菜品库存 + * @param updateStockReqDTO + * @return + */ + @PostMapping("/canteenOnlineSpu/app/updateSkuStock") + R getAllSimple(@RequestBody CanteenSpuUpdateStockReqDTO updateStockReqDTO); + + + /** + * 根据ids查询菜品 + * @return ids + */ + @PostMapping("/canteenOnlineSpu/app/getSpuListByIds") + R getSpuListByIds(@RequestBody List ids); + +} diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/CanteenOnlineSpuUpdateStockReqDTO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/CanteenOnlineSpuUpdateStockReqDTO.java new file mode 100644 index 000000000..6af193d2e --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/CanteenOnlineSpuUpdateStockReqDTO.java @@ -0,0 +1,47 @@ +package com.bsd.pjcloud.canteen.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 商品 SKU 更新库存 Request DTO + * + * @author LeeYan9 + * @since 2022-08-26 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CanteenOnlineSpuUpdateStockReqDTO { + + /** + * 商品 SKU + */ + @NotNull(message = "商品 SPU 不能为空") + private List items; + + @Data + public static class Item { + + /** + * 商品 SKU 编号 + */ + @NotNull(message = "商品 SPU 编号不能为空") + private Long id; + + /** + * 库存变化数量 + * + * 正数:增加库存 + * 负数:扣减库存 + */ + @NotNull(message = "库存变化数量不能为空") + private Integer incrCount; + + } + +} diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/APPOnlineSpuVO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/APPOnlineSpuVO.java new file mode 100644 index 000000000..ddb57f29e --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/APPOnlineSpuVO.java @@ -0,0 +1,129 @@ +package com.bsd.pjcloud.canteen.vo; + +import com.baomidou.mybatisplus.annotation.*; +import com.bsd.pjcloud.common.core.util.MoneyDeserializer; +import com.bsd.pjcloud.common.core.util.MoneySerializer; +import com.bsd.pjcloud.common.core.util.TenantTable; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 在线点餐spu + * + * @author zjf + * @date 2024-12-16 23:42:19 + */ +@Data +@TenantTable +@Schema(description = "在线点餐vo") +public class APPOnlineSpuVO { + + + /** + * 商品 SPU 编号,自增 + */ + @Schema(description="商品 SPU 编号,自增") + private Long id; + + /** + * 商品名称 + */ + @Schema(description="商品名称") + private String name; + + /** + * 商品简介 + */ + @Schema(description="商品简介") + private String introduction; + + /** + * 商品详情 + */ + @Schema(description="商品详情") + private String description; + + /** + * 商品分类编号 + */ + @Schema(description="商品分类编号") + private Long categoryId; + + /** + * 商品封面图 + */ + @Schema(description="商品封面图") + private String picUrl; + + /** + * 商品轮播图地址 + 数组,以逗号分隔 + 最多上传15张 + */ + @Schema(description="商品轮播图地址") + private String sliderPicUrls; + + /** + * 排序字段 + */ + @Schema(description="排序字段") + private Integer sort; + + + /** + * 商品价格,单位使用:分 + */ + @Schema(description="商品价格") + @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 + @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 + private Integer price; + + /** + * 市场价,单位使用:分 + */ + @Schema(description="市场价") + @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 + @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 + private Integer marketPrice; + + /** + * 库存 + */ + @Schema(description="库存") + private Integer stock; + + /** + * 商品销量 + */ + @Schema(description="商品销量") + private Integer salesCount; + + + /** + * 商品点击量 + */ + @Schema(description="商品点击量") + private Integer browseCount; + + /** + * 商户编号 + */ + @Schema(description="商户编号") + private Long merchantId; + + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建时间") + private LocalDateTime createTime; + + + + +} \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenCategoryController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenCategoryController.java index 2b627c938..fa45ba0f2 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenCategoryController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenCategoryController.java @@ -123,6 +123,8 @@ public class CanteenCategoryController { } +// -------------AD-------------------- + /** * 查询所有的菜品分类 * @param categoryType 餐段类型,1早餐 2中 3晚餐 不传默认所有 @@ -138,4 +140,8 @@ public class CanteenCategoryController { List list = canteenCategoryService.listScope(wrapper); return R.ok(list); } + + + + } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineCategoryController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineCategoryController.java index b09d120e6..5ce74f690 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineCategoryController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineCategoryController.java @@ -6,10 +6,12 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.canteen.entity.CanteenCategoryEntity; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.canteen.entity.CanteenOnlineCategoryEntity; import com.bsd.pjcloud.canteen.service.CanteenOnlineCategoryService; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -118,4 +120,24 @@ public class CanteenOnlineCategoryController { public List export(CanteenOnlineCategoryEntity canteenOnlineCategory,Long[] ids) { return canteenOnlineCategoryService.list(Wrappers.lambdaQuery(canteenOnlineCategory).in(ArrayUtil.isNotEmpty(ids), CanteenOnlineCategoryEntity::getId, ids)); } + + + +// ---------------APP--------------------- + + /** + * 查询菜品分类,根据商户id + + * @return R + */ + @Operation(summary = "查询线上菜品分类,根据商户id" , description = "通过商户id查询" ) + @GetMapping("/app/getAllSimple") + public R getAllSimple(@RequestParam(value = "merchantId")Long merchantId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.orderByAsc(CanteenOnlineCategoryEntity::getSort); + wrapper.eq(CanteenOnlineCategoryEntity::getMerchantId,merchantId); +// wrapper.apply(StringUtils.isNotEmpty(categoryType),"FIND_IN_SET({0}, your_column_name)",categoryType); + List list = canteenOnlineCategoryService.list(wrapper); + return R.ok(list); + } } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java index 6ea00f74f..7cdde01e5 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java @@ -6,6 +6,9 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.canteen.dto.CanteenOnlineSpuUpdateStockReqDTO; +import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; +import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; @@ -119,4 +122,40 @@ public class CanteenOnlineSpuController { public List export(CanteenOnlineSpuEntity canteenOnlineSpu,Long[] ids) { return canteenOnlineSpuService.list(Wrappers.lambdaQuery(canteenOnlineSpu).in(ArrayUtil.isNotEmpty(ids), CanteenOnlineSpuEntity::getId, ids)); } + + +// -------------APP--------------- + + + /** + * 获取菜品列表 + * + * @param categoryId 分类编号,不传默认查询全部 + * @return + */ + @GetMapping("/app/getCanteenSpuList") + @Operation(summary = "获取在线点餐的菜品列表" , description = "1.通过分类id,可以不填,默认查全部,2.商户id,必传" ) + public R getCanteenSpuList(@RequestParam(value = "categoryId", required = false) String categoryId, + @RequestParam(value = "merchantId") String merchantId ) { + return canteenOnlineSpuService.getCanteenOnlineSpuList(categoryId,merchantId); + } + + @PostMapping("/app/updateSkuStock") + @SysLog("更新菜品库存") + public R updateSkuStock(@RequestBody CanteenOnlineSpuUpdateStockReqDTO canteenOnlineSpuUpdateStockReqDTO) { + return canteenOnlineSpuService.updateOnlineSpuSkuStock(canteenOnlineSpuUpdateStockReqDTO); + } + + + /** + * 通过ids查询菜品spu + * @param ids ids + * @return R + */ + @Operation(summary = "通过ids查询" , description = "通过ids查询" ) + @PostMapping("/ad/getSpuListByIds" ) + @PreAuthorize("@pms.hasPermission('canteen_canteenSpu_view')" ) + public R getByIds(@RequestBody List ids) { + return R.ok( canteenOnlineSpuService.list(new LambdaQueryWrapper().in(CanteenOnlineSpuEntity::getId,ids))); + } } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java index 606c71283..c80ba103d 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java @@ -133,7 +133,7 @@ public class CanteenSpuController { } -// --------------APP----------------- +// --------------AD----------------- /** diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenCategoryEntity.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenCategoryEntity.java index c83c9f3b5..81a916035 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenCategoryEntity.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenCategoryEntity.java @@ -113,4 +113,10 @@ public class CanteenCategoryEntity extends Model { */ @Schema(description="餐段类型") private String categoryType; + + /** + * 商家id + */ + @Schema(description = "商家id") + private Long merchantId; } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java index b3a4e002f..94c951e59 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java @@ -106,4 +106,10 @@ public class CanteenOnlineCategoryEntity extends Model { * 商品价格,单位使用:分 */ @Schema(description="商品价格,单位使用:分") + @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 + @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 private Integer price; /** * 市场价,单位使用:分 */ @Schema(description="市场价,单位使用:分") + @JsonSerialize(using = MoneySerializer.class) // 分 -> 元 + @JsonDeserialize(using = MoneyDeserializer.class) // 元 -> 分 private Integer marketPrice; /** diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenOnlineSpuMapper.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenOnlineSpuMapper.java index ca8dd3cb0..152d75e6e 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenOnlineSpuMapper.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenOnlineSpuMapper.java @@ -1,5 +1,7 @@ package com.bsd.pjcloud.canteen.mapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import org.apache.ibatis.annotations.Mapper; @@ -8,4 +10,28 @@ import org.apache.ibatis.annotations.Mapper; public interface CanteenOnlineSpuMapper extends PjcloudBaseMapper { + /** + * 更新商品 SPU 库存 + * + * @param id 商品 SPU 编号 + * @param incrCount 增加的库存数量 + */ + default int updateStock(Long id, Integer incrCount) { + // 拼接 SQL + if (incrCount == 0) { + return 0; + } + String sql; + if (incrCount > 0) { + sql = " stock = stock + " + incrCount + ", sales_count = sales_count - " + incrCount; + } else { + sql = " stock = stock - " + Math.abs(incrCount) + ", sales_count = sales_count + " + Math.abs(incrCount); + } + // 执行更新 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .setSql(sql) + .eq(CanteenOnlineSpuEntity::getId, id); + return update(null, updateWrapper); + + } } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenOnlineSpuService.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenOnlineSpuService.java index a20da579a..0a7f5eb52 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenOnlineSpuService.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenOnlineSpuService.java @@ -1,8 +1,27 @@ package com.bsd.pjcloud.canteen.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.canteen.dto.CanteenOnlineSpuUpdateStockReqDTO; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; +import com.bsd.pjcloud.common.core.util.R; public interface CanteenOnlineSpuService extends IService { + + /** + * 根据分类id获取商品列表 + * 根据商户id获取商品列表 + * @param categoryId + * @param merchantId + * @return + */ + R getCanteenOnlineSpuList(String categoryId, String merchantId); + + + /** + * 修改商品库存 + * @param canteenOnlineSpuUpdateStockReqDTO + * @return + */ + R updateOnlineSpuSkuStock(CanteenOnlineSpuUpdateStockReqDTO canteenOnlineSpuUpdateStockReqDTO); } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java index 98c4d94bf..b6cf1a685 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenOnlineSpuServiceImpl.java @@ -1,10 +1,22 @@ package com.bsd.pjcloud.canteen.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.canteen.dto.CanteenOnlineSpuUpdateStockReqDTO; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; +import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.canteen.mapper.CanteenOnlineSpuMapper; import com.bsd.pjcloud.canteen.service.CanteenOnlineSpuService; +import com.bsd.pjcloud.canteen.vo.ADCanteenSpuListVO; +import com.bsd.pjcloud.canteen.vo.APPOnlineSpuVO; +import com.bsd.pjcloud.common.core.util.BeanUtils; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; + +import java.util.List; + /** * 在线点餐spu * @@ -13,4 +25,29 @@ import org.springframework.stereotype.Service; */ @Service public class CanteenOnlineSpuServiceImpl extends ServiceImpl implements CanteenOnlineSpuService { + @Override + public R getCanteenOnlineSpuList(String categoryId, String merchantId) { + LambdaQueryWrapper canteenOnlineSpuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + canteenOnlineSpuEntityLambdaQueryWrapper.eq(StringUtils.isNotEmpty(categoryId),CanteenOnlineSpuEntity::getCategoryId, categoryId); + canteenOnlineSpuEntityLambdaQueryWrapper.eq(CanteenOnlineSpuEntity::getMerchantId, merchantId); + List canteenSpuEntities = baseMapper.selectList(canteenOnlineSpuEntityLambdaQueryWrapper); + List bean = BeanUtils.toBean(canteenSpuEntities, APPOnlineSpuVO.class); + return R.ok(bean); + + } + + @Override + public R updateOnlineSpuSkuStock(CanteenOnlineSpuUpdateStockReqDTO canteenOnlineSpuUpdateStockReqDTO) { + // 更新 SKU 库存 + canteenOnlineSpuUpdateStockReqDTO.getItems().forEach(item -> { + int i = baseMapper.updateStock(item.getId(), item.getIncrCount()); + if (item.getIncrCount() < 0) { + if (i == 0) { + R.failed("商品库存不足"); + } + } + }); + + return R.ok(); + } } \ No newline at end of file From 6027ea1d2cfb8f308dcc2a61a7c49837da207a77 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Tue, 7 Jan 2025 16:04:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=82=B9=E9=A4=90h5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/api/feign/RemoteOnlineCanteenSpuService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java index 1acc357bb..93208c8ee 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java @@ -45,7 +45,8 @@ public interface RemoteOnlineCanteenSpuService { * @return */ @GetMapping("/canteenOnlineSpu/app/getCanteenSpuList") - R getCanteenSpuList(@RequestParam(value = "categoryId",required = false)String categoryId); + R getCanteenSpuList(@RequestParam(value = "categoryId", required = false) String categoryId, + @RequestParam(value = "merchantId") String merchantId); /**