Przeglądaj źródła

查询商品得成交量以及成交金额

liude 1 rok temu
rodzic
commit
84368f9cb4

+ 8 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/GoodsService.java

@@ -78,4 +78,12 @@ public interface GoodsService {
      * @return
      */
     Map<String,Object> getCategoryAndGoods(GoodsQueryParam param);
+
+    /**
+     * 获取商品的订单量以及交易金额
+     * @return
+     */
+    List<Map<String,Object>> getGoodsAmount();
+
+
 }

+ 9 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/GoodsMapper.java

@@ -1,6 +1,7 @@
 package com.chelvc.cloud.vehicle.server.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.chelvc.cloud.vehicle.api.constant.CategoryType;
@@ -41,4 +42,12 @@ public interface GoodsMapper extends BaseMapper<Goods> {
      * @return
      */
     Integer goodsFavorite(@Param("goodsId") Long goodsId,@Param("userId") Long userId);
+
+
+    /**
+     * 获取商品的订单量以及交易金额
+     * @param merchantId
+     * @return
+     */
+    List<Map<String,Object>> getGoodsAmount(Long merchantId);
 }

+ 19 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java

@@ -193,4 +193,23 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         }
         return goodsMap;
     }
+
+    /**
+     * 获取商品的订单量以及交易金额
+     * @return
+     */
+    @Override
+    public List<Map<String,Object>> getGoodsAmount(){
+        Long userId = SessionContextHolder.getId();
+        Scope scope = StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
+        if (scope == Scope.ADMIN) {
+            return this.baseMapper.getGoodsAmount(null);
+        }else {
+            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
+            if (ObjectUtils.isEmpty(merchants)) {
+                return null;
+            }
+            return this.baseMapper.getGoodsAmount(merchants.get(0));
+        }
+    }
 }

+ 28 - 0
vehicle-server/src/main/resources/mapper/GoodsMapper.xml

@@ -34,5 +34,33 @@
         AND user_id = #{userId}
     </select>
 
+    <select id="getGoodsAmount" resultType="java.util.Map">
+        SELECT
+            g.category_id,
+            t.goods_id,
+            t.amount,
+            t.count,
+            g.NAME
+        FROM
+            goods g
+                RIGHT JOIN (
+                SELECT
+                    om.goods_id,
+                    sum( oo.pay_amount ) amount,
+                    count( 0 ) count
+                FROM
+                    oms_order oo
+                    LEFT JOIN oms_order_item om ON oo.id = om.order_id
+                WHERE 1=1
+                    <if test="merchantId != null">
+                        and oo.merchant_id = #{merchantId}
+                    </if>
+                GROUP BY
+                    om.goods_id
+            ) t ON g.id = t.goods_id
+        ORDER BY
+            t.amount DESC
+    </select>
+
 
 </mapper>