| <?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" /> | 
|         <result property="levelOnePrice" column="level_one_price" /> | 
|         <result property="levelTwoPrice" column="level_two_price" /> | 
|         <result property="levelThreePrice" column="level_three_price" /> | 
|         <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" /> | 
|                 <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> | 
|   | 
|     <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_weight sku_goods_weight, | 
|             c.sample sample, | 
|             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 | 
|         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.unit, | 
|                 a.original_price, | 
|                 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, | 
|                 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.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="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.unit, | 
|         a.original_price, | 
|         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} 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.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> |