OrderItem.xml 8.24 KB
<?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.diligrp.orders.dao.OrderItemDao">

	<!-- order_item 所有查询列 -->
	<sql id="QUERY_COLUMN_LIST">
		<![CDATA[id,order_id AS orderId,product_id AS productId,buyer_id AS buyerId,seller_id AS sellerId,sale_type AS saleType,sku,sku_title AS skuTitle,sku_attributes AS skuAttributes,sku_num AS skuNum,sku_price AS skuPrice,sku_original_price AS skuOriginalPrice,create_time AS createTime,edit_time AS editTime,is_commented AS isCommented,version_num as versionNum,sku_picture as skuPicture,shop_id as shopId,price_unit as priceUnit]]>
	</sql>

	<!-- order_item 查询列来源表-->
	<sql id="QUERY_FROM_TABLE"><![CDATA[FROM order_item]]></sql>
	
	<!-- 全部条件(更多功能可以通过queryData扩展实现)  -->
	<sql id="QUERY_WHERE_CLAUSE">
		<where>
			<if test="id != null and id != ''"><![CDATA[AND id = #{id}]]></if>
			<if test="orderId != null and orderId != ''"><![CDATA[AND order_id = #{orderId}]]></if>
			<if test="productId != null and productId != ''"><![CDATA[AND product_id = #{productId}]]></if>
			<if test="sellerId != null and sellerId != ''"><![CDATA[AND seller_id = #{sellerId}]]></if>
			<if test="buyerId != null and buyerId != ''"><![CDATA[AND buyer_id = #{buyerId}]]></if>
			<if test="saleType != null and saleType != ''"><![CDATA[AND sale_type = #{saleType}]]></if>
			<if test="sku != null and sku != ''"><![CDATA[AND sku = #{sku}]]></if>
			<if test="skuTitle != null and skuTitle != ''"><![CDATA[AND sku_title = #{skuTitle}]]></if>
			<if test="skuAttributes != null and skuAttributes != ''"><![CDATA[AND sku_attributes = #{skuAttributes}]]></if>
			<if test="skuNum != null and skuNum != ''"><![CDATA[AND sku_num = #{skuNum}]]></if>
			<if test="skuPrice != null and skuPrice != ''"><![CDATA[AND sku_price = #{skuPrice}]]></if>
			<if test="skuOriginalPrice != null and skuOriginalPrice != ''"><![CDATA[AND sku_original_price = #{skuOriginalPrice}]]></if>
			<if test="createTime != null and createTime != ''"><![CDATA[AND create_time = #{createTime}]]></if>
			<if test="editTime != null and editTime != ''"><![CDATA[AND edit_time = #{editTime}]]></if>
			<if test="(isCommented != null and isCommented != '') or isCommented==0"><![CDATA[AND is_commented = #{isCommented}]]></if>
			<if test="skuPicture != null and skuPicture != ''"><![CDATA[AND sku_picture = #{skuPicture}]]></if>
			<if test="shopId != null and shopId != ''"><![CDATA[AND shop_id = #{shopId}]]></if>
			<if test="priceUnit != null and priceUnit != ''"><![CDATA[AND price_unit = #{price_unit}]]></if>
			<if test="queryData != null">
			   <if test="queryData.orderIdSet!=null and queryData.orderIdSet.size()>0">
		          AND order_id in
	              <foreach collection="queryData.orderIdSet" index="index" item="orderId" open="(" separator="," close=")">
	                #{orderId}
	              </foreach>
			   </if>
		     </if>
		</where>
	</sql>
	
	<!-- 智能排序与分页 -->
	<sql id="QUERY_ORDER_LIMIT_CONDTION">
		<choose>
		   <when test="orderField != null and orderField != ''">
		        <choose>
		            <when test="orderFieldType != null and orderFieldType != ''">
		                <![CDATA[ORDER BY ${orderField} ${orderFieldType}]]>
		            </when>
		            <otherwise>
		                <![CDATA[ORDER BY ${orderField} desc]]>
		            </otherwise>
		        </choose>
		   </when>
		   <otherwise>
		        <![CDATA[ORDER BY id desc]]>
		   </otherwise>
		</choose>
		<if test="startIndex != null and startIndex &gt;= 0 and pageSize != null and pageSize &gt; 0"><![CDATA[LIMIT #{startIndex},#{pageSize}]]></if>
	</sql>

	<!-- 更新列字段,只要不为NULL则更新,除开主键列 -->
	<sql id="UPDATE_COLUMN_SET">
		<set>
			<if test="orderId != null"><![CDATA[order_id = #{orderId},]]></if>
			<if test="productId != null"><![CDATA[product_id = #{productId},]]></if>
			<if test="sellerId != null"><![CDATA[seller_id = #{sellerId},]]></if>
			<if test="buyerId != null"><![CDATA[buyer_id = #{buyerId},]]></if>
			<if test="saleType != null"><![CDATA[sale_type = #{saleType},]]></if>
			<if test="sku != null"><![CDATA[sku = #{sku},]]></if>
			<if test="skuTitle != null"><![CDATA[sku_title = #{skuTitle},]]></if>
			<if test="skuAttributes != null"><![CDATA[sku_attributes = #{skuAttributes},]]></if>
			<if test="skuNum != null"><![CDATA[sku_num = #{skuNum},]]></if>
			<if test="skuPrice != null"><![CDATA[sku_price = #{skuPrice},]]></if>
			<if test="skuOriginalPrice != null"><![CDATA[sku_original_price = #{skuOriginalPrice},]]></if>
			<if test="isCommented != null"><![CDATA[is_commented = #{isCommented},]]></if>
			<if test="versionNum != null"><![CDATA[version_num = #{versionNum}+1,]]></if>
<!-- 			<if test="createTime != null"><![CDATA[create_time = #{createTime},]]></if> -->
			<![CDATA[edit_time = now(),]]><if test="editTime != null"></if>
			<if test="skuPicture != null"><![CDATA[sku_picture = #{skuPicture},]]></if>
			<if test="shopId != null"><![CDATA[shop_id = #{shopId},]]></if>
			<if test="priceUnit != null"><![CDATA[price_unit = #{price_unit},]]></if>
		</set>
	</sql>

	<!-- 插入order_item记录 -->
	<insert id="insertEntry" parameterType="orderItem" >
		<![CDATA[
			INSERT INTO order_item (id,order_id,product_id,buyer_id,seller_id,sale_type,sku,sku_title,sku_attributes,sku_num,sku_price,sku_original_price,create_time,edit_time,sku_picture,shop_id,price_unit)
			VALUES (#{id},#{orderId},#{productId},#{buyerId},#{sellerId},#{saleType},#{sku},#{skuTitle},#{skuAttributes},#{skuNum},#{skuPrice},#{skuOriginalPrice},#{createTime},#{editTime},#{skuPicture},#{shopId},#{priceUnit})
		]]>
	</insert>
	
	<!-- 返回插入的编号,在事务开启状态下有效 -->
	<select id="lastSequence" resultType="int"><![CDATA[SELECT LAST_INSERT_ID() AS id]]></select>

	<!-- 删除记录,主键IN(array) -->
	<delete id="deleteByArrayKey" parameterType="java.lang.reflect.Array" >
		<![CDATA[DELETE FROM order_item WHERE id IN]]>
		<foreach collection="array" item="id" open="(" separator="," close=")">
			<![CDATA[#{id}]]>
		</foreach>
	</delete>

	<!-- 删除,通过条件 -->
	<update id="deleteByCondtion" parameterType="orderItem" >
		<![CDATA[DELETE FROM order_item]]>
		<include refid="QUERY_WHERE_CLAUSE"/>
	</update>

	<!-- 修改记录通过主键 -->
	<update id="updateByKey" parameterType="orderItem" >
		<![CDATA[UPDATE order_item]]>
		<include refid="UPDATE_COLUMN_SET"/>
		<![CDATA[WHERE id = #{id}]]>
		<if test="versionNum!= null "><![CDATA[AND version_NUM = #{versionNum}]]></if>
	</update>
	<!-- 通过订单ID更新订单项为已评论 -->
	<update id="updatSkuCommentedByOrderId" parameterType="long" >
		<![CDATA[UPDATE order_item SET is_commented=1 WHERE order_id = #{orderId} AND is_commented<>1 ]]>
	</update>
	<!-- 查询,通过主键IN(array) -->
	<select id="selectEntryArray" parameterType="java.lang.reflect.Array" resultType="orderItem">
		<![CDATA[SELECT]]>
		<include refid="QUERY_COLUMN_LIST"/>
		<include refid="QUERY_FROM_TABLE"/>
		<![CDATA[WHERE id IN]]>
		<foreach collection="array" item="id" open="(" separator="," close=")">
			<![CDATA[#{id}]]>
		</foreach>
	</select>

	<!-- 查询,通过条件 -->
	<select id="selectEntryList" parameterType="orderItem" resultType="orderItem">
		<![CDATA[SELECT]]>
		<include refid="QUERY_COLUMN_LIST"/>
		<include refid="QUERY_FROM_TABLE"/>
		<include refid="QUERY_WHERE_CLAUSE"/>
		<include refid="QUERY_ORDER_LIMIT_CONDTION"/>
	</select>
	<!-- 总数查询,通过条件 -->
	<select id="selectEntryListCount" parameterType="orderItem" resultType="int">
		<![CDATA[SELECT COUNT(id) AS dataCount]]>
		<include refid="QUERY_FROM_TABLE"/>
		<include refid="QUERY_WHERE_CLAUSE"/>
	</select>
	
	<!-- 其它SQL语句 -->
	<select id="getSupplierItemSum" parameterType="map" resultType="Long">
		select sum(s.assign_num) from supply_order s where ( s.assign_status=10 or s.assign_status=20) and s.order_item_id=#{orderItemId} and s.order_Id=#{orderId}
	</select>
	
	<!-- 查询用户购买单个商品的数量 -->
	<select id="getProductBuyNum" parameterType="orderItem" resultType="Integer">
		SELECT COUNT(1) FROM order_item item 
		JOIN orders o ON o.id=item.order_id 
		WHERE o.buyer_id=#{buyerId} 
		AND item.product_id=#{productId} 
		AND o.order_status NOT IN(60,70)
	</select>
</mapper>