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