Browse Source

商家端首页

LuoDLeo 7 months ago
parent
commit
0aadb7a811

+ 100 - 5
src/main/java/org/springblade/modules/api/controller/ApiMerchantUserController.java

@@ -18,6 +18,10 @@ import org.springblade.core.tool.utils.DigestUtil;
 import org.springblade.core.tool.utils.WebUtil;
 import org.springblade.modules.api.request.AddChildAccountRequest;
 import org.springblade.modules.api.request.AlertChildAccountRequest;
+import org.springblade.modules.api.request.TimeRangeReq;
+import org.springblade.modules.api.response.MerchantPieRes;
+import org.springblade.modules.api.response.TurnoverRes;
+import org.springblade.modules.api.utils.TimeRangeReqUtils;
 import org.springblade.modules.api.vo.MerchantIncomeVO;
 import org.springblade.modules.auth.enums.UserEnum;
 import org.springblade.modules.auth.utils.TokenUtil;
@@ -31,6 +35,7 @@ import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.*;
 
 /**
  * Author pangqijun
@@ -73,7 +78,7 @@ public class ApiMerchantUserController {
     }
 
     @PostMapping("/addChildAccount")
-    @ApiOperationSupport(order = 2)
+    @ApiOperationSupport(order = 3)
     @ApiOperation(value = "添加子账号", notes = "传入userMerchant")
     public R<Void> addChildAccount(@Valid @RequestBody AddChildAccountRequest request) {
         if (!request.getPassword().equals(request.getRePassword())) {
@@ -107,7 +112,7 @@ public class ApiMerchantUserController {
 
     @Transactional
     @PostMapping("/updateChildAccount")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 4)
     @ApiOperation(value = "修改子账号", notes = "alertChildAccountRequest")
     public R<Void> deleteChildAccount(@Valid @RequestBody AlertChildAccountRequest request) {
         UserMerchantVO userMerchant = iUserMerchantService.getByUserId(request.getId());
@@ -120,7 +125,7 @@ public class ApiMerchantUserController {
 
     @Transactional
     @PostMapping("/deleteChildAccount")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 5)
     @ApiOperation(value = "删除子账号", notes = "传入ids")
     public R<Void> deleteChildAccount(@ApiParam(value = "主键集合", required = true) @RequestParam Long childAccountId) {
         UserMerchant child = iUserMerchantService.getById(childAccountId);
@@ -133,7 +138,7 @@ public class ApiMerchantUserController {
      * 自定义分页 商家用户表
      */
     @GetMapping("/childAccount/list")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 6)
     @ApiOperation(value = "子账号列表", notes = "传入userMerchant")
     public R<IPage<UserMerchantVO>> page(UserMerchantVO userMerchant, Query query) {
         userMerchant.setParentId(AuthUtil.getUserId());
@@ -145,11 +150,101 @@ public class ApiMerchantUserController {
      * 我的钱包收益记录
      */
     @GetMapping("/pageIncome")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 7)
     @ApiOperation(value = "我的钱包收益记录-分页", notes = "我的钱包收益记录-分页")
     public R<IPage<MerchantIncomeVO>> pageIncome(Query query) {
         IPage<MerchantIncomeVO> pages = iUserMerchantService.pageIncome(Condition.getPage(query), AuthUtil.getUserId());
         return R.data(pages);
     }
 
+    /**
+     * 商家端-首页
+     */
+    @PostMapping("/pie")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "商家端-首页-饼图", notes = "商家端-首页-饼图")
+    public R<List<MerchantPieRes>> pie(@Valid @RequestBody TimeRangeReq timeRangeReq) {
+
+        TimeRangeReqUtils.setTimeRangeReq(timeRangeReq);
+
+        /*
+        * 数据格式
+        [
+        { value: 0, name: '展现', itemStyle: { color: '#1890ff' } },
+        { value: 0, name: '点击', itemStyle: { color: '#91cb74' } },
+        { value: 0, name: '订单', itemStyle: { color: '#fac858' } },
+        { value: 0, name: '付款', itemStyle: { color: '#ee6666' } },
+        ]
+        * */
+
+        List<MerchantPieRes> result = new ArrayList<>();
+
+        MerchantPieRes reveal = new MerchantPieRes();//展现
+        reveal.setValue("200");
+        reveal.setName("展现");
+        Map<String, String> revealColorMap = new HashMap<>();
+        revealColorMap.put("color", "#1890ff");
+        reveal.setItemStyle(revealColorMap);
+        result.add(reveal);
+
+        MerchantPieRes order = new MerchantPieRes();//订单
+        order.setValue("300");
+        order.setName("点击");
+        Map<String, String> orderColorMap = new HashMap<>();
+        orderColorMap.put("color", "#91cb74");
+        reveal.setItemStyle(orderColorMap);
+        result.add(order);
+
+        MerchantPieRes click = new MerchantPieRes();//订单
+        click.setValue("100");
+        click.setName("订单");
+        Map<String, String> clickColorMap = new HashMap<>();
+        clickColorMap.put("color", "#fac858");
+        reveal.setItemStyle(clickColorMap);
+        result.add(click);
+
+        MerchantPieRes pay = new MerchantPieRes();//付款
+        pay.setValue("100");
+        pay.setName("订单");
+        Map<String, String> payColorMap = new HashMap<>();
+        payColorMap.put("color", "#ee6666");
+        reveal.setItemStyle(payColorMap);
+        result.add(click);
+
+        return R.data(result);
+    }
+
+    /**
+     * 商家端-首页-设备状态
+     */
+    @GetMapping("/survey")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "商家端-首页-设备状态", notes = "商家端-首页-设备状态")
+    public R<Map<String, String>> survey() {
+        //key为名称,value为数量
+        Map<String, String> result = new HashMap<>();
+        result.put("设备数量", "60");
+        result.put("门店数量", "6");
+        result.put("故障设备", "10");
+        result.put("在线设备", "40");
+        result.put("子账号", "6");
+        result.put("订单量", "600");
+        return R.data(result);
+    }
+
+    /**
+     * 商家端-首页-营业额和结算额
+     */
+    @PostMapping("/turnover")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "商家端-首页-营业额和结算额", notes = "商家端-首页-营业额和结算额")
+    public R<TurnoverRes> turnover(@Valid @RequestBody TimeRangeReq timeRangeReq) {
+        TimeRangeReqUtils.setTimeRangeReq(timeRangeReq);
+        //key为名称,value为数量
+        TurnoverRes result = new TurnoverRes();
+        result.setTurnover("6000.00");
+        result.setClearing("5873.16");
+        return R.data(result);
+    }
+
 }

