From 6e0a83c55db4bae4d23a4c281946bda1d610f678 Mon Sep 17 00:00:00 2001
From: zepengdev <lzpsmith@outlook.com>
Date: Sat, 14 Jun 2025 12:32:31 +0800
Subject: [PATCH] 补充前次提交的遗漏内容,前次提交SHA:a6f4dd

---
 oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQualificationServiceImpl.java |  101 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 89 insertions(+), 12 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQualificationServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQualificationServiceImpl.java
index dc415a8..10b5e26 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQualificationServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQualificationServiceImpl.java
@@ -1,13 +1,21 @@
 package com.oying.modules.pc.store.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjUtil;
+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.google.common.collect.Lists;
 import com.oying.exception.EntityExistException;
+import com.oying.exception.EntityNotFoundException;
+import com.oying.modules.pc.common.ValueUpdate;
+import com.oying.modules.pc.store.converter.StoreQualificationAssembler;
 import com.oying.modules.pc.store.domain.StoreQualification;
 import com.oying.modules.pc.store.domain.dto.StoreQualificationQueryCriteria;
+import com.oying.modules.pc.store.domain.dto.StoreQualificationUpdateRequest;
 import com.oying.modules.pc.store.mapper.StoreQualificationMapper;
 import com.oying.modules.pc.store.service.StoreQualificationService;
+import com.oying.service.BucketStorageService;
 import com.oying.utils.PageResult;
 import com.oying.utils.PageUtil;
 import lombok.RequiredArgsConstructor;
@@ -15,33 +23,49 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
-* @description 服务实现
-* @author lzp
-* @date 2025-04-27
-**/
+ * @author lzp
+ * @description 服务实现
+ * @date 2025-04-27
+ **/
 @Service
 @RequiredArgsConstructor
 public class StoreQualificationServiceImpl extends ServiceImpl<StoreQualificationMapper, StoreQualification> implements StoreQualificationService {
 
     private final StoreQualificationMapper storeQualificationMapper;
+    private final BucketStorageService bucketStorageService;
 
     @Override
-    public PageResult<StoreQualification> queryAll(StoreQualificationQueryCriteria criteria, Page<Object> page){
+    public PageResult<StoreQualification> queryAll(StoreQualificationQueryCriteria criteria, Page<Object> page) {
         return PageUtil.toPage(storeQualificationMapper.findAll(criteria, page));
     }
 
     @Override
-    public List<StoreQualification> queryAll(StoreQualificationQueryCriteria criteria){
+    public List<StoreQualification> queryAll(StoreQualificationQueryCriteria criteria) {
         return storeQualificationMapper.findAll(criteria);
+    }
+
+    @Override
+    public List<StoreQualification> queryBatchIds(List<Long> ids) {
+        LambdaQueryWrapper<StoreQualification> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(StoreQualification::getQualificationId, ids);
+        return storeQualificationMapper.selectList(wrapper);
+    }
+
+    @Override
+    public List<StoreQualification> queryByStoreId(Long storeId) {
+        LambdaQueryWrapper<StoreQualification> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StoreQualification::getStoreId, storeId);
+        return storeQualificationMapper.selectList(wrapper);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void create(StoreQualification resources) {
-        // resources.setQualificationId(StoreQualificationIdGenerator.getId());
         storeQualificationMapper.insert(resources);
     }
 
@@ -52,20 +76,73 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void update(StoreQualification resources) {
-        // resources.setUpdateBy();
-        Long qualificationId = resources.getQualificationId();
+    public void update(StoreQualificationUpdateRequest request) {
+
+        Long qualificationId = request.getQualificationId();
         StoreQualification existingStoreQualification = this.getById(qualificationId);
         if (ObjUtil.isEmpty(existingStoreQualification)) {
-            throw new EntityExistException(StoreQualification.class, "id", Optional.ofNullable(qualificationId).map(Object::toString).orElse("null"));
+            throw new EntityNotFoundException(StoreQualification.class, "qualificationId", Optional.ofNullable(qualificationId).map(Object::toString).orElse("null"));
         }
-        existingStoreQualification.copy(resources);
+
+        // 新的资质数据
+        StoreQualification newStoreQualification = StoreQualificationAssembler.to(request);
+        // 记录图片值的变更
+        ValueUpdate<Long> imageValueUpdate = new ValueUpdate<>(newStoreQualification.getQualificationImageId(), existingStoreQualification.getQualificationImageId());
+        // 填充新的数据
+        existingStoreQualification.copy(newStoreQualification);
         storeQualificationMapper.updateById(existingStoreQualification);
+        // 删除旧图片原纪录
+        if (imageValueUpdate.isChangeAndOldValueNotEmpty()) {
+            bucketStorageService.deleteAll(Lists.newArrayList(imageValueUpdate.getOldValue()));
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void batchUpdate(List<StoreQualificationUpdateRequest> requests) {
+
+        List<Long> updateIds = requests.stream().map(StoreQualificationUpdateRequest::getQualificationId).collect(Collectors.toList());
+        List<StoreQualification> existingStoreQualifications = this.queryBatchIds(updateIds);
+        if (CollectionUtil.isEmpty(existingStoreQualifications)) {
+            throw new EntityNotFoundException(StoreQualification.class, "qualificationIds", updateIds.toString());
+        }
+
+        Map<Long, StoreQualificationUpdateRequest> requestMap = requests.stream().collect(Collectors.toMap(
+                StoreQualificationUpdateRequest::getQualificationId,
+                storeQualificationUpdateRequest -> storeQualificationUpdateRequest
+        ));
+
+        // 提取需要删除的图片原纪录ID
+        List<Long> deleteBucketStorageIds = existingStoreQualifications.stream().filter(i -> {
+            Long newCloudStorageId = requestMap.get(i.getQualificationId()).getImageUploadFileId();
+            return ValueUpdate.isChangeAndOldValueNotEmpty(newCloudStorageId, i.getQualificationImageId());
+        }).map(StoreQualification::getQualificationImageId).collect(Collectors.toList());
+
+        // 填充新的数据
+        for (StoreQualification existingStoreQualification : existingStoreQualifications) {
+            StoreQualification newStoreQualification = StoreQualificationAssembler.to(requestMap.get(existingStoreQualification.getQualificationId()));
+            existingStoreQualification.copy(newStoreQualification);
+        }
+
+        this.updateBatchById(existingStoreQualifications);
+        // 删除旧图片原记录
+        if (CollectionUtil.isNotEmpty(deleteBucketStorageIds)) {
+            bucketStorageService.deleteAll(deleteBucketStorageIds);
+        }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteAll(List<Long> ids) {
+        List<StoreQualification> existingStoreQualifications = this.queryBatchIds(ids);
+        if (CollectionUtil.isEmpty(existingStoreQualifications)) {
+            throw new EntityNotFoundException(StoreQualification.class, "qualificationIds", ids.toString());
+        }
         storeQualificationMapper.deleteBatchIds(ids);
+        // 删除旧图片原记录
+        List<Long> bucketStorageIds = existingStoreQualifications.stream().map(StoreQualification::getQualificationImageId).collect(Collectors.toList());
+        if (CollectionUtil.isNotEmpty(bucketStorageIds)) {
+            bucketStorageService.deleteAll(bucketStorageIds);
+        }
     }
 }

--
Gitblit v1.9.3