From 6ef91e7506cccce95f38fb61c44a2f772e42c27c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A2=A8=E5=A4=A7=E5=8F=94?= <494979559@qq.com>
Date: Wed, 9 Oct 2024 10:53:03 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=93=BA=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/ruoyi/ss/store/domain/StoreBO.java    | 18 +++++++++++----
 .../ss/store/service/StoreValidator.java      |  6 +++++
 .../store/service/impl/StoreServiceImpl.java  | 23 ++++++++++++++++++-
 .../service/impl/StoreValidatorImpl.java      | 11 +++++++++
 .../controller/app/AppStoreController.java    | 15 ++++++++++++
 5 files changed, 68 insertions(+), 5 deletions(-)

diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/StoreBO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/StoreBO.java
index 63682dde..9caadd94 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/StoreBO.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/StoreBO.java
@@ -21,16 +21,12 @@ public class StoreBO extends Store {
         bo.setAddress(getAddress());
         bo.setLng(getLng());
         bo.setLat(getLat());
-        bo.setBusinessTimeStart(getBusinessTimeStart());
-        bo.setBusinessTimeEnd(getBusinessTimeEnd());
         bo.setProvince(getProvince());
         bo.setCity(getCity());
         bo.setCounty(getCounty());
         bo.setType(getType());
         bo.setContactName(getContactName());
         bo.setContactMobile(getContactMobile());
-        bo.setShow(getShow());
-        bo.setUseOutTime(getUseOutTime());
         return bo;
     }
 
@@ -108,4 +104,18 @@ public class StoreBO extends Store {
         bo.setUseOutTime(getUseOutTime());
         return bo;
     }
+
+    /**
+     * 用户配置店铺
+     * @return
+     */
+    public StoreBO filterConfigByApp() {
+        StoreBO bo = new StoreBO();
+        bo.setStoreId(getStoreId());
+        bo.setBusinessTimeStart(getBusinessTimeStart());
+        bo.setBusinessTimeEnd(getBusinessTimeEnd());
+        bo.setShow(getShow());
+        bo.setUseOutTime(getUseOutTime());
+        return bo;
+    }
 }
diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/StoreValidator.java b/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/StoreValidator.java
index 4b84218d..64600912 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/StoreValidator.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/StoreValidator.java
@@ -2,6 +2,7 @@ package com.ruoyi.ss.store.service;
 
 import com.ruoyi.common.core.domain.ValidateResult;
 import com.ruoyi.ss.store.domain.Store;
+import com.ruoyi.ss.store.domain.StoreBO;
 import com.ruoyi.ss.store.domain.StoreVo;
 
 import java.time.LocalTime;
@@ -98,4 +99,9 @@ public interface StoreValidator {
      * 判断是否在营业时间内
      */
     boolean isBusinessTime(StoreVo store, LocalTime time);
+
+    /**
+     * 后校验
+     */
+    void afterCheck(StoreVo vo);
 }
diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreServiceImpl.java
index f7ecb703..8c26b009 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreServiceImpl.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreServiceImpl.java
@@ -12,6 +12,7 @@ import com.ruoyi.ss.store.domain.enums.StoreStatus;
 import com.ruoyi.ss.store.mapper.StoreMapper;
 import com.ruoyi.ss.store.service.StoreAssembler;
 import com.ruoyi.ss.store.service.StoreService;
+import com.ruoyi.ss.store.service.StoreValidator;
 import com.ruoyi.ss.storeApply.domain.enums.StoreApplyType;
 import com.ruoyi.ss.storeApply.service.StoreApplyConverter;
 import com.ruoyi.ss.storeApply.service.StoreApplyService;
@@ -56,6 +57,9 @@ public class StoreServiceImpl implements StoreService
     @Autowired
     private StoreApplyConverter storeApplyConverter;
 
+    @Autowired
+    private StoreValidator storeValidator;
+
     /**
      * 查询店铺
      *
@@ -97,6 +101,10 @@ public class StoreServiceImpl implements StoreService
             int i = storeMapper.insertSmStore(store);
             ServiceUtil.assertion(i != 1, "新增店铺失败");
 
+            // 后校验
+            StoreVo vo = this.selectSmStoreById(store.getStoreId());
+            storeValidator.afterCheck(vo);
+
             // 如果没有默认店铺,则将其设为默认店铺
             if (this.selectDefaultStore(store.getUserId()) == null) {
                 this.setDefault(store.getUserId(), store.getStoreId());
@@ -117,7 +125,20 @@ public class StoreServiceImpl implements StoreService
     {
         store.setUpdateTime(DateUtils.getNowDate());
         store.setUpdateBy(SecurityUtils.getUsername());
-        return storeMapper.updateSmStore(store);
+
+        Integer result = transactionTemplate.execute(status -> {
+            // 更新
+            int update = storeMapper.updateSmStore(store);
+            ServiceUtil.assertion(update != 1, "修改店铺失败,请刷新后重试");
+
+            // 后校验
+            StoreVo vo = this.selectSmStoreById(store.getStoreId());
+            storeValidator.afterCheck(vo);
+
+            return update;
+        });
+
+        return result == null ? 0 : result;
     }
 
     @Override
diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreValidatorImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreValidatorImpl.java
index bfd64fe0..de29415e 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreValidatorImpl.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/store/service/impl/StoreValidatorImpl.java
@@ -3,6 +3,7 @@ package com.ruoyi.ss.store.service.impl;
 import com.ruoyi.common.core.domain.BaseValidator;
 import com.ruoyi.common.core.domain.ValidateResult;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.ServiceUtil;
 import com.ruoyi.common.utils.collection.CollectionUtils;
 import com.ruoyi.ss.device.domain.DeviceQuery;
 import com.ruoyi.ss.device.service.DeviceService;
@@ -328,6 +329,16 @@ public class StoreValidatorImpl extends BaseValidator implements StoreValidator
         }
     }
 
+    @Override
+    public void afterCheck(StoreVo vo) {
+        if (vo == null) {
+            return;
+        }
+
+        ServiceUtil.assertion(this.validateBusinessTime(vo.getBusinessTimeStart(), vo.getBusinessTimeEnd()));
+
+    }
+
 
     /**
      * 校验时间是符合规则
diff --git a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppStoreController.java b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppStoreController.java
index fab157cb..1c841609 100644
--- a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppStoreController.java
+++ b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppStoreController.java
@@ -68,11 +68,26 @@ public class AppStoreController extends BaseController {
     @ApiOperation("申请修改店铺信息")
     @PutMapping
     public AjaxResult edit(@RequestBody @Validated(ValidGroup.FrontUpdate.class) StoreBO data) {
+        StoreVo store = storeService.selectSmStoreById(data.getStoreId());
+        if (!storeValidator.isStoreBelongUser(store, getUserId())) {
+            return error("这不是您的店铺,无法修改");
+        }
         data = data.filterUpdateByApp();
         ServiceUtil.assertion(storeValidator.preUpdateByApp(data));
         return toAjax(storeService.updateApply(data));
     }
 
+    @ApiOperation("修改店铺配置")
+    @PutMapping("/config")
+    public AjaxResult configStore(@RequestBody @Validated(ValidGroup.FrontUpdate.class) StoreBO data) {
+        StoreVo store = storeService.selectSmStoreById(data.getStoreId());
+        if (!storeValidator.isStoreBelongUser(store, getUserId())) {
+            return error("这不是您的店铺,无法修改");
+        }
+        data = data.filterConfigByApp();
+        return toAjax(storeService.updateSmStore(data));
+    }
+
     /**
      * 删除店铺信息
      * @param storeId