|
|
@@ -63,6 +63,9 @@ public class PosFoodController extends BaseController {
|
|
|
@Autowired
|
|
|
private IPosOrderService posOrderService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PosStoreEnrichService posStoreEnrichService;
|
|
|
+
|
|
|
//删除商品
|
|
|
@Anonymous
|
|
|
@Auth
|
|
|
@@ -311,62 +314,11 @@ public class PosFoodController extends BaseController {
|
|
|
// 按店铺ID分组商品
|
|
|
Map<Long, List<PosFood>> foodsByStore = allFoods.stream()
|
|
|
.collect(Collectors.groupingBy(PosFood::getMdid));
|
|
|
- // 1. 计算各门店评分
|
|
|
- QueryWrapper<PosReview> reviewWrapper = new QueryWrapper<>();
|
|
|
- reviewWrapper.in("md_id", storeIds);
|
|
|
- List<PosReview> reviews = posReviewService.list(reviewWrapper);
|
|
|
-
|
|
|
- reviewMap = reviews.stream()
|
|
|
- .collect(Collectors.groupingBy(PosReview::getMdId));
|
|
|
-
|
|
|
- // 2. 统计各门店本月订单数(按 cretim 当前月份)
|
|
|
- QueryWrapper<PosOrder> orderWrapper = new QueryWrapper<>();
|
|
|
- orderWrapper.in("md_id", storeIds);
|
|
|
- orderWrapper.apply("DATE_FORMAT(cretim,'%Y-%m') = DATE_FORMAT(NOW(),'%Y-%m')");
|
|
|
- List<PosOrder> orders = posOrderService.list(orderWrapper);
|
|
|
- orderCountMap = orders.stream()
|
|
|
- .collect(Collectors.groupingBy(PosOrder::getMdId, Collectors.counting()));
|
|
|
- QueryWrapper<OperatingHours> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.in("md_id", storeIds);
|
|
|
- hourslist = operatingHoursService.list(wrapper);
|
|
|
- DateUtil dateUtil = new DateUtil();
|
|
|
-
|
|
|
+ posStoreEnrichService.enrichStoreList(stores);
|
|
|
// 3. 为每个店铺设置对应的商品
|
|
|
for (PosStore store : stores) {
|
|
|
FoodSearchOutput output = new FoodSearchOutput();
|
|
|
- Long mdId = store.getId() == null ? null : store.getId().longValue();
|
|
|
- List<PosReview> storeReviews = (mdId == null || reviewMap.isEmpty()) ? null : reviewMap.get(mdId);
|
|
|
-
|
|
|
- double score;
|
|
|
- if (storeReviews == null || storeReviews.isEmpty()) {
|
|
|
- score = 4.5d;
|
|
|
- } else {
|
|
|
- double avg = storeReviews.stream()
|
|
|
- .mapToLong(PosReview::getScore)
|
|
|
- .average()
|
|
|
- .orElse(4.5d);
|
|
|
- // 平均分按 0.5 分粒度四舍五入,例如 3, 3.5, 4, 4.5
|
|
|
- score = Math.round(avg * 2.0d) / 2.0d;
|
|
|
- }
|
|
|
- store.setPingf(score);
|
|
|
-
|
|
|
- // 设置本月售出订单数量(ddsl)
|
|
|
- long monthCount = (mdId == null || orderCountMap.isEmpty()) ? 0L : orderCountMap.getOrDefault(mdId, 0L);
|
|
|
- store.setDdsl(monthCount);
|
|
|
-
|
|
|
- Boolean dayang = false;
|
|
|
- List<OperatingHours> mdHours=hourslist.stream().filter(x-> store.getId().equals(x.getMdId().intValue())).collect(Collectors.toList());
|
|
|
- //在营业时间范围内返回true
|
|
|
- for (int i = 0; i < mdHours.size(); i++) {
|
|
|
- Boolean sbsj = dateUtil.isLegalTime(mdHours.get(i).getStartTime(), mdHours.get(i).getEndTime());
|
|
|
- if (sbsj == true) {
|
|
|
- dayang = true;
|
|
|
- }
|
|
|
- }
|
|
|
- //不在时间范围内标识为打烊
|
|
|
- if (dayang == false) {
|
|
|
- store.setState(1L);
|
|
|
- }
|
|
|
+
|
|
|
output.setPosStore(store);
|
|
|
// 从分组结果中获取该店铺的商品
|
|
|
List<PosFood> storeFoods = foodsByStore.getOrDefault(store.getId().longValue(), new ArrayList<>());
|
|
|
@@ -428,75 +380,8 @@ public class PosFoodController extends BaseController {
|
|
|
IPage<PosStore> data = posStoreService.page(page, storeWrapper);
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
List<PosStore> stores=data.getRecords();
|
|
|
- Map<Long, List<PosReview>> reviewMap = Collections.emptyMap();
|
|
|
- Map<Long, Long> orderCountMap = Collections.emptyMap();
|
|
|
- List<OperatingHours> hourslist=new ArrayList<>();
|
|
|
- if(!stores.isEmpty()){
|
|
|
- List<Long> mdIds = stores.stream()
|
|
|
- .map(store -> store.getId() == null ? null : store.getId().longValue())
|
|
|
- .filter(idVal -> idVal != null)
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- if (!mdIds.isEmpty()) {
|
|
|
- // 1. 计算各门店评分
|
|
|
- QueryWrapper<PosReview> reviewWrapper = new QueryWrapper<>();
|
|
|
- reviewWrapper.in("md_id", mdIds);
|
|
|
- List<PosReview> reviews = posReviewService.list(reviewWrapper);
|
|
|
-
|
|
|
- reviewMap = reviews.stream()
|
|
|
- .collect(Collectors.groupingBy(PosReview::getMdId));
|
|
|
-
|
|
|
- // 2. 统计各门店本月订单数(按 cretim 当前月份)
|
|
|
- QueryWrapper<PosOrder> orderWrapper = new QueryWrapper<>();
|
|
|
- orderWrapper.in("md_id", mdIds);
|
|
|
- orderWrapper.apply("DATE_FORMAT(cretim,'%Y-%m') = DATE_FORMAT(NOW(),'%Y-%m')");
|
|
|
- List<PosOrder> orders = posOrderService.list(orderWrapper);
|
|
|
- orderCountMap = orders.stream()
|
|
|
- .collect(Collectors.groupingBy(PosOrder::getMdId, Collectors.counting()));
|
|
|
- QueryWrapper<OperatingHours> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.in("md_id", mdIds);
|
|
|
- hourslist = operatingHoursService.list(wrapper);
|
|
|
-
|
|
|
- }
|
|
|
- DateUtil dateUtil = new DateUtil();
|
|
|
- for(PosStore store:stores){
|
|
|
- Long mdId = store.getId() == null ? null : store.getId().longValue();
|
|
|
- List<PosReview> storeReviews = (mdId == null || reviewMap.isEmpty()) ? null : reviewMap.get(mdId);
|
|
|
-
|
|
|
- double score;
|
|
|
- if (storeReviews == null || storeReviews.isEmpty()) {
|
|
|
- score = 4.5d;
|
|
|
- } else {
|
|
|
- double avg = storeReviews.stream()
|
|
|
- .mapToLong(PosReview::getScore)
|
|
|
- .average()
|
|
|
- .orElse(4.5d);
|
|
|
- // 平均分按 0.5 分粒度四舍五入,例如 3, 3.5, 4, 4.5
|
|
|
- score = Math.round(avg * 2.0d) / 2.0d;
|
|
|
- }
|
|
|
- store.setPingf(score);
|
|
|
-
|
|
|
- // 设置本月售出订单数量(ddsl)
|
|
|
- long monthCount = (mdId == null || orderCountMap.isEmpty()) ? 0L : orderCountMap.getOrDefault(mdId, 0L);
|
|
|
- store.setDdsl(monthCount);
|
|
|
-
|
|
|
- Boolean dayang = false;
|
|
|
- List<OperatingHours> mdHours=hourslist.stream().filter(x-> store.getId().equals(x.getMdId().intValue())).collect(Collectors.toList());
|
|
|
- //在营业时间范围内返回true
|
|
|
- for (int i = 0; i < mdHours.size(); i++) {
|
|
|
- Boolean sbsj = dateUtil.isLegalTime(mdHours.get(i).getStartTime(), mdHours.get(i).getEndTime());
|
|
|
- if (sbsj == true) {
|
|
|
- dayang = true;
|
|
|
- }
|
|
|
- }
|
|
|
- //不在时间范围内标识为打烊
|
|
|
- if (dayang == false) {
|
|
|
- store.setState(1L);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- response.put("list", data.getRecords());
|
|
|
+ posStoreEnrichService.enrichStoreList(stores);
|
|
|
+ response.put("list", stores);
|
|
|
response.put("total", data.getTotal());
|
|
|
return success(response);
|
|
|
}
|