Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

李进 před 2 roky
rodič
revize
7623652b07

+ 59 - 0
device-api-service-merc-mini/src/main/java/com/xy/controller/MercMiniDeviceHomePageController.java

@@ -0,0 +1,59 @@
+package com.xy.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import com.xy.annotate.RestMappingController;
+import com.xy.dto.DeviceDataDto;
+import com.xy.dto.MercMiniDeviceDto;
+import com.xy.service.DeviceDataServiceImpl;
+import com.xy.utils.MercAuthUtils;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Date;
+import java.util.List;
+
+/***
+ * 商家端小程序-首页
+ * @author 谭斌
+ * @date 2023/3/13 14:38
+ */
+@Service
+@RequiredArgsConstructor
+@Api(tags = "商家端小程序-首页")
+@RestMappingController("merc-mini/homepage")
+public class MercMiniDeviceHomePageController {
+
+    private final DeviceDataServiceImpl deviceDataService;
+
+    @PostMapping("count")
+    @ApiOperation("首页统计")
+    public R<MercMiniDeviceDto.HomePageVO> homepageCount() {
+        MercMiniDeviceDto.HomePageVO vo = new MercMiniDeviceDto.HomePageVO();
+        Long mercId = MercAuthUtils.getMercId();
+        //当天
+        MercMiniDeviceDto.DayCountVO day = new MercMiniDeviceDto.DayCountVO().setOrderNum(0).setSalesPrice(0).setRefundMoney(0);
+        List<DeviceDataDto.Vo> mercDataOneDay = deviceDataService.getMercDataOneDay(mercId, DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN));
+        if (CollUtil.isNotEmpty(mercDataOneDay)) {
+            day.setSalesPrice(mercDataOneDay.stream().mapToInt(DeviceDataDto.Vo::getSalesMoney).sum());
+            day.setOrderNum(mercDataOneDay.stream().mapToInt(DeviceDataDto.Vo::getSalesCount).sum());
+            day.setRefundMoney(mercDataOneDay.stream().mapToInt(DeviceDataDto.Vo::getRefundMoney).sum());
+        }
+        vo.setDay(day);
+        //当月
+        MercMiniDeviceDto.MonthCountVO month = new MercMiniDeviceDto.MonthCountVO().setOrderNum(0).setSalesPrice(0).setRefundMoney(0);
+        List<DeviceDataDto.Vo> mercDataOneMonth = deviceDataService.getMercDataOneMonth(mercId, DateUtil.format(new Date(), DatePattern.SIMPLE_MONTH_PATTERN));
+        if (CollUtil.isNotEmpty(mercDataOneMonth)) {
+            month.setSalesPrice(mercDataOneMonth.stream().mapToInt(DeviceDataDto.Vo::getSalesMoney).sum());
+            month.setOrderNum(mercDataOneMonth.stream().mapToInt(DeviceDataDto.Vo::getSalesCount).sum());
+            month.setRefundMoney(mercDataOneMonth.stream().mapToInt(DeviceDataDto.Vo::getRefundMoney).sum());
+        }
+        vo.setMonth(month);
+        return R.ok(vo);
+    }
+}

+ 45 - 0
device-api-service-merc-mini/src/main/java/com/xy/dto/MercMiniDeviceDto.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 
 public class MercMiniDeviceDto {
@@ -29,5 +30,49 @@ public class MercMiniDeviceDto {
         private Long deviceId;
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class HomePageVO {
+
+        @Valid
+        @ApiModelProperty(value = "今日数据")
+        private DayCountVO day;
+
+        @Valid
+        @ApiModelProperty(value = "本月数据")
+        private MonthCountVO month;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class DayCountVO {
+
+        @ApiModelProperty("订单数")
+        private Integer orderNum;
+
+        @ApiModelProperty("销售额")
+        private Integer salesPrice;
+
+        @ApiModelProperty("退款金额")
+        private Integer refundMoney;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class MonthCountVO {
+
+        @ApiModelProperty("订单数")
+        private Integer orderNum;
+
+        @ApiModelProperty("销售额")
+        private Integer salesPrice;
+
+        @ApiModelProperty("退款金额")
+        private Integer refundMoney;
+
+    }
+
 
 }

+ 44 - 0
device-api-service/src/main/java/com/xy/service/DeviceDataServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xy.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -143,6 +144,31 @@ public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceD
         return getOneData(type, deviceId, mercId, dateValue);
     }
 
+    /**
+     * 指定查询商户所有设备某天数据
+     *
+     * @param mercId
+     * @param dateValue
+     * @return
+     */
+    public List<DeviceDataDto.Vo> getMercDataOneDay(Long mercId, String dateValue) {
+        String type = SysDictUtils.getValue(DictEnum.DEVICE_DATA_TYPE.getKey(), DictSonEnum.DEVICE_DATA_TYPE_DAY.getKey(), String.class);
+        return getMercListData(type, mercId, dateValue);
+    }
+
+
+    /**
+     * 指定查询商户所有设备某月数据
+     *
+     * @param mercId
+     * @param dateValue
+     * @return
+     */
+    public List<DeviceDataDto.Vo> getMercDataOneMonth(Long mercId, String dateValue) {
+        String type = SysDictUtils.getValue(DictEnum.DEVICE_DATA_TYPE.getKey(), DictSonEnum.DEVICE_DATA_TYPE_MONTH.getKey(), String.class);
+        return getMercListData(type, mercId, dateValue);
+    }
+
     /**
      * 指定查询商户某设备某月数据
      *
@@ -188,6 +214,24 @@ public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceD
         return copy(DeviceDataDto.Vo.class, data);
     }
 
+    /**
+     * 指定查询商户所有设备某年、月、日数据
+     *
+     * @param type
+     * @param mercId
+     * @param dateValue
+     * @return
+     */
+    public List<DeviceDataDto.Vo> getMercListData(String type, Long mercId, String dateValue) {
+        LambdaQueryWrapper<DeviceData> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(DeviceData::getType, type);
+        lambdaQueryWrapper.eq(DeviceData::getMercId, mercId);
+        lambdaQueryWrapper.eq(DeviceData::getDateValue, Integer.valueOf(dateValue));
+        List<DeviceData> list = list(lambdaQueryWrapper);
+        return BeanUtil.copyToList(list, DeviceDataDto.Vo.class);
+    }
+
+
     /**
      * 日范围内每天数据
      *