package com.oying.modules.pc.store.rest;
|
|
import cn.hutool.core.util.ObjUtil;
|
import com.oying.modules.pc.product.domain.Product;
|
import com.oying.modules.pc.product.domain.dto.ProductQueryCriteria;
|
import com.oying.modules.pc.product.domain.enums.ProductStatusEnum;
|
import com.oying.modules.pc.product.service.ProductService;
|
import com.oying.modules.pc.store.domain.Store;
|
import com.oying.modules.pc.store.domain.StoreQualification;
|
import com.oying.modules.pc.store.domain.dto.StoreCustomerDetailDto;
|
import com.oying.modules.pc.store.domain.dto.StoreQualificationQueryCriteria;
|
import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria;
|
import com.oying.modules.pc.store.service.StoreQualificationService;
|
import com.oying.modules.pc.store.service.StoreQueryService;
|
import com.oying.modules.pc.store.service.StoreService;
|
import com.oying.modules.pc.store.view.CustomerStoreView;
|
import com.oying.modules.pc.utils.BusinessHoursUtils;
|
import com.oying.utils.PageResult;
|
import com.oying.utils.R;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
|
/**
|
* 店铺
|
*
|
* @author lzp
|
* @date 2025-04-22
|
*/
|
@Api(tags = "店铺(客户端)")
|
@RestController
|
@RequestMapping("/api/pc/customer/store")
|
@RequiredArgsConstructor
|
public class StoreCustomerController {
|
|
private final StoreService storeService;
|
private final StoreQueryService storeQueryService;
|
private final StoreQualificationService storeQualificationService;
|
private final ProductService productService;
|
|
@GetMapping(value = "/page")
|
@ApiOperation("查询店铺")
|
public ResponseEntity<?> getStoresByPage(StoreQueryCriteria criteria) {
|
PageResult<Store> pagedStores = storeQueryService.findPagedStores(criteria);
|
List<Store> stores = pagedStores.getContent();
|
for (Store store : stores) {
|
store.setProducts(this.getProductsByStoreId(store.getStoreId()));
|
}
|
return ResponseEntity.ok(R.success(stores));
|
}
|
|
@GetMapping(value = "/{storeId}")
|
@ApiOperation("查询店铺")
|
public ResponseEntity<?> getStoreById(@PathVariable("storeId") Long storeId) {
|
Store store = storeService.getById(storeId);
|
CustomerStoreView view = new CustomerStoreView();
|
BeanUtils.copyProperties(store, view);
|
view.setBusinessHours(BusinessHoursUtils.formatBusinessHours(store.getOpenTime(), store.getCloseTime()));
|
return ResponseEntity.ok(R.success(view));
|
}
|
|
@GetMapping(value = "/{storeId}/details")
|
@ApiOperation("查询店铺")
|
public ResponseEntity<?> getStoreDetailsById(@PathVariable("storeId") Long storeId) {
|
Store store = storeService.getById(storeId);
|
if (ObjUtil.isNotEmpty(store)) {
|
store.setQualifications(storeQualificationService.queryByStoreId(storeId));
|
}
|
return ResponseEntity.ok(R.success(store));
|
}
|
|
private List<Product> getProductsByStoreId(Long storeId) {
|
ProductQueryCriteria criteria = new ProductQueryCriteria();
|
criteria.setStoreId(storeId);
|
criteria.setStatus(ProductStatusEnum.AVAILABLE.getValue());
|
criteria.setLimit(3);
|
return productService.queryAll(criteria);
|
}
|
|
}
|