<?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"/>
|
|
|
|
</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"/>
|
</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
|
</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}
|
|
</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>
|
|
</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>
|
</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>
|
|
|
</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>
|