+ 36 - 0
src/main/java/org/springblade/modules/api/request/TimeRangeReq.java

@@ -0,0 +1,36 @@
+package org.springblade.modules.api.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "时间范围请求对象", description = "请求实体类")
+public class TimeRangeReq {
+
+    @ApiModelProperty(value = "门店id")
+    private Integer shopId;
+
+    @ApiModelProperty(value = "设备id")
+    private Integer facility;
+
+    @ApiModelProperty(value = "查询时间类型,1今天,2昨天,3本月,4上月,5今年,6自定义", required = true)
+    @NotNull(message = "查询时间类型不能为空")
+    private Integer dateType;
+
+    @ApiModelProperty(value = "自定义-开始时间-年月日")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    @ApiModelProperty(value = "自定义-结束时间-年月日")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+}

+ 27 - 0
src/main/java/org/springblade/modules/api/response/MerchantPieRes.java

@@ -0,0 +1,27 @@
+package org.springblade.modules.api.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * 商家端首页饼图返回
+ */
+@Data
+@ApiModel(value = "商家端首页饼图返回", description = "返回实体类")
+public class MerchantPieRes {
+
+    //{ value: 0, name: '展现', itemStyle: { color: '#1890ff' } }
+
+    @ApiModelProperty(value = "值")
+    private String value;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "颜色,{ color: '#1890ff' }")
+    private Map<String, String> itemStyle;
+
+}

