From b4d3224898d50b8f1e30b5c8083a520743927282 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Mon, 14 Jul 2025 21:08:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into xin

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

diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java
index 8531306..253d66c 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreServiceImpl.java
@@ -1,7 +1,5 @@
 package com.oying.modules.pc.store.service.impl;
 
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.ObjUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -9,21 +7,15 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.oying.exception.BadRequestException;
 import com.oying.exception.EntityNotFoundException;
-import com.oying.modules.pc.common.ValueUpdate;
 import com.oying.modules.pc.store.converter.StoreAssembler;
-import com.oying.modules.pc.store.converter.StoreQualificationAssembler;
 import com.oying.modules.pc.store.domain.Store;
-import com.oying.modules.pc.store.domain.StoreQualification;
 import com.oying.modules.pc.store.domain.StoreUser;
 import com.oying.modules.pc.store.domain.dto.StoreCreateRequest;
-import com.oying.modules.pc.store.domain.dto.StoreQualificationCreateRequest;
 import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria;
 import com.oying.modules.pc.store.domain.dto.StoreUpdateRequest;
 import com.oying.modules.pc.store.mapper.StoreMapper;
 import com.oying.modules.pc.store.mapper.StoreUserMapper;
-import com.oying.modules.pc.store.service.StoreQualificationService;
 import com.oying.modules.pc.store.service.StoreService;
-import com.oying.service.BucketStorageService;
 import com.oying.utils.PageResult;
 import com.oying.utils.PageUtil;
 import com.oying.utils.SecurityUtils;
@@ -35,11 +27,10 @@
 
 import java.math.BigDecimal;
 import java.time.LocalTime;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
