<?xml version="1.0" encoding="UTF-8"?> 
 | 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
 | 
<mapper namespace="cc.mrbird.febs.mall.mapper.MallOrderInfoMapper"> 
 | 
  
 | 
    <select id="selectInPage" resultMap="OrderInfoMap"> 
 | 
        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 
 | 
        from mall_order_info a 
 | 
        inner join mall_order_item b on a.id=b.order_id 
 | 
        <where> 
 | 
            a.del_flag=2 
 | 
            <if test="record.status == 4 and record.status != 0"> 
 | 
                and a.status in (5,6) 
 | 
            </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 
 | 
            </if> 
 | 
            <if test="record.memberId != null"> 
 | 
                and a.member_id=#{record.memberId} 
 | 
            </if> 
 | 
            <if test="record.orderType != null"> 
 | 
                and a.order_type=#{record.orderType} 
 | 
            </if> 
 | 
            <if test="record.deliveryType != null"> 
 | 
                and a.delivery_type=#{record.deliveryType} 
 | 
            </if> 
 | 
            <if test="record.takeUniqueCode != null"> 
 | 
                and a.take_unique_code=#{record.takeUniqueCode} 
 | 
            </if> 
 | 
        </where> 
 | 
        order by a.created_time desc 
 | 
    </select> 
 | 
  
 | 
    <select id="selectOrderByMemberIdAndId" resultMap="OrderInfoMap"> 
 | 
        select 
 | 
            a.*, 
 | 
            b.goods_name from mall_order_info a 
 | 
                          inner join mall_order_item b on a.id=b.order_id where a.member_id=#{memberId} and a.id=#{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectOrderListInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallOrderInfoVo"> 
 | 
        select a.*, 
 | 
               b.name memberName, 
 | 
               b.bind_phone memberBindPhone, 
 | 
               b.phone memberPhone, 
 | 
               c.name leaderName 
 | 
        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 
 | 
        <where> 
 | 
            <if test="record != null"> 
 | 
                <if test="record.payResult != null and record.payResult != ''"> 
 | 
                    and a.pay_result = #{record.payResult} 
 | 
                </if> 
 | 
                <if test="record.orderType != null"> 
 | 
                    and a.order_type = #{record.orderType} 
 | 
                </if> 
 | 
                <if test="record.status != null and record.status != ''"> 
 | 
                    and a.status = #{record.status} 
 | 
                </if> 
 | 
                <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> 
 | 
                <if test="record.name != null and record.name != ''"> 
 | 
                    and b.name like CONCAT('%', CONCAT(#{record.name}, '%')) 
 | 
                </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> 
 | 
        GROUP BY a.id  order by a.created_time desc 
 | 
    </select> 
 | 
  
 | 
    <select id="getMallOrderInfoById" resultType="cc.mrbird.febs.mall.vo.AdminMallOrderVo"> 
 | 
        select * from mall_order_info where id = #{id} 
 | 
    </select> 
 | 
  
 | 
  
 | 
    <resultMap id="OrderInfoMap" 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="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="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" /> 
 | 
        <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="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="state" column="state" /> 
 | 
        </collection> 
 | 
    </resultMap> 
 | 
  
 | 
    <select id="selectApiOrderListInPage" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> 
 | 
        select 
 | 
               a.* 
 | 
        from mall_order_info a 
 | 
        inner join mall_order_item b on a.id=b.order_id 
 | 
        <where> 
 | 
            a.del_flag=2 
 | 
            <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 
 | 
            </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.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} 
 | 
            </if> 
 | 
        </where> 
 | 
        order by a.created_time desc 
 | 
    </select> 
 | 
  
 | 
    <select id="selectOrderDetailsById" resultMap="OrderInfoMap"> 
 | 
        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.state, 
 | 
            b.cnt, 
 | 
            b.price, 
 | 
            b.amount, 
 | 
            b.is_normal 
 | 
        from mall_order_info a 
 | 
             inner join mall_order_item b on a.id=b.order_id 
 | 
        where a.id=#{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectMemberOrderStatusCnt" resultType="java.util.Map"> 
 | 
        select 
 | 
            a.status, 
 | 
            count(1) cnt 
 | 
        from mall_order_info a 
 | 
        where a.del_flag=2 and a.member_id=#{memberId} 
 | 
        group by a.status 
 | 
    </select> 
 | 
  
 | 
    <select id="getMallOrderDetailById" resultType="cc.mrbird.febs.mall.vo.AdminOrderDetailVo"> 
 | 
        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"> 
 | 
        select * from mall_order_item where order_id = #{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectOrderInfoByStatus" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> 
 | 
        select * from mall_order_info where status=#{status} 
 | 
    </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 15 minute) 
 | 
    </select> 
 | 
  
 | 
    <select id="selectCntDirectOrTeam" resultType="java.lang.Integer"> 
 | 
        select IFNULL(count(1), 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.referrer_id=#{inviteId} 
 | 
            </if> 
 | 
            <if test="type == 2"> 
 | 
                and find_in_set(#{inviteId}, b.referrer_ids) 
 | 
            </if> 
 | 
        </where> 
 | 
    </select> 
 | 
  
 | 
    <select id="selectCntDirect" resultType="java.lang.Integer"> 
 | 
        select count(1) from ( 
 | 
        select a.invite_id, count(1) 
 | 
        from mall_member a 
 | 
           inner join mall_order_info b on a.ID=b.member_id 
 | 
        where a.referrer_id=#{inviteId} and b.status in (2,3,4) 
 | 
        group by a.invite_id 
 | 
         ) a 
 | 
    </select> 
 | 
  
 | 
    <select id="selectTotalAmount" resultType="java.math.BigDecimal"> 
 | 
        select IFNULL(sum(IFNULL(amount,0)),0) from mall_order_info 
 | 
        where member_id=#{memberId} and status in (2, 3, 4) and order_type=1 
 | 
    </select> 
 | 
  
 | 
    <select id="selectTotalAmountForDate" resultType="java.math.BigDecimal"> 
 | 
        select IFNULL(sum(IFNULL(amount,0)),0) from mall_order_info 
 | 
        where status = 4 
 | 
        <if test="member != null"> 
 | 
            and member_id=#{memberId} 
 | 
        </if> 
 | 
        <if test="date != null"> 
 | 
            and date_format(a.receiving_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') 
 | 
        </if> 
 | 
    </select> 
 | 
  
 | 
    <select id="selectTotalAmountUnCostForDate" resultType="java.math.BigDecimal"> 
 | 
        select IFNULL(sum(IFNULL(b.amount,0) - IFNULL(b.cost_price*b.cnt, 0)),0) 
 | 
        from mall_order_info a 
 | 
        inner join mall_order_item b on a.id=b.order_id 
 | 
        where a.order_type=1 
 | 
        <if test="isNormal == 2"> 
 | 
            and a.status in (2, 3, 4) and b.is_normal = 2 and b.has_settle=1 
 | 
        </if> 
 | 
        <if test="isNormal == 1"> 
 | 
            and a.status=4 and b.is_normal = 1 and b.has_settle=1 
 | 
        </if> 
 | 
        <if test="member != null"> 
 | 
            and member_id=#{memberId} 
 | 
        </if> 
 | 
        <if test='date != null and dateType == "D"'> 
 | 
            and date_format(a.pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') 
 | 
        </if> 
 | 
        <if test='date != null and dateType == "M"'> 
 | 
            and date_format(a.pay_time, '%Y-%m') = date_format(#{date}, '%Y-%m') 
 | 
        </if> 
 | 
        <if test='date != null and dateType == "Y"'> 
 | 
            and date_format(a.pay_time, '%Y') = date_format(#{date}, '%Y') 
 | 
        </if> 
 | 
    </select> 
 | 
  
 | 
    <select id="selectByOrderNo" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo"> 
 | 
        select * from mall_order_info where order_no=#{orderNo} 
 | 
    </select> 
 | 
  
 | 
    <update id="updateOrderConfirmStatus"> 
 | 
        update mall_order_info 
 | 
        set status=4, 
 | 
            receiving_time=#{updateTime} 
 | 
        where status=3 and date_format(pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') 
 | 
    </update> 
 | 
  
 | 
    <select id="selectOrderInfoWithNormalGoods" resultMap="OrderInfoMap"> 
 | 
        select * from mall_order_info a 
 | 
        inner join mall_order_item b on a.id=b.order_id and b.is_normal=1 
 | 
        where date_format(pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') 
 | 
    </select> 
 | 
  
 | 
    <select id="selectSumAmountByPayMethodAndStatue" resultType="java.math.BigDecimal"> 
 | 
        select IFNULL(sum(IFNULL(amount,0)),0) from mall_order_info 
 | 
        where pay_method = #{payMethod} and status = #{statue} 
 | 
    </select> 
 | 
  
 | 
    <update id="updateOrderStateAndDeliveryState"> 
 | 
        update mall_order_info 
 | 
        set status = #{orderState}, 
 | 
            delivery_state = #{deliveryState} 
 | 
        where id = #{orderId} 
 | 
    </update> 
 | 
  
 | 
    <select id="selectMemberOrderStatusCntByUniquecode" resultType="java.util.Map"> 
 | 
        select 
 | 
            status, 
 | 
            count(1) cnt 
 | 
        from mall_order_info 
 | 
        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="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="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" /> 
 | 
    </resultMap> 
 | 
  
 | 
    <select id="selectNewApiOrderListInPage" resultMap="NewOrderInfoMap"> 
 | 
        select 
 | 
        a.* 
 | 
        from mall_order_info a 
 | 
        <where> 
 | 
            a.del_flag=2 
 | 
            <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 
 | 
            </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.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> 
 | 
        <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> 
 | 
</mapper> 
 |