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