| <?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="com.matrix.system.shopXcx.dao.ShopSkuDao"> | 
|     <!-- 定义ShopSku 的复杂关联map --> | 
|     <resultMap type="com.matrix.system.shopXcx.bean.ShopSku" id="ShopSkuMap"> | 
|         <id property="id" column="id"/> | 
|         <result property="createBy" column="create_by"/> | 
|         <result property="createTime" column="create_time"/> | 
|         <result property="updateBy" column="update_by"/> | 
|         <result property="updateTime" column="update_time"/> | 
|         <result property="pId" column="p_id"/> | 
|         <result property="name" column="name"/> | 
|         <result property="imgPath" column="img_path"/> | 
|         <result property="stock" column="stock"/> | 
|         <result property="price" column="price"/> | 
|         <result property="score" column="score"/> | 
|         <result property="sort" column="sort"/> | 
|         <result property="atrid" column="atrid"/> | 
|         <result property="purchasePrice" column="purchase_price"/> | 
|         <result property="sealCount" column="seal_count"/> | 
|         <result property="stockCode" column="stock_code"/> | 
|         <result property="shopId" column="shop_id"/> | 
|         <result property="selfPrice" column="self_price"/> | 
|         <result property="sealesPrice" column="seales_price"/> | 
|         <result property="invitationPrice" column="invitation_price"/> | 
|         <result property="scorePrice" column="score_price"/> | 
|         <result property="scoreCount" column="score_count"/> | 
|   | 
|   | 
|   | 
|     </resultMap> | 
|   | 
|   | 
|     <!-- 定义ShopSku 的简单map  ,本map不添加其他的关联属性 --> | 
|     <resultMap type="com.matrix.system.shopXcx.bean.ShopSku" id="ShopSkuSimpleMap"> | 
|         <id property="id" column="id"/> | 
|         <result property="createBy" column="create_by"/> | 
|         <result property="createTime" column="create_time"/> | 
|         <result property="updateBy" column="update_by"/> | 
|         <result property="updateTime" column="update_time"/> | 
|         <result property="pId" column="p_id"/> | 
|         <result property="name" column="name"/> | 
|         <result property="imgPath" column="img_path"/> | 
|         <result property="stock" column="stock"/> | 
|         <result property="price" column="price"/> | 
|         <result property="sort" column="sort"/> | 
|         <result property="atrid" column="atrid"/> | 
|         <result property="purchasePrice" column="purchase_price"/> | 
|         <result property="sealCount" column="seal_count"/> | 
|         <result property="stockCode" column="stock_code"/> | 
|         <result property="shopId" column="shop_id"/> | 
|         <result property="selfPrice" column="self_price"/> | 
|         <result property="sealesPrice" column="seales_price"/> | 
|         <result property="invitationPrice" column="invitation_price"/> | 
|         <result property="scorePrice" column="score_price"/> | 
|         <result property="scoreCount" column="score_count"/> | 
|     </resultMap> | 
|   | 
|     <!-- 字段sql --> | 
|     <sql id="columns"> | 
|         create_by, | 
|         create_time, | 
|         update_by, | 
|         update_time, | 
|             id, | 
|             p_id, | 
|             name, | 
|             img_path, | 
|             stock, | 
|             price, | 
|             score, | 
|             sort, | 
|             atrid, | 
|             purchase_price, | 
|             seal_count, | 
|             stock_code, | 
|             shop_id, | 
| self_price, | 
| seales_price, | 
| invitation_price, | 
|         score_price, | 
| score_count | 
|   | 
|   | 
|     </sql> | 
|   | 
|     <!-- 属性sql --> | 
|     <sql id="propertys"> | 
|         #{item.createBy}, | 
|         now(), | 
|         #{item.updateBy}, | 
|         now(), | 
|             #{item.id}, | 
|             #{item.pId}, | 
|             #{item.name}, | 
|             #{item.imgPath}, | 
|             #{item.stock}, | 
|             #{item.price}, | 
|             #{item.score}, | 
|             #{item.sort}, | 
|             #{item.atrid}, | 
|             #{item.purchasePrice}, | 
|             #{item.sealCount}, | 
|             #{item.stockCode}, | 
|             #{item.shopId}, | 
|             #{item.selfPrice}, | 
|             #{item.sealesPrice}, | 
|             #{item.invitationPrice}, | 
|             #{item.scorePrice}, | 
|             #{item.scoreCount} | 
|   | 
|   | 
|     </sql> | 
|   | 
|     <!-- where sql --> | 
|     <sql id="where_sql"> | 
|   | 
|         <if test="record!=null"> | 
|             <if test="(record.id!=null and record.id!='') or  (record.id!='' and record.id==0)  "> | 
|                 and id = #{record.id} | 
|             </if> | 
|             <if test="(record.pId!=null and record.pId!='') or  (record.pId!='' and record.pId==0)  "> | 
|                 and p_id = #{record.pId} | 
|             </if> | 
|             <if test="(record.name!=null and record.name!='') or  (record.name!='' and record.name==0)  "> | 
|                 and name = #{record.name} | 
|             </if> | 
|             <if test="(record.imgPath!=null and record.imgPath!='') or  (record.imgPath!='' and record.imgPath==0)  "> | 
|                 and img_path = #{record.imgPath} | 
|             </if> | 
|             <if test="(record.stock!=null and record.stock!='') or  (record.stock!='' and record.stock==0)  "> | 
|                 and stock = #{record.stock} | 
|             </if> | 
|             <if test="(record.price!=null and record.price!='') or  (record.price!='' and record.price==0)  "> | 
|                 and price = #{record.price} | 
|             </if> | 
|             <if test="(record.score!=null and record.score!='') or  (record.score!='' and record.score==0)  "> | 
|                 and score = #{record.score} | 
|             </if> | 
|             <if test="(record.sort!=null and record.sort!='') or  (record.sort!='' and record.sort==0)  "> | 
|                 and sort = #{record.sort} | 
|             </if> | 
|             <if test="(record.atrid!=null and record.atrid!='') or  (record.atrid!='' and record.atrid==0)  "> | 
|                 and atrid = #{record.atrid} | 
|             </if> | 
|             <if test="(record.stockCode!=null and record.stockCode!='') or  (record.stockCode!='' and record.stockCode==0)  "> | 
|                 and stock_code = #{record.stockCode} | 
|             </if> | 
|             <if test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  "> | 
|                 and shop_id = #{record.shopId} | 
|             </if> | 
|   | 
|             <if test="(record.scorePrice!=null and record.scorePrice!='') or  (record.scorePrice!='' and record.scorePrice==0)  "> | 
|                 and score_price = #{record.scorePrice} | 
|             </if> | 
|   | 
|   | 
|             <if test="(record.scoreCount!=null and record.scoreCount!='') or  (record.scoreCount!='' and record.scoreCount==0)  "> | 
|                 and score_count = #{record.scoreCount} | 
|             </if> | 
|   | 
|   | 
|   | 
|         </if> | 
|   | 
|     </sql> | 
|   | 
|     <!--  插入方法   --> | 
|     <insert id="insert" parameterType="com.matrix.system.shopXcx.bean.ShopSku" | 
|             useGeneratedKeys="true" keyProperty="item.id"> | 
|         INSERT INTO shop_sku ( | 
|         <include refid="columns"></include> | 
|         ) | 
|         VALUES ( | 
|         <include refid="propertys"></include> | 
|         ) | 
|     </insert> | 
|   | 
|   | 
|     <!--  批量插入   --> | 
|     <insert id="batchInsert" parameterType="java.util.List"> | 
|         INSERT INTO shop_sku ( | 
|         <include refid="columns"></include> | 
|         ) | 
|         VALUES | 
|         <foreach collection="list" item="item" index="index" separator=",">( | 
|             <include refid="propertys"></include> | 
|             ) | 
|         </foreach> | 
|     </insert> | 
|   | 
|   | 
|     <!--  根据Map更新 部分更新   --> | 
|     <update id="updateByMap" parameterType="java.util.HashMap"> | 
|         UPDATE shop_sku | 
|         <set> | 
|             <if test="_parameter.containsKey('pId')"> | 
|                 p_id = #{pId}, | 
|             </if> | 
|             <if test="_parameter.containsKey('name')"> | 
|                 name = #{name}, | 
|             </if> | 
|             <if test="_parameter.containsKey('imgPath')"> | 
|                 img_path = #{imgPath}, | 
|             </if> | 
|             <if test="_parameter.containsKey('stock')"> | 
|                 stock = #{stock}, | 
|             </if> | 
|             <if test="_parameter.containsKey('price')"> | 
|                 price = #{price}, | 
|             </if> | 
|             <if test="_parameter.containsKey('sort')"> | 
|                 sort = #{sort}, | 
|             </if> | 
|             <if test="_parameter.containsKey('atrid')"> | 
|                 atrid = #{atrid}, | 
|             </if> | 
|             <if test="_parameter.containsKey('purchasePrice')"> | 
|                 purchase_price = #{purchasePrice}, | 
|             </if> | 
|             <if test="_parameter.containsKey('stockCode')"> | 
|                 stock_code = #{stockCode}, | 
|             </if> | 
|             <if test="_parameter.containsKey('invitationPrice')"> | 
|                 invitation_price = #{invitationPrice}, | 
|             </if> | 
|             <if test="_parameter.containsKey('sealesPrice')"> | 
|                 seales_price = #{sealesPrice}, | 
|             </if> | 
|   | 
|             <if test="_parameter.containsKey('scorePrice')"> | 
|                 score_price = #{scorePrice}, | 
|             </if> | 
|   | 
|             <if test="_parameter.containsKey('scoreCount')"> | 
|                 score_count = #{scoreCount}, | 
|             </if> | 
|   | 
|             <if test="_parameter.containsKey('selfPrice')"> | 
|                 self_price = #{selfPrice}, | 
|             </if> | 
|   | 
|   | 
|         </set> | 
|         WHERE id=#{id} | 
|     </update> | 
|   | 
|   | 
|     <!--  根据对象更新 部分更新   --> | 
|     <update id="updateByModel" parameterType="Integer"> | 
|         UPDATE shop_sku | 
|         <set> | 
|             <if test="record.pId != null "> | 
|                 p_id = #{record.pId}, | 
|             </if> | 
|             <if test="record.name != null  "> | 
|                 name = #{record.name}, | 
|             </if> | 
|             <if test="record.imgPath != null  "> | 
|                 img_path = #{record.imgPath}, | 
|             </if> | 
|             <if test="record.stock != null "> | 
|                 stock = #{record.stock}, | 
|             </if> | 
|             <if test="record.price != null "> | 
|                 price = #{record.price}, | 
|             </if> | 
|             <if test="record.score != null "> | 
|                 score = #{record.score}, | 
|             </if> | 
|             <if test="record.sort != null "> | 
|                 sort = #{record.sort}, | 
|             </if> | 
|             <if test="record.atrid != null "> | 
|                 atrid = #{record.atrid}, | 
|             </if> | 
|             <if test="record.purchasePrice != null "> | 
|                 purchase_price = #{record.purchasePrice}, | 
|             </if> | 
|   | 
|             <if test="record.sealCount != null "> | 
|                 seal_count = #{record.sealCount}, | 
|             </if> | 
|             <if test="record.stockCode != null "> | 
|                 stock_code = #{record.stockCode}, | 
|             </if> | 
|             <if test="record.sealesPrice != null "> | 
|                 seales_price = #{record.sealesPrice}, | 
|             </if> | 
|             <if test="record.invitationPrice != null "> | 
|                 invitation_price = #{record.invitationPrice}, | 
|             </if> | 
|   | 
|             <if test="record.scorePrice != null "> | 
|                 score_price = #{record.scorePrice}, | 
|             </if> | 
|   | 
|             <if test="record.scoreCount != null "> | 
|                 score_count = #{record.scoreCount}, | 
|             </if> | 
|   | 
|             <if test="record.selfPrice != null "> | 
|                 self_price = #{record.selfPrice}, | 
|             </if> | 
|   | 
|   | 
|         </set> | 
|         WHERE id=#{record.id} | 
|     </update> | 
|   | 
|     <!-- 批量删除 --> | 
|     <delete id="deleteByIds" parameterType="java.util.List"> | 
|         delete from shop_sku where id in | 
|         <foreach collection="list" index="index" item="item" open="(" | 
|                  separator="," close=")"> | 
|             #{item} | 
|         </foreach> | 
|     </delete> | 
|   | 
|     <!-- 根据id删除--> | 
|     <delete id="deleteById" parameterType="Integer"> | 
|         DELETE FROM shop_sku | 
|         where  id=#{id}  | 
|     </delete> | 
|   | 
|     <!-- 根据对象删除--> | 
|     <delete id="deleteByModel" parameterType="com.matrix.system.shopXcx.bean.ShopSku"> | 
|         DELETE FROM shop_sku | 
|         <where> | 
|             <include refid="where_sql"></include> | 
|         </where> | 
|     </delete> | 
|   | 
|     <select id="salesStatistics" resultType="com.matrix.system.shopXcx.pojo.SalesStatistics"> | 
|         SELECT | 
|             p.title, | 
|             s.name, | 
|             s.price, | 
|             SUM(od.count) as orderCount , | 
|             SUM(od.total_price) as orderPrice, | 
|             (s.price-s.purchase_price) as profit, | 
|             s.purchase_price as purchasePrice, | 
|             (s.purchase_price*s.stock) as storePrice, | 
|             s.seal_count as storePrice | 
|         from shop_sku s | 
|         LEFT JOIN shop_product p on  s.p_id=p.id | 
|         LEFT JOIN shop_order_details od on od.s_id=s.id | 
|         LEFT JOIN shop_order  o on o.id=od.order_id and o.order_status  in (2,3,4,5,6,8,9) | 
|         where p.company_id=#{record.companyId} | 
|         GROUP BY s.id | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|   | 
|     </select> | 
|     <!-- 查询总条数 --> | 
|     <select id="selectTotalsalesStatistics" parameterType="long" resultType="java.lang.Integer"> | 
|   | 
|         SELECT COUNT(1) from ( | 
|         SELECT | 
|             s.id | 
|         FROM | 
|             shop_sku s | 
|         LEFT JOIN shop_product p ON s.p_id = p.id | 
|         LEFT JOIN shop_order_details od ON od.s_id = s.id | 
|         LEFT JOIN shop_order o ON o.id = od.order_id | 
|         AND o.order_status IN (2, 3, 4, 5, 6, 8, 9) | 
|         WHERE | 
|             p.company_id =#{record.companyId} | 
|         GROUP BY | 
|             s.id | 
|         ) s | 
|   | 
|    </select> | 
|   | 
|   | 
|   | 
|   | 
|     <!-- 分页查询 --> | 
|     <select id="selectInPage" resultMap="ShopSkuMap"> | 
|         select | 
|         <include refid="columns"></include> | 
|         from shop_sku | 
|         <where> | 
|             <include refid="where_sql"></include> | 
|         </where> | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <!-- 查询总条数 --> | 
|     <select id="selectTotalRecord" parameterType="long" resultType="java.lang.Integer"> | 
|         select count(*) | 
|         from shop_sku | 
|         <where> | 
|             <include refid="where_sql"></include> | 
|         </where> | 
|     </select> | 
|   | 
|     <!-- 根据id查询--> | 
|     <select id="selectById" resultMap="ShopSkuMap"> | 
|         select | 
|         <include refid="columns"></include> | 
|         from shop_sku | 
|         where id=#{id} | 
|     </select> | 
|   | 
|     <!-- 根据产品id查询--> | 
|     <select id="selectByPid" resultMap="ShopSkuMap"> | 
|         select t1.*, t2.shop_name shopName, t3.name goodsName | 
|         from shop_sku t1 | 
|         left join sys_shop_info t2 on t1.shop_id=t2.id | 
|         left join shopping_goods t3 on t1.stock_code=t3.id and t3.shop_id=13 | 
|         where p_id=#{pid} | 
|         order by sort | 
|     </select> | 
|   | 
|     <select id="selectByPidAndShopid" resultMap="ShopSkuMap"> | 
|         select t1.*, t2.shop_name shopName | 
|         from shop_sku t1 | 
|         left join sys_shop_info t2 on t1.shop_id=t2.id | 
|         where p_id=#{pid} and t1.shop_id=#{shopId} | 
|         order by sort | 
|     </select> | 
|   | 
|     <!-- 根据id 锁表查询--> | 
|     <select id="selectForUpdate" resultMap="ShopSkuMap"> | 
|         select | 
|         <include refid="columns"></include> | 
|         from shop_sku | 
|         where id=#{id} | 
|         for update | 
|     </select> | 
|   | 
|   | 
|     <!-- 根据对象查询--> | 
|     <select id="selectByModel" resultMap="ShopSkuMap"> | 
|         select | 
|         <include refid="columns"></include> | 
|         from shop_sku | 
|         <where> | 
|             <include refid="where_sql"></include> | 
|         </where> | 
|     </select> | 
|   | 
|     <!--根据ID集合查询列表--> | 
|     <select id="selectByIds" resultMap="ShopSkuMap"> | 
|         select | 
|         <include refid="columns"></include> | 
|         from shop_sku | 
|         where id in | 
|         <foreach collection="ids" item="item" separator="," open="(" close=")"> | 
|             #{item} | 
|         </foreach> | 
|     </select> | 
|   | 
|     <!--查询上架状态的规格列表--> | 
|     <select id="selectSkuByInUse" resultMap="ShopSkuMap"> | 
|         select sku.id, sku.p_id, sku.`name`, sku.stock, sku.atrid | 
|         from shop_sku sku, shop_product pd | 
|         where sku.p_id = pd.id and pd.`status` = 1 and pd.del_flag = 2 | 
|     </select> | 
|   | 
|     <!--查询待配送的规格及其数量--> | 
|     <select id="selectWaitSendSkuInfo" resultMap="ShopSkuMap"> | 
|         select ss.atrid, sum(sod.count) stock from shop_order so, shop_order_details sod, shop_sku ss | 
|         where so.id = sod.order_id and sod.s_id = ss.id | 
|         and 2 >= so.order_status and !isnull(ss.atrid) | 
|         group by ss.atrid | 
|     </select> | 
|   | 
|   | 
|     <!--批量更新库存--> | 
|     <update id="updateBatch" parameterType="java.util.List"> | 
|         update shop_sku | 
|         <trim prefix="set" suffixOverrides=","> | 
|             <trim prefix="stock = case" suffix="end,"> | 
|                 <foreach collection="list" item="item" index="index"> | 
|                     <if test="item.stock != null"> | 
|                         when atrid = #{item.atrid} then #{item.stock} | 
|                     </if> | 
|                 </foreach> | 
|             </trim> | 
|             <trim prefix="update_time = case" suffix="end,"> | 
|                 <foreach collection="list" item="item" index="index"> | 
|                     <if test="item.stock != null"> | 
|                         when atrid = #{item.atrid} then now() | 
|                     </if> | 
|                 </foreach> | 
|             </trim> | 
|         </trim> | 
|         where | 
|         <foreach collection="list" separator="or" item="item" index="index"> | 
|             atrid=#{item.atrid} | 
|         </foreach> | 
|     </update> | 
|   | 
| </mapper> |