From 3770d2aeba14f7aed10180283dd8cb18552da377 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 30 Jun 2021 11:05:45 +0800
Subject: [PATCH] modify

---
 gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiOrderController.java |   11 +++--
 gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreDetailsMapper.java     |    3 +
 gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java       |    3 +
 gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java          |   19 +++++++++
 gc-shop/src/main/java/com/xzx/gc/shop/vo/StatisticsVo.java               |   30 +++++++++++++++
 gc-shop/src/main/resources/mapper/shop/ScoreDetailsMapper.xml            |    6 +++
 gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml              |   17 ++++++++
 7 files changed, 85 insertions(+), 4 deletions(-)

diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiOrderController.java b/gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiOrderController.java
index b23645d..a6c5aac 100644
--- a/gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiOrderController.java
+++ b/gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiOrderController.java
@@ -8,6 +8,7 @@
 import com.xzx.gc.shop.dto.AddGoodsOrderDto;
 import com.xzx.gc.shop.dto.XcxOrderListDto;
 import com.xzx.gc.shop.service.OrderService;
+import com.xzx.gc.shop.vo.StatisticsVo;
 import com.xzx.gc.shop.vo.XcxOrderDetailsVo;
 import com.xzx.gc.shop.vo.XcxOrderListVo;
 import io.swagger.annotations.Api;
@@ -16,10 +17,7 @@
 import io.swagger.annotations.ApiResponses;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -79,4 +77,9 @@
     }
 
 
+    @ApiOperation("首页统计")
+    @GetMapping(value = "/order/statistics")
+    public JsonResult<StatisticsVo> orderStatistics(HttpServletRequest request) {
+        return JsonResult.success(orderService.orderStatistics(getUserId(request)));
+    }
 }
diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreDetailsMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreDetailsMapper.java
index 68a0d0e..40e538d 100644
--- a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreDetailsMapper.java
+++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreDetailsMapper.java
@@ -8,6 +8,7 @@
 import com.xzx.gc.util.GcMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 public interface ScoreDetailsMapper extends GcMapper<ScoreDetails> {
@@ -15,4 +16,6 @@
     List<QueryScoreDetailsListVo> queryScoreDetailsList(@Param("record") QueryScoreDetailsListDto model);
 
     List<XcxScoreDetailsVo> selectXcxScoreDetailsList(@Param("record") XcxScoreDetailsDto xcxScoreDetailsDto);
+
+    BigDecimal selectTotalScoreByUserId(@Param("userId") String userId, @Param("type") Integer type);
 }
diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java
index 6ee3b29..ced9e9b 100644
--- a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java
+++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreOrderMapper.java
@@ -11,6 +11,7 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 public interface ScoreOrderMapper extends GcMapper<ScoreOrder> {
 
@@ -25,4 +26,6 @@
     XcxOrderDetailsVo selectXcxOrderDetails(@Param("id") Long id);
 
     int updateOrderStatus(@Param("id") Long id, @Param("status") Integer status, @Param("userId") String userId);
+
+    Map<String, Object> selectOrderStastics(@Param("userId") String userId);
 }
diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java
index b9d4ab1..862975d 100644
--- a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java
+++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java
@@ -382,4 +382,23 @@
             }
         }
     }
+
+    public StatisticsVo orderStatistics(String userId) {
+        BigDecimal score = scoreDetailsMapper.selectTotalScoreByUserId(userId, ScoreDetails.SCORE_TYPE_EXCHANGE);
+
+        Map<String, Object> userData = scoreOrderMapper.selectOrderStastics(userId);
+        Map<String, Object> allData = scoreOrderMapper.selectOrderStastics(null);
+
+        StatisticsVo statisticsVo = new StatisticsVo();
+        statisticsVo.setScore(score);
+        BigDecimal userPrice = (BigDecimal) userData.get("totalPrice");
+        statisticsVo.setReduceCarbon(userPrice.divide(BigDecimal.TEN, 2, BigDecimal.ROUND_DOWN));
+        statisticsVo.setOrderCnt(Integer.parseInt(userData.get("totalOrder").toString()));
+
+        BigDecimal totalPrice = (BigDecimal) allData.get("totalPrice");
+        statisticsVo.setTotalReduceCarbon(totalPrice.divide(BigDecimal.TEN, 2, BigDecimal.ROUND_DOWN));
+        statisticsVo.setTotalOrderCnt(Integer.parseInt(allData.get("totalOrder").toString()));
+        statisticsVo.setTotalBuyCnt(Integer.parseInt(allData.get("totalBuy").toString()));
+        return statisticsVo;
+    }
 }
diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/StatisticsVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/StatisticsVo.java
new file mode 100644
index 0000000..7741069
--- /dev/null
+++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/StatisticsVo.java
@@ -0,0 +1,30 @@
+package com.xzx.gc.shop.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "StatisticsVo", description = "统计")
+public class StatisticsVo {
+
+    @ApiModelProperty(value = "个人参与次数")
+    private Integer orderCnt;
+
+    @ApiModelProperty(value = "获得积分")
+    private BigDecimal score;
+
+    @ApiModelProperty(value = "减少碳排放量")
+    private BigDecimal reduceCarbon;
+
+    @ApiModelProperty(value = "用户参与次数")
+    private Integer totalOrderCnt;
+
+    @ApiModelProperty(value = "积分兑换次数")
+    private Integer totalBuyCnt;
+
+    @ApiModelProperty(value = "总减少排放量")
+    private BigDecimal totalReduceCarbon;
+}
diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreDetailsMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreDetailsMapper.xml
index c2a2c9b..93d7783 100644
--- a/gc-shop/src/main/resources/mapper/shop/ScoreDetailsMapper.xml
+++ b/gc-shop/src/main/resources/mapper/shop/ScoreDetailsMapper.xml
@@ -35,4 +35,10 @@
         where user_id=#{record.userId}
         order by id desc
     </select>
+
+    <select id="selectTotalScoreByUserId" resultType="java.math.BigDecimal">
+        select sum(change_score)
+        from xzx_score_details
+        where user_id=#{userId} and type=#{type}
+    </select>
 </mapper>
diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml
index d0c4f51..2771b0f 100644
--- a/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml
+++ b/gc-shop/src/main/resources/mapper/shop/ScoreOrderMapper.xml
@@ -82,4 +82,21 @@
         set status=#{status}
         where id=#{id} and user_id=#{userId}
     </update>
+
+    <select id="selectOrderStastics" resultType="java.util.Map">
+        select
+            IFNULL(count(1), 0) totalBuy,
+            IFNULL(sum(IFNULL(total_price,0)),0) totalPrice,
+            (
+                select IFNULL(count(1),0) from xzx_jhy_order where status = 3
+                <if test="userId != null and userId != ''">
+                    and user_id=#{userId}
+                </if>
+            ) totalOrder
+        from xzx_score_order
+        where status=3
+        <if test="userId != null and userId != ''">
+            and user_id=#{userId}
+        </if>
+    </select>
 </mapper>

--
Gitblit v1.9.1