From fc0128242f812e476470dc9bada901d36ae09daf Mon Sep 17 00:00:00 2001 From: zepengdev <lzpsmith@outlook.com> Date: Thu, 31 Jul 2025 16:37:52 +0800 Subject: [PATCH] feat: 1、增加店铺包装费用 2、修复营业时间显示问题和修改异常问题 --- oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java | 160 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 99 insertions(+), 61 deletions(-) diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java index 6e5d928..306160f 100644 --- a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java +++ b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreMerchantController.java @@ -1,15 +1,19 @@ package com.oying.modules.pc.store.rest; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; -import com.oying.utils.R; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.ObjectUtil; +import com.oying.exception.BadRequestException; import com.oying.modules.pc.store.domain.Store; -import com.oying.modules.pc.store.domain.dto.StoreCreateRequest; -import com.oying.modules.pc.store.domain.dto.StoreFieldUpdateRequest; -import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria; -import com.oying.modules.pc.store.service.StoreCreateService; -import com.oying.modules.pc.store.service.StoreService; +import com.oying.modules.pc.store.domain.dto.*; +import com.oying.modules.pc.store.domain.enums.StoreStatusEnum; +import com.oying.modules.pc.store.service.*; import com.oying.modules.pc.store.view.StoreMerchantView; import com.oying.modules.pc.store.view.StoreSimpleView; +import com.oying.utils.R; import com.oying.utils.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -17,12 +21,12 @@ import org.springframework.beans.BeanUtils; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; /** @@ -39,21 +43,26 @@ private final StoreService storeService; private final StoreCreateService storeCreateService; + private final StoreQualificationService storeQualificationService; + private final StoreQueryService storeQueryService; + private final StoreMerchantService storeMerchantService; @GetMapping(value = "/list") @ApiOperation("查询所有店铺") //@PreAuthorize("@el.check('merchant:store:list')") public ResponseEntity<?> getList() { - StoreQueryCriteria criteria = new StoreQueryCriteria(); - criteria.setMerchantId(SecurityUtils.getCurrentUserId()); - //criteria.setStatus(); - List<Store> storeList = Optional.ofNullable(storeService.queryAll(criteria)).orElse(ListUtil.empty()); - List<StoreSimpleView> storeViewList = storeList.stream().map(s -> { + List<Store> stores = Optional.ofNullable(storeService.getUserStores(SecurityUtils.getCurrentUserId())).orElse(ListUtil.empty()); + return ResponseEntity.ok(R.success(stores)); + } + + @GetMapping(value = "/simple-list") + @ApiOperation("查询所有店铺") + //@PreAuthorize("@el.check('merchant:store:list')") + public ResponseEntity<?> getSimpleStores() { + List<Store> stores = Optional.ofNullable(storeService.getUserStores(SecurityUtils.getCurrentUserId())).orElse(ListUtil.empty()); + List<StoreSimpleView> storeViewList = stores.stream().map(i -> { StoreSimpleView view = new StoreSimpleView(); - view.setId(s.getStoreId()); - view.setName(s.getStoreName()); - view.setLogoUrl(""); - view.setStatus(s.getStatus()); + BeanUtil.copyProperties(i, view, CopyOptions.create().setIgnoreNullValue(true)); return view; }).collect(Collectors.toList()); return ResponseEntity.ok(R.success(storeViewList)); @@ -61,35 +70,50 @@ @GetMapping(value = "/{storeId}") @ApiOperation("查询店铺") - //@PreAuthorize("@el.check('merchant:store:getById')" + - // " and @storeMerchantOwnershipService.check(#storeId)") - public ResponseEntity<?> getById(@PathVariable Long storeId) { + //@PreAuthorize("@el.check('merchant:store:getById')") + public ResponseEntity<?> getStoreById(@PathVariable Long storeId) { Store store = storeService.getById(storeId); - StoreMerchantView view = new StoreMerchantView(); - BeanUtils.copyProperties(store, view); - view.setLogoUrl(""); - return ResponseEntity.ok(R.success(view)); + /*StoreMerchantView view = new StoreMerchantView(); + BeanUtils.copyProperties(store, view);*/ + return ResponseEntity.ok(R.success(store)); + } + + @GetMapping(value = "/{storeId}/details") + @ApiOperation("查询店铺") + //@PreAuthorize("@el.check('merchant:store:getById')") + public ResponseEntity<?> getStoreDetailsById(@PathVariable Long storeId) { + Store store = storeService.getById(storeId); + if (ObjUtil.isNotEmpty(store)) { + store.setQualifications(storeQualificationService.getByStoreId(storeId)); + } + return ResponseEntity.ok(R.success(store)); } @PostMapping @ApiOperation("创建店铺") //@PreAuthorize("@el.check('merchant:store:create')") public ResponseEntity<?> create(@RequestBody StoreCreateRequest request) { - storeCreateService.create(request); - return ResponseEntity.status(HttpStatus.CREATED).build(); + return ResponseEntity.status(HttpStatus.CREATED).body(storeMerchantService.createStore(request)); + } + + @PostMapping(value = "/{storeId}/audit/submit") + @ApiOperation("提交审核") + //@PreAuthorize("@el.check('merchant:store:create')") + public ResponseEntity<?> submitAudit(@PathVariable Long storeId) { + storeMerchantService.submitStoreAudit(storeId); + return ResponseEntity.noContent().build(); } /** * 修改店铺信息 */ - @PostMapping(value = "/{storeId}") + @PutMapping(value = "/{storeId}") @ApiOperation("修改店铺") //@PreAuthorize("@el.check('merchant:store:update')" + // " and @storeMerchantOwnershipService.check(#storeId)") - public ResponseEntity<?> update(@PathVariable("storeId") Long storeId, - @RequestBody Store store) { - store.setStoreId(storeId); - storeService.updateById(store); + public ResponseEntity<?> update(@PathVariable("storeId") Long storeId, @RequestBody StoreUpdateRequest request) { + request.setStoreId(ObjectUtil.defaultIfNull(request.getStoreId(), storeId)); + storeMerchantService.updateStore(request); return ResponseEntity.noContent().build(); } @@ -103,7 +127,8 @@ public ResponseEntity<?> updateLogo(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreLogoImageGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateLogo(storeId, request.getLogoImageUploadId()); + Long logeImageId = Optional.ofNullable(request.getLogoImageId()).orElse(Long.getLong(request.getLogoImageUploadId())); + storeService.updateLogo(storeId, logeImageId, request.getVersion()); return ResponseEntity.noContent().build(); } @@ -117,7 +142,11 @@ public ResponseEntity<?> updateName(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreNameGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateName(storeId, request.getStoreName()); + StoreUpdateRequest updateRequest = new StoreUpdateRequest(); + updateRequest.setStoreId(storeId); + updateRequest.setStoreName(request.getStoreName()); + storeMerchantService.updateStore(updateRequest); + //storeMerchantService.saveRevisionStore(request, StoreRevisionTypeEnum.NAME_UPDATE); return ResponseEntity.noContent().build(); } @@ -131,7 +160,7 @@ public ResponseEntity<?> updateDescription(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreDescriptionGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateDescription(storeId, request.getDescription()); + storeService.updateDescription(storeId, request.getDescription(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -140,12 +169,12 @@ */ @PatchMapping(value = "/{storeId}/contactPhone") @ApiOperation("修改店铺联系电话") - @PreAuthorize("@el.check('merchant:store:list')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:list')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updateContactPhone(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreContactPhoneGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateContactPhone(storeId, request.getContactPhone()); + storeService.updateContactPhone(storeId, request.getContactPhone(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -154,12 +183,12 @@ */ @PatchMapping(value = "/{storeId}/address") @ApiOperation("修改店铺地址") - @PreAuthorize("@el.check('merchant:store:address')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:address')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updateAddress(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreAddressGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateAddress(storeId, request.getAddress()); + storeService.updateAddress(storeId, request.getAddress(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -168,12 +197,12 @@ */ @PatchMapping(value = "/{storeId}/location") @ApiOperation("修改店铺坐标") - @PreAuthorize("@el.check('merchant:store:location')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:location')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updateLocation(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreLocationGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateLocation(storeId, request.getLongitude(), request.getLatitude()); + storeService.updateLocation(storeId, request.getLongitude(), request.getLatitude(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -182,12 +211,12 @@ */ @PatchMapping(value = "/{storeId}/radius") @ApiOperation("修改店铺配送范围") - @PreAuthorize("@el.check('merchant:store:radius')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:radius')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updateRadius(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreRadiusGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateRadius(storeId, request.getRadius()); + storeService.updateRadius(storeId, request.getRadius(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -196,12 +225,12 @@ */ @PatchMapping(value = "/{storeId}/platformCategory") @ApiOperation("修改店铺绑定的经营类目") - @PreAuthorize("@el.check('merchant:store:platformCategory')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:platformCategory')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updatePlatformCategory(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStorePlatformCategoryGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updatePlatformCategory(storeId, request.getPlatformCategoryId()); + storeService.updatePlatformCategory(storeId, request.getPlatformCategoryId(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -210,12 +239,12 @@ */ @PatchMapping(value = "/{storeId}/businessHours") @ApiOperation("修改店铺营业时间") - @PreAuthorize("@el.check('merchant:store:businessHours')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:businessHours')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updateBusinessHours(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreBusinessHoursGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateBusinessHours(storeId, request.getOpenTime(), request.getCloseTime()); + storeService.updateBusinessHours(storeId, request.getOpenTime(), request.getCloseTime(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -224,12 +253,12 @@ */ @PatchMapping(value = "/{storeId}/deliveryMinimum") @ApiOperation("修改起送金额") - @PreAuthorize("@el.check('merchant:store:deliveryMinimum')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:deliveryMinimum')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updateDeliveryMinimum(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreDeliveryMinimumGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateDeliveryMinimum(storeId, request.getDeliveryMinimum()); + storeService.updateDeliveryMinimum(storeId, request.getDeliveryMinimum(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -238,12 +267,12 @@ */ @PatchMapping(value = "/{storeId}/deliveryFee") @ApiOperation("修改配送费用") - @PreAuthorize("@el.check('merchant:store:deliveryFee')" + - " and @storeMerchantOwnershipService.check(#storeId)") + /*@PreAuthorize("@el.check('merchant:store:deliveryFee')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> updateDeliveryFee(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreDeliveryFeeGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateDeliveryFee(storeId, request.getDeliveryFee()); + storeService.updateDeliveryFee(storeId, request.getDeliveryFee(), request.getVersion()); return ResponseEntity.noContent().build(); } @@ -251,13 +280,22 @@ * 修改状态 */ @PatchMapping(value = "/{storeId}/businessStatus") - @ApiOperation("修改状态") - @PreAuthorize("@el.check('merchant:store:businessStatus')" + - " and @storeMerchantOwnershipService.check(#storeId)") + @ApiOperation("修改营业状态") + /*@PreAuthorize("@el.check('merchant:store:businessStatus')" + + " and @storeMerchantOwnershipService.check(#storeId)")*/ public ResponseEntity<?> businessStatus(@PathVariable("storeId") Long storeId, @Validated(value = StoreFieldUpdateRequest.UpdateStoreBusinessStatusGroup.class) @RequestBody StoreFieldUpdateRequest request) { - storeService.updateStatus(storeId, request.getBusinessStatus()); + //storeService.updateStatus(storeId, request.getBusinessStatus(), request.getVersion()); + Store store = new Store(); + store.setStoreId(storeId); + store.setStatus(request.getBusinessStatus()); + store.setBusinessStatus(request.getBusinessStatus()); + Set<Integer> statusEnumSet = CollectionUtil.newHashSet(StoreStatusEnum.OPEN.getValue(), StoreStatusEnum.CLOSED.getValue()); + if (!statusEnumSet.contains(request.getBusinessStatus())) { + throw new BadRequestException("状态错误"); + } + storeMerchantService.updateBusinessStatus(store); return ResponseEntity.noContent().build(); } } -- Gitblit v1.9.3