From f58050b2e5ba95be6dca3e617dfacb7a717d6096 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 16 May 2025 17:37:41 +0800
Subject: [PATCH] feat(mall): 添加会员等级图标并更新销售信息
---
src/main/resources/mapper/modules/MallGoodsMapper.xml | 184 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 178 insertions(+), 6 deletions(-)
diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml
index 55dee77..8248c79 100644
--- a/src/main/resources/mapper/modules/MallGoodsMapper.xml
+++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -13,6 +13,7 @@
<result property="goodsDetails" column="goods_details" />
<result property="isSale" column="is_sale" />
<result property="originalPrice" column="original_price" />
+ <result property="staticPropPrice" column="staticPropPrice" />
<result property="presentPrice" column="present_price" />
<result property="categoryId" column="category_id" />
<result property="volume" column="volume" />
@@ -22,6 +23,14 @@
<result property="hasCarriage" column="has_carriage" />
<result property="carriage" column="carriage" />
<result property="isNormal" column="is_normal" />
+ <result property="carriageType" column="carriage_type" />
+ <result property="carriageAmount" column="carriage_amount" />
+ <result property="carriageRuleId" column="carriage_rule_id" />
+ <result property="goodsWeight" column="goods_weight" />
+ <result property="levelOnePrice" column="level_one_price" />
+ <result property="levelTwoPrice" column="level_two_price" />
+ <result property="levelThreePrice" column="level_three_price" />
+ <result property="hasCollect" column="hasCollect" />
<collection property="styles" ofType="cc.mrbird.febs.mall.entity.MallGoodsStyle">
<id property="id" column="style_id" />
<result property="name" column="style_name" />
@@ -33,9 +42,15 @@
<result property="stock" column="sku_stock" />
<result property="skuVolume" column="sku_volume" />
<result property="originalPrice" column="sku_original_price" />
+ <result property="staticPropPrice" column="sku_static_prop_price" />
<result property="presentPrice" column="sku_present_price" />
<result property="styleId" column="sku_style_id"/>
<result property="goodsId" column="sku_goods_id" />
+ <result property="skuGoodsWeight" column="sku_goods_weight" />
+ <result property="sample" column="sample" />
+ <result property="levelOnePrice" column="sku_level_one_price" />
+ <result property="levelTwoPrice" column="sku_level_two_price" />
+ <result property="levelThreePrice" column="sku_level_three_price" />
</collection>
</collection>
</resultMap>
@@ -43,6 +58,7 @@
<select id="selectGoodsDetailById" resultMap="MallGoodsMap">
select
a.*,
+ case when collection.id is null then 2 else 1 end hasCollect,
b.id style_id,
b.name style_name,
b.goods_id style_goods_id,
@@ -52,12 +68,20 @@
c.stock sku_stock,
c.sku_volume,
c.original_price sku_original_price,
+ FLOOR((a.original_price * a.static_prop)/100) staticPropPrice,
c.present_price sku_present_price,
c.style_id sku_style_id,
+ c.goods_weight sku_goods_weight,
+ c.sample sample,
+ FLOOR((c.original_price*a.static_prop)/100) sku_static_prop_price,
+ c.level_one_price sku_level_one_price,
+ c.level_two_price sku_level_two_price,
+ c.level_three_price sku_level_three_price,
c.goods_id sku_goods_id
from mall_goods a
left join mall_goods_style b on a.id = b.goods_id
left join mall_goods_sku c on b.id=c.style_id
+ left join mall_member_collection collection on a.id=collection.goods_id
where a.id=#{id}
</select>
@@ -68,17 +92,33 @@
a.goods_name,
a.goods_introdution goodsIntroduction,
a.thumb,
+ a.unit,
a.original_price,
+ FLOOR((a.original_price * a.static_prop)/100) staticPropPrice,
a.present_price,
+ a.level_one_price,
+ a.level_two_price,
+ a.level_three_price,
a.score,
a.is_hot,
+ a.carriage_type,
+ a.carriage_amount,
+ a.carriage_rule_id,
+ a.goods_weight,
+ a.order_number,
+ <if test="record.memberId != null">
+ case when collection.id is null then 2 else 1 end hasCollect,
+ </if>
min(b.id) skuId,
min(b.present_price) price,
- sum(b.stock) stock,
+ ifnull(sum(b.stock), a.stock) stock,
sum(b.sku_volume) saleVolume
from mall_goods a
left join mall_goods_sku b on a.id=b.goods_id
left join mall_goods_category c on a.category_id=c.id
+ <if test="record.memberId != null">
+ left join mall_member_collection collection on a.id=collection.goods_id and collection.member_id=#{record.memberId}
+ </if>
<where>
a.is_sale=1
<if test="record != null">
@@ -88,8 +128,11 @@
<if test="record.isNormal != null and record.isNormal != ''">
and a.is_normal = #{record.isNormal}
</if>
- <if test="record.goodsType != null and record.goodsType != '' and record.goodsType != 3">
- and a.goods_type = #{record.goodsType} and a.present_price != 0
+ <if test="record.goodsType != null and record.goodsType != '' and record.goodsType == 1">
+ and a.goods_type = #{record.goodsType}
+ </if>
+ <if test="record.goodsType != null and record.goodsType != '' and record.goodsType == 2">
+ and a.goods_type = #{record.goodsType}
</if>
<if test="record.goodsType == 3">
and a.present_price = 0
@@ -103,11 +146,14 @@
</if>
</where>
group by a.id
- order by a.id desc
+ order by a.order_number ASC
) a
<if test="record.sortType != null">
+<!-- <if test="record.sortType == 1">-->
+<!-- order by a.is_hot, a.saleVolume desc, a.id-->
+<!-- </if>-->
<if test="record.sortType == 1">
- order by a.is_hot, a.saleVolume desc, a.id
+ order by a.order_number ASC
</if>
<if test="record.sortType == 2">
order by a.saleVolume desc
@@ -225,12 +271,19 @@
from mall_goods_comment a
left join mall_member b on b.id = a.member_id
<where>
+ and a.show_state =1
<if test="record != null">
<if test="record.goodsId != null and record.goodsId != ''">
and a.goods_id=#{record.goodsId}
</if>
<if test="record.commentType != null and record.commentType != '' and record.commentType == 1">
- and a.star > 4
+ and a.star <![CDATA[ > ]]> 4
+ </if>
+ <if test="record.commentType != null and record.commentType != '' and record.commentType == 2">
+ and (a.star <![CDATA[ >= ]]> 3 and a.star <![CDATA[ <= ]]> 4)
+ </if>
+ <if test="record.commentType != null and record.commentType != '' and record.commentType == 3">
+ and (a.star <![CDATA[ < ]]> 3 )
</if>
</if>
</where>
@@ -249,4 +302,123 @@
a.CREATED_TIME asc
</select>
+ <select id="findMallGoodsCommentLevelByGoodsId" resultType="cc.mrbird.febs.mall.vo.MallGoodsCommentVo">
+ select
+ (select count(z.id) from mall_goods_comment z where z.goods_id = #{id} and z.star <![CDATA[ > ]]> 4 and z.show_state = 1) greatNum,
+ (select count(z.id) from mall_goods_comment z where z.goods_id = #{id}
+ and (z.star <![CDATA[ >= ]]> 3 and z.star <![CDATA[ <= ]]> 4) and z.show_state = 1) goodNum,
+ (select count(z.id) from mall_goods_comment z where z.goods_id = #{id} and (z.star <![CDATA[ < ]]> 3 ) and z.show_state = 1) badNum
+ from mall_goods_comment a limit 1
+ </select>
+
+ <update id="upDateStockAndVolumeByGoodsId">
+ update mall_goods
+ set stock = stock - #{cnt},
+ volume = volume + #{cnt}
+ where id=#{id} and stock - #{cnt} <![CDATA[ >= ]]> 0
+ </update>
+
+ <update id="updateStockAndVolumeByGoodsId">
+ update mall_goods
+ set stock = stock + #{cnt},
+ volume = volume - #{cnt}
+ where id=#{id} and volume - #{cnt} <![CDATA[ >= ]]> 0
+ </update>
+
+ <update id="updateCarriageRuleId">
+ update mall_goods
+ set carriage_rule_id = null
+ where id=#{id}
+ </update>
+
+ <update id="updateCarriageAmount">
+ update mall_goods
+ set carriage_amount = null
+ where id=#{id}
+ </update>
+
+ <select id="selectMallGoodsListQueryNoPage" resultType="cc.mrbird.febs.mall.vo.MallGoodsListVo">
+ select * from (
+ select
+ a.id,
+ a.goods_name,
+ a.goods_introdution goodsIntroduction,
+ a.thumb,
+ a.unit,
+ a.original_price,
+ FLOOR((a.original_price * a.static_prop)/100) staticPropPrice,
+ a.present_price,
+ a.score,
+ a.is_hot,
+ a.carriage_type,
+ a.carriage_amount,
+ a.carriage_rule_id,
+ a.goods_weight,
+ a.order_number,
+ min(b.id) skuId,
+ min(b.present_price) price,
+ sum(b.stock) stock,
+ sum(b.sku_volume) saleVolume
+ from mall_goods a
+ left join mall_goods_sku b on a.id=b.goods_id
+ left join mall_goods_category c on a.category_id=c.id
+ <where>
+ a.is_sale=1
+ <if test="record != null">
+ <if test="record.isHot != null and record.isHot != ''">
+ and a.is_hot = #{record.isHot}
+ </if>
+ <if test="record.isNormal != null and record.isNormal != ''">
+ and a.is_normal = #{record.isNormal}
+ </if>
+ <if test="record.goodsType != null and record.goodsType != '' and record.goodsType != 3">
+ and a.goods_type = #{record.goodsType}
+ </if>
+ <if test="record.goodsType == 3">
+ and a.present_price = 0
+ </if>
+ <if test="record.categoryId != null and record.categoryId != ''">
+ and (c.id = #{record.categoryId} or c.parent_id=#{record.categoryId})
+ </if>
+ <if test="record.query != null and record.query != ''">
+ and a.goods_name like CONCAT('%', CONCAT(#{record.query}, '%'))
+ </if>
+ </if>
+ </where>
+ group by a.id
+ order by a.order_number ASC
+ ) a
+ <if test="record.sortType != null">
+<!-- <if test="record.sortType == 1">-->
+<!-- order by a.is_hot, a.saleVolume desc, a.id-->
+<!-- </if>-->
+ <if test="record.sortType == 1">
+ order by a.order_number ASC
+ </if>
+ <if test="record.sortType == 2">
+ order by a.saleVolume desc
+ </if>
+ <if test="record.sortType == 3 and record.sort == 'asc'">
+ order by a.price
+ </if>
+ <if test="record.sortType == 3 and record.sort == 'desc'">
+ order by a.price desc
+ </if>
+ <if test="record.sortType == 4">
+ order by a.id desc
+ </if>
+ </if>
+ </select>
+
+ <select id="selectMallGoodsListQueryByRuleId" resultType="cc.mrbird.febs.mall.entity.MallGoods">
+ select a.goods_name from mall_goods a where a.carriage_rule_id = #{id}
+ </select>
+
+ <select id="selectMallGoodsListQueryByRuleIdAndIsSale" resultType="cc.mrbird.febs.mall.entity.MallGoods">
+ select a.goods_name
+ from mall_goods a
+ where a.carriage_rule_id = #{id}
+ and a.is_sale = #{isSale}
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1