+ 18 - 0
src/main/java/org/springblade/modules/api/response/MerchantSurveyRes.java

@@ -0,0 +1,18 @@
+package org.springblade.modules.api.response;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 商家端首页饼图返回
+ */
+@Data
+public class MerchantSurveyRes {
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "数量")
+    private String num = "200";
+
+}

+ 17 - 0
src/main/java/org/springblade/modules/api/response/TurnoverRes.java

@@ -0,0 +1,17 @@
+package org.springblade.modules.api.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "商家端首页营业额和结算额返回", description = "返回实体类")
+public class TurnoverRes {
+
+    @ApiModelProperty(value = "营业额")
+    private String turnover;
+
+    @ApiModelProperty(value = "结算额")
+    private String clearing;
+
+}

+ 126 - 0
src/main/java/org/springblade/modules/api/utils/TimeRangeReqUtils.java

@@ -0,0 +1,126 @@
+package org.springblade.modules.api.utils;
+
+import org.springblade.modules.api.request.TimeRangeReq;
+
+import java.util.Calendar;
+import java.util.Objects;
+
+public class TimeRangeReqUtils {
+
+    private TimeRangeReqUtils() {
+
+    }
+
+    public static TimeRangeReq setTimeRangeReq(TimeRangeReq timeRangeReq) {
+
+        if (timeRangeReq.getDateType() == 6
+                && (Objects.isNull(timeRangeReq.getStartTime()) || Objects.isNull(timeRangeReq.getEndTime()))) {
+            throw new IllegalArgumentException("请选择自定义时间范围");
+        }
+
+        switch (timeRangeReq.getDateType()) {
+            case 1:
+                //Calendar获取今天的开始时间和结束时间
+                Calendar todayStart = Calendar.getInstance();
+                todayStart.set(Calendar.HOUR, 0);        //小时
+                todayStart.set(Calendar.MINUTE, 0);        //分钟
+                todayStart.set(Calendar.SECOND, 0);        //秒
+                todayStart.set(Calendar.MILLISECOND, 0);   //毫秒
+                timeRangeReq.setStartTime(todayStart.getTime());
+
+                Calendar todayEnd = Calendar.getInstance();
+                todayEnd.set(Calendar.HOUR, 23);
+                todayEnd.set(Calendar.MINUTE, 59);
+                todayEnd.set(Calendar.SECOND, 59);
+                todayEnd.set(Calendar.MILLISECOND, 999);
+                timeRangeReq.setEndTime(todayEnd.getTime());
+
+                return timeRangeReq;
+            case 2:
+                //Calendar获取昨天的开始时间和结束时间
+                Calendar yesterdayStart = Calendar.getInstance();
+                yesterdayStart.add(Calendar.DAY_OF_MONTH, -1);
+                yesterdayStart.set(Calendar.HOUR, 0);        //小时
+                yesterdayStart.set(Calendar.MINUTE, 0);        //分钟
+                yesterdayStart.set(Calendar.SECOND, 0);        //秒
+                yesterdayStart.set(Calendar.MILLISECOND, 0);   //毫秒
+                timeRangeReq.setStartTime(yesterdayStart.getTime());
+
+                Calendar yesterdayEnd = Calendar.getInstance();
+                yesterdayEnd.add(Calendar.DAY_OF_MONTH, -1);
+                yesterdayEnd.set(Calendar.HOUR, 23);
+                yesterdayEnd.set(Calendar.MINUTE, 59);
+                yesterdayEnd.set(Calendar.SECOND, 59);
+                yesterdayEnd.set(Calendar.MILLISECOND, 999);
+                timeRangeReq.setEndTime(yesterdayEnd.getTime());
+
+                return timeRangeReq;
+            case 3:
+                //Calendar获取本月的开始时间和结束时间
+                Calendar currentMonthStart = Calendar.getInstance();
+                currentMonthStart.set(Calendar.DAY_OF_MONTH, 1);
+                currentMonthStart.set(Calendar.HOUR, 0);        //小时
+                currentMonthStart.set(Calendar.MINUTE, 0);        //分钟
+                currentMonthStart.set(Calendar.SECOND, 0);        //秒
+                currentMonthStart.set(Calendar.MILLISECOND, 0);   //毫秒
+                timeRangeReq.setStartTime(currentMonthStart.getTime());
+
+                Calendar currentMonthEnd = Calendar.getInstance();
+                currentMonthEnd.add(Calendar.MONTH, 1);
+                currentMonthEnd.add(Calendar.DAY_OF_MONTH, -1);
+                currentMonthEnd.set(Calendar.HOUR, 23);
+                currentMonthEnd.set(Calendar.MINUTE, 59);
+                currentMonthEnd.set(Calendar.SECOND, 59);
+                currentMonthEnd.set(Calendar.MILLISECOND, 999);
+                timeRangeReq.setEndTime(currentMonthEnd.getTime());
+                return timeRangeReq;
+
+            case 4:
+                //Calendar获取本月的开始时间和结束时间
+                Calendar lastMonthStart = Calendar.getInstance();
+                lastMonthStart.add(Calendar.MONTH, -1);
+                lastMonthStart.set(Calendar.DAY_OF_MONTH, 1);
+                lastMonthStart.set(Calendar.HOUR, 0);        //小时
+                lastMonthStart.set(Calendar.MINUTE, 0);        //分钟
+                lastMonthStart.set(Calendar.SECOND, 0);        //秒
+                lastMonthStart.set(Calendar.MILLISECOND, 0);   //毫秒
+                timeRangeReq.setStartTime(lastMonthStart.getTime());
+
+                Calendar lastMonthEnd = Calendar.getInstance();
+                lastMonthEnd.add(Calendar.MONTH, 1);
+                lastMonthEnd.add(Calendar.DAY_OF_MONTH, -1);
+                lastMonthEnd.set(Calendar.HOUR, 23);
+                lastMonthEnd.set(Calendar.MINUTE, 59);
+                lastMonthEnd.set(Calendar.SECOND, 59);
+                lastMonthEnd.set(Calendar.MILLISECOND, 999);
+                timeRangeReq.setEndTime(lastMonthEnd.getTime());
+
+                return timeRangeReq;
+            case 5:
+                Calendar yearStart = Calendar.getInstance();
+                yearStart.set(Calendar.MONTH, 1);
+                yearStart.set(Calendar.DAY_OF_MONTH, 1);
+                yearStart.set(Calendar.HOUR, 0);        //小时
+                yearStart.set(Calendar.MINUTE, 0);        //分钟
+                yearStart.set(Calendar.SECOND, 0);        //秒
+                yearStart.set(Calendar.MILLISECOND, 0);   //毫秒
+                timeRangeReq.setStartTime(yearStart.getTime());
+
+                Calendar yearEnd = Calendar.getInstance();
+                yearEnd.set(Calendar.MONTH, 12);
+                yearEnd.set(Calendar.DAY_OF_MONTH, 31);
+                yearEnd.set(Calendar.HOUR, 23);
+                yearEnd.set(Calendar.MINUTE, 59);
+                yearEnd.set(Calendar.SECOND, 59);
+                yearEnd.set(Calendar.MILLISECOND, 999);
+                timeRangeReq.setEndTime(yearEnd.getTime());
+                return timeRangeReq;
+            case 6:
+                return timeRangeReq;
+            default:
+                return timeRangeReq;
+        }
+
+    }
+
+}