From b432b803248fb2f5e158eaac669e85db554d81a4 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Tue, 12 Aug 2025 14:35:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=9F=E5=A0=82=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CanteenOnlineSpuSaveDto.java | 34 +++++++++++ .../CanteenOnlineSpuSaveItemDto.java | 57 +++++++++++++++++++ .../entity/CanteenOnlineCategoryEntity.java | 3 + .../entity/CanteenOnlineSpuEntity.java | 3 + .../CanteenOnlineSpuController.java | 11 +++- .../service/CanteenOnlineSpuService.java | 19 +++++++ .../impl/CanteenOnlineSpuServiceImpl.java | 53 +++++++++++++++++ .../mapper/CanteenOnlineCategoryMapper.xml | 2 + .../mapper/CanteenOnlineSpuMapper.xml | 1 + 9 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveDto.java create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveItemDto.java diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveDto.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveDto.java new file mode 100644 index 000000000..ab7c006da --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveDto.java @@ -0,0 +1,34 @@ +package com.bsd.pjcloud.canteen.dto.canteenonline; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.bsd.pjcloud.common.core.util.TenantTable; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 在线点餐spu + * + * @author zjf + * @date 2024-12-16 23:42:19 + */ +@Data +@Schema(description = "在线点餐批量关联新增每日菜谱") +public class CanteenOnlineSpuSaveDto { + + + /** + * 商户编号 + */ + @Schema(description="商户编号") + private Long merchantId; + + private List items; + + + +} \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveItemDto.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveItemDto.java new file mode 100644 index 000000000..4df5dcebd --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/canteenonline/CanteenOnlineSpuSaveItemDto.java @@ -0,0 +1,57 @@ +package com.bsd.pjcloud.canteen.dto.canteenonline; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class CanteenOnlineSpuSaveItemDto { + + + /** + * 商品名称 + */ + @Schema(description="商品名称") + private String name; + + + @Schema(description="关联每日菜谱id") + private Long linkSpuId; + + /** + * 商品分类编号 + */ + @Schema(description="商品分类编号") + private Long categoryId; + + /** + * 商品封面图 + */ + @Schema(description="商品封面图") + private String picUrl; + + + /** + * 排序字段 + */ + @Schema(description="排序字段") + private Integer sort; + + /** + * 商品状态: 1 上架(开启) 0 下架(禁用) -1 回收 + */ + @Schema(description="商品状态: 1 上架(开启) 0 下架(禁用) -1 回收") + private Integer status; + + /** + * 商品价格,单位使用:分 + */ + @Schema(description="商品价格,单位使用:分") + private Integer price; + + + /** + * 库存 + */ + @Schema(description="库存") + private Integer stock; +} diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java index 94c951e59..35b12c287 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenOnlineCategoryEntity.java @@ -112,4 +112,7 @@ public class CanteenOnlineCategoryEntity extends Model { */ @Schema(description="租户编号") private Long tenantId; + + @Schema(description="关联每日菜谱id") + private Long linkSpuId; } \ 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 684e79835..b152d679d 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 @@ -7,6 +7,7 @@ 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.canteenonline.CanteenOnlineSpuSaveDto; import com.bsd.pjcloud.canteen.vo.APPOnlineSpuVO; import com.bsd.pjcloud.canteen.vo.app.CanteenOnlineSpuAppVO; import com.bsd.pjcloud.common.core.util.BeanUtils; @@ -58,7 +59,7 @@ public class CanteenOnlineSpuController { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.like(StrUtil.isNotBlank(canteenOnlineSpu.getName()), CanteenOnlineSpuEntity::getName, canteenOnlineSpu.getName()); wrapper.eq(Objects.nonNull(canteenOnlineSpu.getCategoryId()), CanteenOnlineSpuEntity::getCategoryId, canteenOnlineSpu.getCategoryId()); - return R.ok(canteenOnlineSpuService.page(page, wrapper)); + return R.ok(canteenOnlineSpuService.pageScope(page, wrapper)); } @@ -90,6 +91,14 @@ public class CanteenOnlineSpuController { return R.ok(canteenOnlineSpuService.save(canteenOnlineSpu)); } + @Operation(summary = "批量新增关联每日菜谱", description = "批量新增关联每日菜谱") + @SysLog("批量导入新增点餐spu") + @PostMapping("/saveCanteenSpuBatch") + @PreAuthorize("@pms.hasPermission('canteen_canteenOnlineSpu_add')") + public R saveCanteenSpuBatch(@RequestBody CanteenOnlineSpuSaveDto canteenOnlineSpuSaveDto) { + return R.ok(canteenOnlineSpuService.saveCanteenSpuBatch(canteenOnlineSpuSaveDto)); + } + /** * 修改在线点餐spu * 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 96df20ae2..f202a84af 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,7 +1,10 @@ package com.bsd.pjcloud.canteen.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.canteen.dto.CanteenOnlineSpuUpdateStockReqDTO; +import com.bsd.pjcloud.canteen.dto.canteenonline.CanteenOnlineSpuSaveDto; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import com.bsd.pjcloud.canteen.vo.APPOnlineSpuVO; import com.bsd.pjcloud.common.core.util.R; @@ -27,4 +30,20 @@ public interface CanteenOnlineSpuService extends IService wrapper); } \ 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 dc576cd08..51fb152ba 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,18 +1,31 @@ package com.bsd.pjcloud.canteen.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.canteen.dto.CanteenOnlineSpuUpdateStockReqDTO; +import com.bsd.pjcloud.canteen.dto.canteenonline.CanteenOnlineSpuSaveDto; +import com.bsd.pjcloud.canteen.dto.canteenonline.CanteenOnlineSpuSaveItemDto; +import com.bsd.pjcloud.canteen.entity.CanteenCategoryEntity; +import com.bsd.pjcloud.canteen.entity.CanteenOnlineCategoryEntity; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; +import com.bsd.pjcloud.canteen.mapper.CanteenCategoryMapper; +import com.bsd.pjcloud.canteen.mapper.CanteenOnlineCategoryMapper; import com.bsd.pjcloud.canteen.mapper.CanteenOnlineSpuMapper; import com.bsd.pjcloud.canteen.service.CanteenOnlineSpuService; 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 com.bsd.pjcloud.common.security.util.SecurityUtils; +import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * 在线点餐spu @@ -21,7 +34,12 @@ import java.util.List; * @date 2024-12-16 23:42:19 */ @Service +@AllArgsConstructor public class CanteenOnlineSpuServiceImpl extends ServiceImpl implements CanteenOnlineSpuService { + + private final CanteenCategoryMapper categoryMapper; + + private final CanteenOnlineCategoryMapper canteenOnlineCategoryMapper; @Override public R> getCanteenOnlineSpuList(String categoryId, String merchantId) { LambdaQueryWrapper canteenOnlineSpuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -50,4 +68,39 @@ public class CanteenOnlineSpuServiceImpl extends ServiceImpl items = canteenOnlineSpuSaveDto.getItems(); + List canteenSpuEntities = BeanUtils.toBean(items, CanteenOnlineSpuEntity.class); + //每日菜谱的分类,查询在线分类里面是否有 + Set categoryIds = canteenSpuEntities.stream().map(c -> c.getCategoryId()).collect(Collectors.toSet()); + List canteenCategoryEntities = categoryMapper.selectList(new LambdaQueryWrapper().select(CanteenCategoryEntity::getId).in(CanteenCategoryEntity::getId, categoryIds)); + //把canteenCategoryEntities转为key map + Map canteenCategoryEntityMap = canteenCategoryEntities.stream().collect(Collectors.toMap(CanteenCategoryEntity::getId, c -> c)); + + Long deptId = SecurityUtils.getUser().getDeptId(); + canteenSpuEntities.forEach(c -> { + CanteenCategoryEntity canteenCategoryEntity = canteenCategoryEntityMap.get(c.getCategoryId()); + String name = canteenCategoryEntity.getName(); + //查询分类里面是否有 + CanteenOnlineCategoryEntity canteenOnlineCategoryEntity = canteenOnlineCategoryMapper.selectOne(new LambdaQueryWrapper().eq(CanteenOnlineCategoryEntity::getName, name)); + if (canteenOnlineCategoryEntity == null){ + CanteenOnlineCategoryEntity bean = BeanUtils.toBean(canteenCategoryEntity, CanteenOnlineCategoryEntity.class); + canteenOnlineCategoryMapper.insert(bean); + c.setCategoryId(bean.getId()); + }else { + c.setCategoryId(canteenOnlineCategoryEntity.getId()); + } + c.setMerchantId(merchantId); + c.setDeptId(deptId); + }); + return baseMapper.insert(canteenSpuEntities); + } + + @Override + public Object pageScope(Page page, LambdaQueryWrapper wrapper) { + return baseMapper.selectPageByScope(page, wrapper, DataScope.of()); + } } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineCategoryMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineCategoryMapper.xml index b2f58437c..34c92e696 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineCategoryMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineCategoryMapper.xml @@ -17,5 +17,7 @@ + + \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineSpuMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineSpuMapper.xml index f2299a8a9..d3d1fce62 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineSpuMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenOnlineSpuMapper.xml @@ -28,5 +28,6 @@ + \ No newline at end of file