<?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.MallGoodsMapper"> 
 | 
  
 | 
    <resultMap id="MallGoodsMap" type="cc.mrbird.febs.mall.entity.MallGoods"> 
 | 
        <id property="id" column="id" /> 
 | 
        <result property="goodsNo" column="goods_no" /> 
 | 
        <result property="goodsName" column="goods_name" /> 
 | 
        <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="presentPrice" column="present_price" /> 
 | 
        <result property="categoryId" column="category_id" /> 
 | 
        <result property="volume" column="volume" /> 
 | 
        <result property="stock" column="stock" /> 
 | 
        <result property="score" column="score" /> 
 | 
        <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" /> 
 | 
        <collection property="styles" ofType="cc.mrbird.febs.mall.entity.MallGoodsStyle"> 
 | 
            <id property="id" column="style_id" /> 
 | 
            <result property="name" column="style_name" /> 
 | 
            <result property="goodsId" column="style_goods_id" /> 
 | 
            <collection property="skus" ofType="cc.mrbird.febs.mall.entity.MallGoodsSku"> 
 | 
                <id property="id" column="sku_id" /> 
 | 
                <result property="skuName" column="sku_name" /> 
 | 
                <result property="skuImage" column="sku_image" /> 
 | 
                <result property="stock" column="sku_stock" /> 
 | 
                <result property="skuVolume" column="sku_volume" /> 
 | 
                <result property="originalPrice" column="sku_original_price" /> 
 | 
                <result property="presentPrice" column="sku_present_price" /> 
 | 
                <result property="styleId" column="sku_style_id"/> 
 | 
                <result property="goodsId" column="sku_goods_id" /> 
 | 
            </collection> 
 | 
        </collection> 
 | 
    </resultMap> 
 | 
  
 | 
    <select id="selectGoodsDetailById" resultMap="MallGoodsMap"> 
 | 
        select 
 | 
            a.*, 
 | 
            b.id style_id, 
 | 
            b.name style_name, 
 | 
            b.goods_id style_goods_id, 
 | 
            c.id sku_id, 
 | 
            c.sku_name, 
 | 
            c.sku_image, 
 | 
            c.stock sku_stock, 
 | 
            c.sku_volume, 
 | 
            c.original_price sku_original_price, 
 | 
            c.present_price sku_present_price, 
 | 
            c.style_id sku_style_id, 
 | 
            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 
 | 
        where a.id=#{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectMallGoodsListQueryInPage" resultType="cc.mrbird.febs.mall.vo.MallGoodsListVo"> 
 | 
        select * from ( 
 | 
            select 
 | 
                a.id, 
 | 
                a.goods_name, 
 | 
                a.goods_introdution goodsIntroduction, 
 | 
                a.thumb, 
 | 
                a.original_price, 
 | 
                a.present_price, 
 | 
                a.score, 
 | 
                a.is_hot, 
 | 
                a.carriage_type, 
 | 
                a.carriage_amount, 
 | 
                a.carriage_rule_id, 
 | 
                a.goods_weight, 
 | 
                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} and a.present_price != 0 
 | 
                    </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.id desc 
 | 
        ) 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 == 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="selectMallGoodsInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallGoodsVo"> 
 | 
        select 
 | 
        a.id, 
 | 
        a.goods_name, 
 | 
        a.goods_no, 
 | 
        a.goods_introdution, 
 | 
        a.unit, 
 | 
        a.thumb, 
 | 
        a.goods_details, 
 | 
        a.is_sale, 
 | 
        a.original_price, 
 | 
        a.present_price, 
 | 
        a.is_hot, 
 | 
        a.score, 
 | 
        a.is_normal, 
 | 
        b.name categaryName, 
 | 
        IFNULL(sum(c.sku_volume), a.volume) skuVolume, 
 | 
        IFNULL(sum(c.stock), a.stock) stock 
 | 
        from mall_goods a 
 | 
        left join mall_goods_category b on b.id = a.category_id 
 | 
        left join mall_goods_sku c on c.goods_id = a.id 
 | 
        <where> 
 | 
            <if test="record != null"> 
 | 
                <if test="record.goodsName != null and record.goodsName != ''"> 
 | 
                    and a.goods_name like CONCAT('%', CONCAT(#{record.goodsName}, '%')) 
 | 
                </if> 
 | 
                <if test="record.goodsType != null and record.goodsType != ''"> 
 | 
                    and a.goods_type=#{record.goodsType} 
 | 
                </if> 
 | 
            </if> 
 | 
        </where> 
 | 
        group by a.id 
 | 
        order by a.created_time desc 
 | 
    </select> 
 | 
  
 | 
    <select id="selectMallGoodsCountByGoodsName" resultType="java.lang.Integer"> 
 | 
        select count(id) from mall_goods a where a.goods_name = #{goodsName} 
 | 
    </select> 
 | 
  
 | 
  
 | 
  
 | 
    <select id="selectMallGoodsCountByGoodsNameAndGoodId" resultType="java.lang.Integer"> 
 | 
        select count(id) from mall_goods a where a.goods_name = #{goodsName} and a.id != #{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectMallGoodsCountByGoodsNo" resultType="java.lang.Integer"> 
 | 
        select count(id) from mall_goods a where a.goods_no = #{goodsNo} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectMallGoodsCountByGoodsNoAndGoodId" resultType="java.lang.Integer"> 
 | 
        select count(id) from mall_goods a where a.goods_no = #{goodsNo} and a.id != #{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectMallGoodsInfoById" resultType="cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo"> 
 | 
        select * from mall_goods a where a.id = #{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectGoodsStockAndVolume" resultType="java.util.HashMap"> 
 | 
        select 
 | 
            sum(stock) stock, 
 | 
            sum(sku_volume) volume 
 | 
        from mall_goods_sku 
 | 
        where goods_id=#{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="selectMallGoodsByCategaryId" resultType="cc.mrbird.febs.mall.entity.MallGoods"> 
 | 
        select * from mall_goods a where a.category_id = #{categaryId} 
 | 
    </select> 
 | 
  
 | 
    <select id="getMallGoodsUpdateInfoById" resultType="cc.mrbird.febs.mall.vo.AdminMailGoodsUpdateVo"> 
 | 
        select * from mall_goods a where a.id = #{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="getAllGoodsTree" resultType="cc.mrbird.febs.mall.vo.AdminMallGoodsTreeVo"> 
 | 
        select 
 | 
               a.id  goodsId, 
 | 
               a.goods_name  goodsName 
 | 
        from mall_goods a 
 | 
    </select> 
 | 
  
 | 
    <select id="selectOrderGoodsList" resultType="cc.mrbird.febs.mall.entity.MallGoods"> 
 | 
        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 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.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> 
 | 
            <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) 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)) goodNum, 
 | 
            (select count(z.id) from mall_goods_comment z where z.goods_id = #{id} and (z.star <![CDATA[ < ]]> 3 )) 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.original_price, 
 | 
        a.present_price, 
 | 
        a.score, 
 | 
        a.is_hot, 
 | 
        a.carriage_type, 
 | 
        a.carriage_amount, 
 | 
        a.carriage_rule_id, 
 | 
        a.goods_weight, 
 | 
        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} and a.present_price != 0 
 | 
                </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.id desc 
 | 
        ) 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 == 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> 
 |