dcs 2 maanden geleden
bovenliggende
commit
ade17c4da3

+ 18 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/workark/controller/OrderInfoController.java

@@ -111,4 +111,22 @@ public class OrderInfoController {
         return Response.ok(orderInfoService.getOrderNo(orderNo));
     }
 
+    @ApiOperation("服务数据")
+    @RequestMapping(value = "/count/{organizationId}", method = RequestMethod.GET)
+    public Response count(@PathVariable long organizationId) {
+        return Response.ok(orderInfoService.count(organizationId));
+    }
+
+    @ApiOperation("订单统计")
+    @RequestMapping(value = "/count/{organizationId}/{startTime}/{endTime}", method = RequestMethod.GET)
+    public Response countOrder(@PathVariable long organizationId,@PathVariable String startTime, @PathVariable String endTime) {
+        return Response.ok(orderInfoService.countOrder(organizationId, startTime, endTime));
+    }
+
+    @ApiOperation("购买排行")
+    @RequestMapping(value = "/countPay/{organizationId}", method = RequestMethod.GET)
+    public Response countPay(@PathVariable long organizationId) {
+        return Response.ok(orderInfoService.countPay(organizationId));
+    }
+
 }

+ 10 - 0
virgo.api/src/main/java/com/bosshand/virgo/api/workark/dao/OrderInfoDao.java

@@ -4,7 +4,9 @@ import com.bosshand.virgo.api.workark.model.OrderInfo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface OrderInfoDao {
@@ -31,4 +33,12 @@ public interface OrderInfoDao {
 
     OrderInfo getNoPayOrderByProductId(Long productId, Long userId, String orderStatus);
 
+    Map<String, BigDecimal> countTotalFee(OrderInfo orderInfo);
+
+    Map<String, Integer> countInvoiceContract(OrderInfo orderInfo);
+
+    List<Map<String, Integer>> countOrder(@Param("p") OrderInfo p, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<Map<String, Object>> countPay(OrderInfo orderInfo);
+
 }

+ 54 - 3
virgo.api/src/main/java/com/bosshand/virgo/api/workark/service/OrderInfoService.java

@@ -22,9 +22,7 @@ import java.time.Duration;
 import java.time.Instant;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service
 public class OrderInfoService {
@@ -310,4 +308,57 @@ public class OrderInfoService {
         orderInfoDao.updateStatus(info);
     }
 
+    /**
+     * 服务数据
+     */
+    private Map<String, Object> countTotalFee(OrderInfo orderInfo) {
+        Map<String, BigDecimal> totalFee = orderInfoDao.countTotalFee(orderInfo);
+        Map<String, Integer> invoiceContractMap = orderInfoDao.countInvoiceContract(orderInfo);
+        Map<String, Object> m = new HashMap<>();
+        m.put("orders", totalFee.get("sumIds"));
+        m.put("totalFee", totalFee.get("sumTotalFee"));
+        m.put("contract", invoiceContractMap.get("contracts"));
+        m.put("invoice", invoiceContractMap.get("invoices"));
+        return m;
+    }
+
+    public Map<String, Object> count(long organizationId) {
+        Map<String, Object> map = new HashMap<>();
+        OrderInfo o1 = new OrderInfo();
+        o1.setOrganizationId(organizationId);
+        map.put("organization", countTotalFee(o1));
+        OrderInfo o2 = new OrderInfo();
+        o2.setPayOrganizationId(organizationId);
+        map.put("payOrganization", countTotalFee(o2));
+        return map;
+    }
+
+    /**
+     * 订单统计
+     */
+    public Map<String, Object> countOrder(long organizationId, String startTime, String endTime) {
+        Map<String, Object> map = new HashMap<>();
+        OrderInfo o1 = new OrderInfo();
+        o1.setOrganizationId(organizationId);
+        map.put("organization", orderInfoDao.countOrder(o1, startTime, endTime));
+        OrderInfo o2 = new OrderInfo();
+        o2.setPayOrganizationId(organizationId);
+        map.put("payOrganization", orderInfoDao.countOrder(o2, startTime, endTime));
+        return map;
+    }
+
+    /**
+     * 购买排行
+     */
+    public Map<String, Object> countPay(long organizationId) {
+        Map<String, Object> map = new HashMap<>();
+        OrderInfo o1 = new OrderInfo();
+        o1.setOrganizationId(organizationId);
+        map.put("organization", orderInfoDao.countPay(o1));
+        OrderInfo o2 = new OrderInfo();
+        o2.setPayOrganizationId(organizationId);
+        map.put("payOrganization", orderInfoDao.countPay(o2));
+        return map;
+    }
+
 }

+ 53 - 0
virgo.api/src/main/resources/mapper/OrderInfoMapper.xml

@@ -211,4 +211,57 @@
         DELETE FROM workark_orderInfo WHERE id = #{id}
     </delete>
 
+    <select id="countTotalFee" resultType="map">
+        SELECT SUM(totalFee) as sumTotalFee, COUNT(`id`)  as sumIds from workark_orderInfo
+        <where>
+            <if test="organizationId != 0">
+                and organizationId = #{organizationId}
+            </if>
+            <if test="payOrganizationId != 0">
+                and payOrganizationId = #{payOrganizationId}
+            </if>
+            and orderStatus = "支付成功"
+        </where>
+    </select>
+
+    <select id="countInvoiceContract" resultType="map">
+        SELECT COUNT(b.id) as invoices, COUNT(c.id) as contracts from workark_orderInfo a left join workark_invoice b on a.orderNo = b.orderNo left join workark_contract_pdf c on a.orderNo = c.orderNo
+        <where>
+            <if test="organizationId != 0">
+                and a.organizationId = #{organizationId}
+            </if>
+            <if test="payOrganizationId != 0">
+                and a.payOrganizationId = #{payOrganizationId}
+            </if>
+        </where>
+    </select>
+
+    <select id="countOrder" resultType="map">
+        SELECT DATE_FORMAT(createTime, '%Y-%m-%d') AS day, COUNT(id) AS orders
+        FROM workark_orderInfo
+        <where>
+            <if test="p.organizationId != 0">
+                and organizationId = #{p.organizationId}
+            </if>
+            <if test="p.payOrganizationId != 0">
+                and payOrganizationId = #{p.payOrganizationId}
+            </if>
+            and createTime >= #{startTime} and createTime &lt;= #{endTime} and orderStatus = "支付成功"
+        </where>
+        GROUP BY day
+    </select>
+
+    <select id="countPay" resultType="map">
+        SELECT a.productId, b.rotatingImages, b.name, b.price, COUNT(a.id) AS orders from workark_orderInfo a left join workark_product b ON a.productId = b.id
+        <where>
+            <if test="organizationId != 0">
+                and a.organizationId = #{organizationId}
+            </if>
+            <if test="payOrganizationId != 0">
+                and a.payOrganizationId = #{payOrganizationId}
+            </if>
+            and a.orderStatus = "支付成功"
+        </where> GROUP BY a.productId ORDER BY orders DESC
+    </select>
+
 </mapper>