| | |
| | | package com.oying.modules.pc.store.rest; |
| | | |
| | | import com.oying.utils.R; |
| | | 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.StoreCustomerQueryCriteria; |
| | | 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.*; |
| | | 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; |
| | | |
| | | /** |
| | | * 店铺 |
| | |
| | | @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<?> getCustomerStoreById(@PathVariable("storeId") Long storeId) { |
| | | StoreCustomerQueryCriteria criteria = new StoreCustomerQueryCriteria(); |
| | | 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); |
| | | StoreCustomerDetailDto detailDto = storeQueryService.getCustomerStoreDetail(criteria); |
| | | return ResponseEntity.ok(R.success(detailDto)); |
| | | criteria.setStatus(ProductStatusEnum.AVAILABLE.getValue()); |
| | | criteria.setLimit(3); |
| | | return productService.queryAll(criteria); |
| | | } |
| | | |
| | | } |