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/MallOrderInfoMapper.xml | 278 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 217 insertions(+), 61 deletions(-) diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml index 6c3c00d..c310823 100644 --- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml +++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml @@ -15,18 +15,9 @@ b.sku_image, b.cnt, b.price, - b.amount, - c.name leader_name, - c.phone leader_phone, - c.address_pic, - c.address_area, - c.province, - c.city, - c.township, - c.detail_address + b.amount from mall_order_info a inner join mall_order_item b on a.id=b.order_id - inner join mall_team_leader c on a.take_unique_code=c.unique_code <where> a.del_flag=2 <if test="record.status == 4 and record.status != 0"> @@ -65,12 +56,11 @@ select a.*, b.name memberName, b.bind_phone memberBindPhone, - b.phone memberPhone + b.phone memberPhone, + (select member.name from mall_member member where member.invite_id = b.referrer_id) refererName from mall_order_info a - left join mall_member b on a.member_id = b.id - left join mall_team_leader c on a.take_unique_code = c.unique_code + inner join mall_member b on a.member_id = b.id <where> - a.del_flag=2 <if test="record != null"> <if test="record.payResult != null and record.payResult != ''"> and a.pay_result = #{record.payResult} @@ -84,6 +74,9 @@ <if test="record.deliveryType != null and record.deliveryType != ''"> and a.delivery_type = #{record.deliveryType} </if> + <if test="record.isHome != null and record.isHome != ''"> + and a.is_home = #{record.isHome} + </if> <if test="record.orderNo != null and record.orderNo != ''"> and a.order_no like CONCAT('%', CONCAT(#{record.orderNo}, '%')) </if> @@ -92,6 +85,12 @@ </if> <if test="record.uniqueCode != null and record.uniqueCode != ''"> and a.take_unique_code = #{record.uniqueCode} + </if> + <if test="record.startTime != null and record.startTime != ''"> + and a.order_time >= #{record.startTime} + </if> + <if test="record.endTime != null and record.endTime != ''"> + and a.order_time <= #{record.endTime} </if> </if> </where> @@ -109,6 +108,7 @@ <result column="member_id" property="memberId" /> <result column="order_time" property="orderTime" /> <result column="pay_time" property="payTime" /> + <result column="score_amount" property="scoreAmount" /> <result column="amount" property="amount" /> <result column="pay_method" property="payMethod" /> <result column="pay_order_no" property="payOrderNo" /> @@ -128,11 +128,15 @@ <result column="take_unique_code" property="takeUniqueCode" /> <result column="delivery_state" property="deliveryState" /> <result column="is_home" property="isHome" /> + <result column="is_free" property="isFree" /> <result column="del_flag" property="delFlag" /> <result column="leader_name" property="leaderName" /> <result column="leader_phone" property="leaderPhone" /> <result column="address_pic" property="addressPic" /> <result column="address_area" property="addressArea" /> + <result column="province" property="province" /> + <result column="leaderLongitude" property="leaderLongitude" /> + <result column="leaderLatitude" property="leaderLatitude" /> <result column="province" property="province" /> <result column="city" property="city" /> <result column="township" property="township" /> @@ -150,38 +154,24 @@ <result property="price" column="price" /> <result property="amount" column="amount" /> <result property="isNormal" column="is_normal" /> + <result property="memberInviteId" column="member_invite_id" /> + <result property="memberCouponId" column="member_coupon_id" /> + <result property="state" column="state" /> + <result property="itemScoreAmount" column="item_score_amount" /> + <result property="itemAmount" column="item_amount" /> + <result property="itemScorePrice" column="item_score_price" /> </collection> </resultMap> - <select id="selectApiOrderListInPage" resultMap="OrderInfoMap"> + <select id="selectApiOrderListInPage" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> select - a.*, - b.id item_id, - b.order_id, - b.goods_id, - b.sku_id, - b.goods_name, - b.style_name, - b.sku_name, - b.sku_image, - b.cnt, - b.price, - b.amount, - c.name leader_name, - c.phone leader_phone, - c.address_pic, - c.address_area, - c.province, - c.city, - c.township, - c.detail_address + a.* from mall_order_info a - inner join mall_order_item b on a.id=b.order_id - inner join mall_team_leader c on a.take_unique_code=c.unique_code + inner join mall_order_item b on a.id=b.order_id <where> a.del_flag=2 - <if test="record.query != null and record.query != ''"> - and (b.goods_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.style_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.sku_name like CONCAT('%', CONCAT(#{record.query}, '%'))) + <if test="record.memberId != null"> + and a.member_id=#{record.memberId} </if> <if test="record.status == 4 and record.status != 0"> and a.status = 4 @@ -190,10 +180,10 @@ and a.status = #{record.status} </if> <if test="record.status == 5"> - and a.status = 7 + and a.status = 7 or b.state in (2,3) </if> - <if test="record.memberId != null"> - and a.member_id=#{record.memberId} + <if test="record.query != null and record.query != ''"> + and (b.goods_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.style_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.sku_name like CONCAT('%', CONCAT(#{record.query}, '%'))) </if> <if test="record.orderType != null"> and a.order_type=#{record.orderType} @@ -213,37 +203,36 @@ b.style_name, b.sku_name, b.sku_image, + b.state, b.cnt, b.price, b.amount, - b.is_normal, - c.name leader_name, - c.phone leader_phone, - c.address_pic, - c.address_area, - c.province, - c.city, - c.township, - c.detail_address + b.amount as item_amount , + b.score_amount as item_score_amount , + FLOOR((c.original_price * d.static_prop)/100) as item_score_price , + b.member_invite_id, + b.member_coupon_id, + b.is_normal from mall_order_info a - inner join mall_order_item b on a.id=b.order_id - inner join mall_team_leader c on a.take_unique_code=c.unique_code + left join mall_order_item b on a.id=b.order_id + left join mall_goods_sku c on c.id=b.sku_id + left join mall_goods d on d.id=b.goods_id where a.id=#{id} </select> <select id="selectMemberOrderStatusCnt" resultType="java.util.Map"> select - status, + a.status, count(1) cnt - from mall_order_info - inner join mall_order_item b on a.id=b.order_id - inner join mall_team_leader c on a.take_unique_code=c.unique_code - where del_flag=2 and member_id=#{memberId} - group by status + from mall_order_info a + where a.del_flag=2 and a.member_id=#{memberId} and order_type = 1 + group by a.status </select> <select id="getMallOrderDetailById" resultType="cc.mrbird.febs.mall.vo.AdminOrderDetailVo"> - select * from mall_order_info a where a.id = #{id} + select a.*,b.area addressArea,b.address addressInfo from mall_order_info a + left join mall_address_info b on a.address_id = b.id + where a.id = #{id} </select> <select id="getMallOrderItemByOrderId" resultType="cc.mrbird.febs.mall.entity.MallOrderItem"> @@ -252,6 +241,14 @@ <select id="selectOrderInfoByStatus" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> select * from mall_order_info where status=#{status} + </select> + + <select id="selectOrderInfoByStatusAndIsInvoice" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> + select * from mall_order_info where status = #{status} and is_invoice = #{isInvoice} + </select> + + <select id="selectOrderInfoUpTime" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> + select * from mall_order_info where status=#{status} and now() > date_add(order_time,interval 1440 minute) </select> <select id="selectCntDirectOrTeam" resultType="java.lang.Integer"> @@ -326,7 +323,7 @@ <update id="updateOrderConfirmStatus"> update mall_order_info set status=4, - receiving_time=new Date() + receiving_time=#{updateTime} where status=3 and date_format(pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') </update> @@ -356,4 +353,163 @@ where del_flag = 2 and take_unique_code = #{uniqueCode} group by status </select> + + <select id="selectOrderByStatusAndPayTime" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> + select * from mall_order_info where status=#{status} + and date_format(pay_time, '%Y-%m-%d') = date_format(#{paytime}, '%Y-%m-%d') + </select> + + <resultMap id="NewOrderInfoMap" type="cc.mrbird.febs.mall.entity.MallOrderInfo"> + <id column="id" property="id" /> + <result column="order_no" property="orderNo" /> + <result column="member_id" property="memberId" /> + <result column="order_time" property="orderTime" /> + <result column="pay_time" property="payTime" /> + <result column="score_amount" property="scoreAmount" /> + <result column="amount" property="amount" /> + <result column="pay_method" property="payMethod" /> + <result column="pay_order_no" property="payOrderNo" /> + <result column="pay_result" property="payResult" /> + <result column="status" property="status" /> + <result column="cancel_type" property="cancelType" /> + <result column="name" property="name" /> + <result column="phone" property="phone" /> + <result column="address" property="address" /> + <result column="longitude" property="longitude" /> + <result column="latitude" property="latitude" /> + <result column="order_type" property="orderType" /> + <result column="comment_state" property="commentState" /> + <result column="carriage" property="carriage" /> + <result column="remark" property="remark" /> + <result column="take_code" property="takeCode" /> + <result column="take_unique_code" property="takeUniqueCode" /> + <result column="delivery_state" property="deliveryState" /> + <result column="is_home" property="isHome" /> + <result column="is_free" property="isFree" /> + <result column="del_flag" property="delFlag" /> + <result column="leader_name" property="leaderName" /> + <result column="leader_phone" property="leaderPhone" /> + <result column="address_pic" property="addressPic" /> + <result column="address_area" property="addressArea" /> + <result column="province" property="province" /> + <result column="leaderLongitude" property="leaderLongitude" /> + <result column="leaderLatitude" property="leaderLatitude" /> + <result column="province" property="province" /> + <result column="city" property="city" /> + <result column="township" property="township" /> + <result column="detail_address" property="detailAddress" /> + <result column="express_no" property="expressNo" /> + <collection property="items" ofType="cc.mrbird.febs.mall.entity.MallOrderItem"> + <id property="id" column="item_id" /> + <result property="orderId" column="order_id" /> + <result property="goodsId" column="goods_id" /> + <result property="skuId" column="sku_id" /> + <result property="goodsName" column="goods_name" /> + <result property="itemScoreAmount" column="item_score_amount" /> + <result property="itemAmount" column="item_amount" /> + <result property="itemScorePrice" column="item_score_price" /> + <result property="goodsName" column="goods_name" /> + <result property="styleName" column="style_name" /> + <result property="skuName" column="sku_name" /> + <result property="skuImage" column="sku_image" /> + <result property="cnt" column="cnt" /> + <result property="price" column="price" /> + <result property="amount" column="amount" /> + <result property="isNormal" column="is_normal" /> + <result property="memberInviteId" column="member_invite_id" /> + <result property="memberCouponId" column="member_coupon_id" /> + <result property="state" column="state" /> + </collection> + </resultMap> + + <select id="selectNewApiOrderListInPage" resultMap="NewOrderInfoMap"> + select + a.* , + b.* , + b.amount as item_amount , + b.score_amount as item_score_amount , + FLOOR((c.original_price * d.static_prop)/100) as item_score_price , + express.express_no + from mall_order_info a + left join mall_express_info express on a.id=express.order_id + left join mall_order_item b on a.id=b.order_id + left join mall_goods_sku c on c.id=b.sku_id + left join mall_goods d on d.id=b.goods_id + <where> + a.del_flag=2 + <if test="record.memberId != null"> + and a.member_id=#{record.memberId} + </if> + <if test="record.query != null and record.query != ''"> + and (b.goods_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.style_name like CONCAT('%', CONCAT(#{record.query}, '%')) or b.sku_name like CONCAT('%', CONCAT(#{record.query}, '%'))) + </if> + <if test="record.status == 4 and record.status != 0"> + and a.status = 4 + </if> + <if test="record.status != 4 and record.status != 0 and record.status != 5"> + and a.status = #{record.status} + </if> + <if test="record.status == 5"> + and a.status = 7 or b.state in (2,3) + </if> + <if test="record.orderType != null"> + and a.order_type=#{record.orderType} + </if> + </where> + order by a.created_time desc + </select> + + <select id="selectByIdAndTakeUniqueCode" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> + select * from mall_order_info where id = #{orderId} and take_unique_code = #{takeUniqueCode} + </select> + + <select id="selectAllOrderInfoByIdAndTakeUniqueCode" resultMap="OrderInfoMap"> + select + a.*, + b.goods_name, + b.sku_name, + b.cnt, + b.price, + b.amount + from mall_order_info a + inner join mall_order_item b on a.id=b.order_id + where a.del_flag=2 and a.id = #{orderId} + order by a.created_time desc + </select> + + <select id="getGoodsStatisticsInPage" resultType="cc.mrbird.febs.mall.vo.AdminGoodsStatisticsVo"> + select + goods_name goodsName, + SUM(cnt) goodsCnt + from mall_order_item + <where> + 1=1 + <if test="record.orderIdsStr != null"> + and order_id in + <foreach collection="record.orderIdsStr" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + </if> + </where> + GROUP BY goods_id + ORDER BY goods_id desc + </select> + + <select id="selectAmountOrTeamAmount" resultType="java.math.BigDecimal"> + select IFNULL(sum(IFNULL(a.amount,0)),0) from mall_order_info a + inner join mall_member b on a.member_id=b.ID + <where> + a.status in (2,3,4) + <if test="type == 1"> + and b.invite_id=#{inviteId} + </if> + <if test="type == 2"> + and FIND_IN_SET(#{inviteId},b.referrer_ids) + </if> + </where> + </select> + + <select id="selectBypayOrderNo" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> + select * from mall_order_info where pay_order_no = #{payOrderNo} + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1