package com.oying.modules.pc.store.rest;
|
|
import cn.hutool.core.collection.ListUtil;
|
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() {
|
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 -> {
|
StoreSimpleView view = new StoreSimpleView();
|
view.setId(s.getStoreId());
|
view.setName(s.getStoreName());
|
view.setLogoUrl("");
|
view.setStatus(s.getStatus());
|
return view;
|
}).collect(Collectors.toList());
|
return ResponseEntity.ok(R.success(storeViewList));
|
}
|
|
@GetMapping(value = "/{storeId}")
|
@ApiOperation("查询店铺")
|
//@PreAuthorize("@el.check('merchant:store:getById')" +
|
// " and @storeMerchantOwnershipService.check(#storeId)")
|
public ResponseEntity<?> getById(@PathVariable Long storeId) {
|
Store store = storeService.getById(storeId);
|
StoreMerchantView view = new StoreMerchantView();
|
BeanUtils.copyProperties(store, view);
|
view.setLogoUrl("");
|
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 Store store) {
|
store.setStoreId(storeId);
|
storeService.updateById(store);
|
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());
|
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());
|
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());
|
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());
|
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());
|
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());
|
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());
|
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());
|
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());
|
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());
|
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());
|
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());
|
return ResponseEntity.noContent().build();
|
}
|
}
|