From 9b51a95fa8bc9b3a86108c6900e17fc55f8db467 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Mon, 19 May 2025 17:02:07 +0800 Subject: [PATCH] refactor(vip): 优化积分和返佣计算逻辑 --- src/main/resources/mapper/modules/MallGoodsMapper.xml | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 217 insertions(+), 8 deletions(-) diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml index e7b8dc7..8248c79 100644 --- a/src/main/resources/mapper/modules/MallGoodsMapper.xml +++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml @@ -9,9 +9,11 @@ <result property="goodsIntrodution" column="goods_introdution" /> <result property="unit" column="unit" /> <result property="thumb" column="thumb" /> + <result property="goodsParameter" column="goods_parameter" /> <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" /> @@ -20,6 +22,15 @@ <result property="goodsType" column="goods_type" /> <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" /> @@ -31,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> @@ -41,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, @@ -50,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> @@ -64,28 +90,49 @@ select a.id, a.goods_name, - a.goods_introdution, + 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, + 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"> <if test="record.isHot != null and record.isHot != ''"> - and a.is_hot = 1 + 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} 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 @@ -99,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 @@ -204,12 +254,171 @@ select a.*,c.order_no from mall_goods a inner join mall_order_item b on a.id=b.goods_id inner join mall_order_info c on b.order_id=c.ID - where c.status=4 + where c.status in (2, 3, 4) and b.is_normal=2 <if test="memberId != null"> and c.member_id=#{memberId} </if> <if test="date != null"> - and date_format(c.receving_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') + and date_format(c.pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') </if> </select> + + <select id="selectMallGoodsCommentListQueryInPage" resultType="cc.mrbird.febs.mall.vo.MallGoodsCommentVo"> + select + a.*, + b.name name, + b.avatar avatar + 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 <![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> + group by a.id + order by a.created_time desc + </select> + + <select id="getDeliveryHomeListInPage" resultType="cc.mrbird.febs.mall.entity.DataDictionaryCustom"> + SELECT + a.* + FROM + data_dictionary_custom a + where a.type = 'HOME_DELIVERY_SETTING' + GROUP BY a.id + ORDER BY + 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