Files
xkrs_ms/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml

261 lines
12 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.stdiet.custom.mapper.SysCommisionMapper">
<resultMap type="SysCommision" id="SysCommisionResult">
<result property="ruleId" column="rule_id"/>
<result property="userId" column="user_id"/>
<result property="postId" column="post_id"/>
<result property="userName" column="user_name"/>
<result property="postName" column="post_name"/>
<result property="amount" column="amount"/>
<result property="rate" column="rate"/>
<result property="startTime" column="start_time" />
<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="remark" column="remark"/>
<result property="commision" column="commision"/>
</resultMap>
<resultMap id="SysCommisionDetailResult" type="SysCommision">
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="postId" column="post_id"/>
<result property="postName" column="post_name"/>
<result property="amount" column="amount"/>
</resultMap>
<sql id="groupAmountVo">
SELECT ${column} AS user_id, ${postId} AS post_id, SUM(amount) AS amount
FROM sys_order
WHERE ${column} IS NOT NULL AND ${column} &lt;&gt; 0 AND del_flag = 0
<if test="reviewStatus != null and reviewStatus != ''">
AND review_status = ${reviewStatus}
</if>
<if test="beginTime != null and beginTime != ''">AND date_format(order_time,'%y%m%d') &gt;=
date_format(${beginTime},'%y%m%d')
</if>
<if test="endTime != null and endTime != ''">AND date_format(order_time,'%y%m%d') &lt;=
date_format(${endTime},'%y%m%d')
</if>
<!-- 因为体验单、售中单都存在售中存在两种情况需要计算提成1、售中单 2、售中自己开的体验单通过售前是否为NULL或0判断售前不为空则表示售前开的体验单不计算售中提成 -->
<if test="postCode != null and postCode == 'on_sale_id'">
AND (order_type = 3 OR (order_type = 2 AND (pre_sale_id IS NULL || pre_sale_id = 0)))
</if>
GROUP BY ${column}
</sql>
<select id="selectSysCommisionDetail" parameterType="SysCommision" resultMap="SysCommisionResult">
SELECT * FROM view_user_post pa
JOIN (
<if test="postId == null or postId == 0">
<include refid="groupAmountVo">
<property name="column" value="pre_sale_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="5"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="push_pre_sale_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="18"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="on_sale_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="16"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="after_sale_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="6"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="nutritionist_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="9"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="nutri_assis_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="10"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="operator_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="11"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="operator_assis_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="13"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="planner_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="7"/>
</include>
UNION
<include refid="groupAmountVo">
<property name="column" value="planner_assis_id"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="8"/>
</include>
</if>
<if test="postId != null and postId > 0">
<include refid="groupAmountVo">
<property name="column" value="${postCode}"/>
<property name="reviewStatus" value="#{reviewStatus}"/>
<property name="beginTime" value="#{beginTime}"/>
<property name="endTime" value="#{endTime}"/>
<property name="postId" value="${postId}"/>
</include>
</if>
) AS a USING(user_id, post_id)
<where>
<!--<if test="postId != null and postId != ''">and post_id = #{postId}</if>-->
<if test="userId != null and userId != ''">and user_id = #{userId}</if>
<if test="userIds != null">
and user_id in
<foreach item="id" collection="userIds" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
order by user_id asc
</select>
<sql id="selectSysCommisionVo">
SELECT * FROM (
SELECT * FROM sys_commision c
JOIN (SELECT user_id, nick_name AS user_name FROM sys_user) AS u USING(user_id)
JOIN (SELECT post_id, post_name FROM sys_post) AS p USING(post_id)
<if test="postId != null">WHERE post_id = ${postId}</if>
ORDER BY user_id, amount
) as t
</sql>
<select id="selectSysCommisionList" parameterType="SysCommision" resultMap="SysCommisionResult">
<include refid="selectSysCommisionVo">
<property name="postId" value="#{postId}"/>
</include>
<where>
<if test="userId != null ">and user_id = #{userId}</if>
<if test="postId != null ">and post_id = #{postId}</if>
</where>
<!-- 请勿随意修改排序方式,会影响提成计算 -->
order by user_id asc,amount asc,start_time asc
</select>
<select id="selectSysCommisionById" parameterType="SysCommision" resultMap="SysCommisionResult">
<include refid="selectSysCommisionVo">
<property name="postId" value="#{postId}"/>
</include>
where rule_id = #{ruleId}
</select>
<insert id="insertSysCommision" parameterType="SysCommision" useGeneratedKeys="true" keyProperty="ruleId">
insert into sys_commision
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="postId != null">post_id,</if>
<if test="amount != null">amount,</if>
<if test="rate != null">rate,</if>
<if test="startTime != null">start_time,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">#{userId},</if>
<if test="postId != null">#{postId},</if>
<if test="amount != null">#{amount},</if>
<if test="rate != null">#{rate},</if>
<if test="startTime != null">#{startTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateSysCommision" parameterType="SysCommision">
update sys_commision
<trim prefix="SET" suffixOverrides=",">
<if test="userId != null">user_id = #{userId},</if>
<if test="postId != null">post_id = #{postId},</if>
<if test="amount != null">amount = #{amount},</if>
<if test="rate != null">rate = #{rate},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where rule_id = #{ruleId}
</update>
<delete id="deleteSysCommisionById" parameterType="Long">
delete from sys_commision where rule_id = #{ruleId}
</delete>
<delete id="deleteSysCommisionByIds" parameterType="String">
delete from sys_commision where rule_id in
<foreach item="ruleId" collection="array" open="(" separator="," close=")">
#{ruleId}
</foreach>
</delete>
<!-- 查询售后和营养师 -->
<select id="getAfterSaleAndNutri" parameterType="SysCommision" resultMap="SysCommisionResult">
SELECT su.user_id,su.nick_name as user_name,sp.post_id, sp.post_code,sp.post_name FROM sys_user su
LEFT JOIN sys_user_post sup ON sup.user_id = su.user_id
LEFT JOIN sys_post sp ON sp.post_id = sup.post_id
WHERE su.del_flag = 0 AND su.status = 0 AND sp.remark = 'sale_post' AND (sp.post_code = 'after_sale' OR sp.post_code = 'nutri')
<if test="postId != null and postId != ''">and sp.post_id = #{postId}</if>
<if test="userId != null and userId != ''">and su.user_id = #{userId}</if>
</select>
<select id="getAfterSaleId" parameterType="SysCommision" resultType="Long">
SELECT su.user_id FROM sys_user su
LEFT JOIN sys_user_post sup ON sup.user_id = su.user_id
LEFT JOIN sys_post sp ON sp.post_id = sup.post_id
WHERE su.del_flag = 0 and sp.post_id = #{postId}
</select>
</mapper>