-import java.util.stream.Collectors;
+import java.util.Set;
 
 /**
  * 店铺Service业务层处理
@@ -54,8 +45,6 @@
 
     private final StoreMapper storeMapper;
     private final StoreUserMapper storeUserMapper;
-    private final StoreQualificationService qualificationService;
-    private final BucketStorageService bucketStorageService;
 
     @Override
     public PageResult<Store> queryByPage(StoreQueryCriteria criteria) {
@@ -69,13 +58,44 @@
     }
 
     @Override
+    public List<Long> queryStoreIds(StoreQueryCriteria criteria) {
+        return storeMapper.queryStoreIds(criteria);
+    }
+
+    @Override
     public Store getMerchantStore(Long merchantId) {
         return storeMapper.selectStoreByMerchantId(merchantId);
     }
 
     @Override
-    public List<Store> queryUserStores(Long userId) {
+    public List<Store> getStoresByIds(Set<Long> ids) {
+        return storeMapper.queryByIds(ids);
+    }
+
+    @Override
+    public List<Store> getUserStores(Long userId) {
         return storeMapper.queryUserStores(userId);
+    }
+
+    @Override
+    public Store getOrThrow(Long storeId, Long version) {
+        Objects.requireNonNull(storeId, String.format("方法 '%s' 调用失败:参数 'storeId'(店铺ID)不能为 null", "findOrThrow"));
+        LambdaQueryWrapper<Store> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Store::getStoreId, storeId);
+        if (ObjUtil.isNotEmpty(version)) {
+            wrapper.eq(Store::getVersion, version);
+        }
+        Store existingStore = storeMapper.selectOne(wrapper);
+        if (ObjUtil.isEmpty(existingStore)) {
+            throw new EntityNotFoundException(Store.class, "storeId", storeId.toString());
+        }
+        return existingStore;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(Store resources) {
+        storeMapper.insert(resources);
     }
 
     @Override
@@ -88,17 +108,26 @@
         // 创建店铺
         Store store = StoreAssembler.to(request);
         storeMapper.insert(store);
-        this.processQualificationCreate(store, request.getQualificationList());
-        this.bindUser(store.getStoreId());
         return store;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public boolean update(Store resources, boolean isDirectUpdate) {
+        LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(resources.getStoreId(), resources.getVersion());
+        if (isDirectUpdate) {
+            return this.update(resources, wrapper);
+        } else {
+            Store existingStore = this.getById(resources.getStoreId());
+            existingStore.copy(resources);
+            return this.update(existingStore, wrapper);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean update(StoreUpdateRequest request) {
-        Store existingStore = this.findOrThrow(request);
-        this.processImagesUpdate(request, existingStore);
-        this.processQualificationUpdate(request);
+        Store existingStore = this.getOrThrow(request.getStoreId(), request.getVersion());
         existingStore.copy(StoreAssembler.to(request));
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(existingStore.getStoreId(), existingStore.getVersion());
         return this.update(existingStore, wrapper);
@@ -106,16 +135,16 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean updateLogo(Long storeId, String logo, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+    public boolean updateLogo(Long storeId, Long logoImageId, Long version) {
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
-                .set(Store::getLogoImageId, logo);
+                .set(Store::getLogoImageId, logoImageId);
         return update(wrapper);
     }
 
     @Override
     public boolean updateName(Long storeId, String storeName, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getStoreName, storeName);
         return update(wrapper);
@@ -123,7 +152,7 @@
 
     @Override
     public boolean updateDescription(Long storeId, String description, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getDescription, description);
         return update(wrapper);
@@ -131,7 +160,7 @@
 
     @Override
     public boolean updateContactPhone(Long storeId, String contactPhone, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getContactPhone, contactPhone);
         return update(wrapper);
@@ -139,7 +168,7 @@
 
     @Override
     public boolean updateAddress(Long storeId, String address, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getAddress, address);
         return update(wrapper);
@@ -147,7 +176,7 @@
 
     @Override
     public boolean updateLocation(Long storeId, Double longitude, Double latitude, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getLongitude, longitude)
                 .set(Store::getLatitude, latitude);
@@ -156,7 +185,7 @@
 
     @Override
     public boolean updateRadius(Long storeId, Integer radius, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getRadius, radius);
         return update(wrapper);
@@ -164,7 +193,7 @@
 
     @Override
     public boolean updatePlatformCategory(Long storeId, Long platformCategory, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getPlatformCategoryId, platformCategory);
         return update(wrapper);
@@ -172,7 +201,7 @@
 
     @Override
     public boolean updateBusinessHours(Long storeId, LocalTime openTime, LocalTime endTime, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getOpenTime, openTime)
                 .set(Store::getCloseTime, endTime);
@@ -181,7 +210,7 @@
 
     @Override
     public boolean updateDeliveryMinimum(Long storeId, BigDecimal deliveryMinimum, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getDeliveryMinimum, deliveryMinimum);
         return update(wrapper);
@@ -189,7 +218,7 @@
 
     @Override
     public boolean updateDeliveryFee(Long storeId, BigDecimal deliveryFee, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getDeliveryFee, deliveryFee);
         return update(wrapper);
@@ -197,7 +226,7 @@
 
     @Override
     public boolean updateStatus(Long storeId, Integer status, Long version) {
-        Store existingStore = this.findOrThrow(storeId, version);
+        Store existingStore = this.getOrThrow(storeId, version);
         LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId, existingStore.getVersion())
                 .set(Store::getStatus, status);
         return update(wrapper);
@@ -214,32 +243,23 @@
     }
 
     @Override
-    public boolean existsByIdAndMerchantId(Long storeId, Long merchantId) {
-        if (storeId == null || merchantId == null) {
-            return false;
-        }
-        Store store = getById(storeId);
-        return Optional.ofNullable(store).map(i -> merchantId.equals(i.getMerchantId())).orElse(false);
-    }
-
-    private void processQualificationCreate(Store store, List<StoreQualificationCreateRequest> qualificationRequests) {
-        if (CollectionUtil.isNotEmpty(qualificationRequests)) {
-            List<StoreQualification> storeQualificationList = qualificationRequests.stream().map(i -> {
-                i.setStoreId(store.getStoreId());
-                return StoreQualificationAssembler.to(i);
-            }).collect(Collectors.toList());
-            storeQualificationList.forEach(i -> i.setStoreId(store.getStoreId()));
-            qualificationService.batchCreate(storeQualificationList);
-        }
-    }
-
-    private void bindUser(Long storeId) {
+    public boolean bindUser(Long storeId) {
         StoreUser storeUser = new StoreUser();
         storeUser.setStoreId(storeId);
         storeUser.setUserId(SecurityUtils.getCurrentUserId());
         storeUser.setRoleType("");
         storeUser.setPermissions("");
         storeUserMapper.insert(storeUser);
+        return true;
+    }
+
+    @Override
+    public boolean existsByIdAndMerchantId(Long storeId, Long merchantId) {
+        if (storeId == null || merchantId == null) {
+            return false;
+        }
+        Store store = getById(storeId);
+        return Optional.ofNullable(store).map(i -> merchantId.equals(i.getMerchantId())).orElse(false);
     }
 
     private LambdaUpdateWrapper<Store> createLambdaUpdateWrapper(Long storeId, Long version) {
@@ -250,55 +270,6 @@
             updateWrapper.eq(Store::getVersion, version);
             updateWrapper.set(Store::getVersion, version + 1);
         }
-        updateWrapper.set(Store::getUpdateBy, SecurityUtils.getCurrentUserId());
         return updateWrapper;
-    }
-
-    private Store findOrThrow(StoreUpdateRequest request) {
-        return this.findOrThrow(request.getStoreId(), request.getVersion());
-    }
-
-    private Store findOrThrow(Long storeId, Long version) {
-        Objects.requireNonNull(storeId, String.format("方法 '%s' 调用失败:参数 'storeId'(店铺ID)不能为 null", "findOrThrow"));
-        LambdaQueryWrapper<Store> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Store::getStoreId, storeId);
-        if (ObjUtil.isNotEmpty(version)) {
-            wrapper.eq(Store::getVersion, version);
-        }
-        Store existingStore = storeMapper.selectOne(wrapper);
-        if (ObjUtil.isEmpty(existingStore)) {
-            throw new EntityNotFoundException(Store.class, "storeId", storeId.toString());
-        }
-        return existingStore;
-    }
-
-    private List<Long> getDeleteImageIds(List<ValueUpdate<Long>> imageValues) {
-        List<Long> deleteImageIds = new ArrayList<>();
-        for (ValueUpdate<Long> imageValue : imageValues) {
-            if (imageValue.isChangeAndOldValueNotEmpty()) {
-                deleteImageIds.add(imageValue.getOldValue());
-            }
-        }
-        return deleteImageIds;
-    }
-
-    private void processImagesUpdate(StoreUpdateRequest request, Store existingStore) {
-        List<ValueUpdate<Long>> imageValues = ListUtil.toList(
-                new ValueUpdate<>(request.getLogoImageId(), existingStore.getLogoImageId()),
-                new ValueUpdate<>(request.getCoverImageId(), existingStore.getCoverImageId())
-        );
-        bucketStorageService.deleteAll(this.getDeleteImageIds(imageValues));
-    }
-
-    private void processQualificationUpdate(StoreUpdateRequest request) {
-        if (CollectionUtil.isNotEmpty(request.getDeletedQualificationIds())) {
-            qualificationService.deleteAll(request.getDeletedQualificationIds());
-        }
-        if (CollectionUtil.isNotEmpty(request.getUpdatedQualifications())) {
-            qualificationService.batchUpdate(request.getUpdatedQualifications());
-        }
-        if (CollectionUtil.isNotEmpty(request.getNewQualifications())) {
-            qualificationService.batchCreate(request.getNewQualifications());
-        }
     }
 }

--
Gitblit v1.9.3