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.ListUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import com.oying.modules.pc.store.domain.dto.StoreUpdateRequest;
|
import com.oying.utils.R;
|
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.view.StoreMerchantView;
|
import com.oying.modules.pc.store.view.StoreSimpleView;
|
import com.oying.utils.SecurityUtils;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.RequiredArgsConstructor;
|
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.stream.Collectors;
|
|
/**
|
* 店铺
|
*
|
* @author lzp
|
* @date 2025-04-22
|
*/
|
@Api(tags = "店铺(商户端)")
|
@RestController
|
@RequiredArgsConstructor
|
@RequestMapping("/api/pc/merchant/store")
|
public class StoreMerchantController {
|
|
private final StoreService storeService;
|
private final StoreCreateService storeCreateService;
|
|
@GetMapping(value = "/list")
|
@ApiOperation("查询所有店铺")
|
//@PreAuthorize("@el.check('merchant:store:list')")
|
public ResponseEntity<?> getList() {
|
List<Store> stores = Optional.ofNullable(storeService.queryUserStores(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.queryUserStores(SecurityUtils.getCurrentUserId())).orElse(ListUtil.empty());
|
List<StoreSimpleView> storeViewList = stores.stream().map(i -> {
|
StoreSimpleView view = new StoreSimpleView();
|
BeanUtil.copyProperties(i, view, CopyOptions.create().setIgnoreNullValue(true));
|
return view;
|
}).collect(Collectors.toList());
|
return ResponseEntity.ok(R.success(storeViewList));
|
}
|
|
@GetMapping(value = "/{storeId}")
|
@ApiOperation("查询店铺")
|
//@PreAuthorize("@el.check('merchant:store:getById')")
|
public ResponseEntity<?> getById(@PathVariable Long storeId) {
|
Store store = storeService.getById(storeId);
|
StoreMerchantView view = new StoreMerchantView();
|
BeanUtils.copyProperties(store, view);
|
return ResponseEntity.ok(R.success(view));
|
}
|
|
@PostMapping
|
@ApiOperation("创建店铺")
|
//@PreAuthorize("@el.check('merchant:store:create')")
|
public ResponseEntity<?> create(@RequestBody StoreCreateRequest request) {
|
storeCreateService.create(request);
|
return ResponseEntity.status(HttpStatus.CREATED).build();
|
}
|
|
/**
|
* 修改店铺信息
|
*/
|
@PostMapping(value = "/{storeId}")
|
@ApiOperation("修改店铺")
|
//@PreAuthorize("@el.check('merchant:store:update')" +
|
// " and @storeMerchantOwnershipService.check(#storeId)")
|
public ResponseEntity<?> update(@PathVariable("storeId") Long storeId, @RequestBody StoreUpdateRequest request) {
|
request.setStoreId(ObjectUtil.defaultIfNull(request.getStoreId(), storeId));
|
storeService.update(request);
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺LOGO
|
*/
|
@PatchMapping(value = "/{storeId}/logo")
|
@ApiOperation("修改店铺LOGO")
|
//@PreAuthorize("@el.check('merchant:store:list')" +
|
// " and @storeMerchantOwnershipService.check(#storeId)")
|
public ResponseEntity<?> updateLogo(@PathVariable("storeId") Long storeId,
|
@Validated(value = StoreFieldUpdateRequest.UpdateStoreLogoImageGroup.class)
|
@RequestBody StoreFieldUpdateRequest request) {
|
storeService.updateLogo(storeId, request.getLogoImageUploadId(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺名称
|
*/
|
@PatchMapping(value = "/{storeId}/name")
|
@ApiOperation("修改店铺名称")
|
//@PreAuthorize("@el.check('merchant:store:name')" +
|
// " and @storeMerchantOwnershipService.check(#storeId)")
|
public ResponseEntity<?> updateName(@PathVariable("storeId") Long storeId,
|
@Validated(value = StoreFieldUpdateRequest.UpdateStoreNameGroup.class)
|
@RequestBody StoreFieldUpdateRequest request) {
|
storeService.updateName(storeId, request.getStoreName(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺简介
|
*/
|
@PatchMapping(value = "/{storeId}/description")
|
@ApiOperation("修改店铺简介")
|
//@PreAuthorize("@el.check('merchant:store:description')" +
|
// " and @storeMerchantOwnershipService.check(#storeId)")
|
public ResponseEntity<?> updateDescription(@PathVariable("storeId") Long storeId,
|
@Validated(value = StoreFieldUpdateRequest.UpdateStoreDescriptionGroup.class)
|
@RequestBody StoreFieldUpdateRequest request) {
|
storeService.updateDescription(storeId, request.getDescription(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺联系电话
|
*/
|
@PatchMapping(value = "/{storeId}/contactPhone")
|
@ApiOperation("修改店铺联系电话")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺地址
|
*/
|
@PatchMapping(value = "/{storeId}/address")
|
@ApiOperation("修改店铺地址")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺坐标
|
*/
|
@PatchMapping(value = "/{storeId}/location")
|
@ApiOperation("修改店铺坐标")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺配送范围
|
*/
|
@PatchMapping(value = "/{storeId}/radius")
|
@ApiOperation("修改店铺配送范围")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺绑定的经营类目
|
*/
|
@PatchMapping(value = "/{storeId}/platformCategory")
|
@ApiOperation("修改店铺绑定的经营类目")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改店铺营业时间
|
*/
|
@PatchMapping(value = "/{storeId}/businessHours")
|
@ApiOperation("修改店铺营业时间")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改起送金额
|
*/
|
@PatchMapping(value = "/{storeId}/deliveryMinimum")
|
@ApiOperation("修改起送金额")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改配送费用
|
*/
|
@PatchMapping(value = "/{storeId}/deliveryFee")
|
@ApiOperation("修改配送费用")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
|
/**
|
* 修改状态
|
*/
|
@PatchMapping(value = "/{storeId}/businessStatus")
|
@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(), request.getVersion());
|
return ResponseEntity.noContent().build();
|
}
|
}
|