xkrs_ms/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml
2021-02-27 19:22:25 +08:00

256 lines
14 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. 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.SysRecipesPlanMapper">
<resultMap type="SysRecipesPlan" id="SysRecipesPlanResult">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="startDate" column="start_date"/>
<result property="endDate" column="end_date"/>
<result property="startNumDay" column="start_num_day"/>
<result property="endNumDay" column="end_num_day"/>
<result property="recipesId" column="recipes_id"/>
<result property="sendFlag" column="send_flag"/>
<result property="sendTime" column="send_time"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
<result property="cusId" column="cus_id"/>
<result property="outId" column="out_id"/>
<!-- 非持久化字段 -->
<!-- <result property="customerId" column="cus_id"></result>&lt;!&ndash; 客户ID &ndash;&gt;-->
<result property="customer" column="customer"/><!-- 客户姓名 -->
<result property="phone" column="phone"/>
<result property="reviewStatus" column="review_status"/>
<result property="orderStartDate" column="order_start_date"/>
<result property="orderEndDate" column="order_end_date"/>
<result property="nutritionistId" column="nutritionist_id"/>
<result property="nutritionist" column="nutritionist"/>
<result property="nutritionistAssisId" column="nutritionist_assis_id"/>
<result property="nutritionistAssis" column="nutritionist_assis"/>
</resultMap>
<sql id="selectSysRecipesPlanVo">
select id, order_id, cus_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, create_time, create_by, update_time, update_by, del_flag, review_status from sys_recipes_plan
</sql>
<select id="selectSysRecipesPlanList" parameterType="SysRecipesPlan" resultMap="SysRecipesPlanResult">
<include refid="selectSysRecipesPlanVo"/>
where del_flag = 0
<if test="orderId != null ">and order_id = #{orderId}</if>
<if test="cusId != null ">and cus_id = #{cusId}</if>
<if test="startDate != null ">and start_date = #{startDate}</if>
<if test="endDate != null ">and end_date = #{endDate}</if>
<if test="startNumDay != null ">and start_num_day = #{startNumDay}</if>
<if test="endNumDay != null ">and end_num_day = #{endNumDay}</if>
<if test="recipesId != null ">and recipes_id = #{recipesId}</if>
<if test="sendFlag != null ">and send_flag = #{sendFlag}</if>
<if test="sendTime != null ">and send_time = #{sendTime}</if>
<if test="reviewStatus != null ">and review_status = #{reviewStatus}</if>
<!-- 请勿轻易修改排序方式,会影响食谱生成等逻辑 -->
order by id ASC
</select>
<select id="selectSysRecipesPlanById" parameterType="Long" resultMap="SysRecipesPlanResult">
<include refid="selectSysRecipesPlanVo"/>
where id = #{id} and del_flag = 0
</select>
<!-- 根据用户ID查询是否存在该用户最后一天食谱 -->
<select id="getLastDayRecipesPlan" resultMap="SysRecipesPlanResult" parameterType="Long">
<include refid="selectSysRecipesPlanVo"/>
where cus_id = #{customerId} and del_flag = 0 order by end_num_day DESC limit 1
</select>
<insert id="insertSysRecipesPlan" parameterType="SysRecipesPlan" useGeneratedKeys="true" keyProperty="id">
insert into sys_recipes_plan
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="orderId != null">order_id,</if>
<if test="cusId != null">cus_id,</if>
<if test="outId != null">out_id,</if>
<if test="startDate != null">start_date,</if>
<if test="endDate != null">end_date,</if>
<if test="startNumDay != null">start_num_day,</if>
<if test="endNumDay != null">end_num_day,</if>
<if test="recipesId != null">recipes_id,</if>
<if test="sendFlag != null">send_flag,</if>
<if test="sendTime != null">send_time,</if>
<if test="createTime != null">create_time,</if>
<if test="createBy != null">create_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="delFlag != null">del_flag,</if>
<if test="reviewStatus != null">review_status,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="orderId != null">#{orderId},</if>
<if test="cusId != null">#{cusId},</if>
<if test="outId != null">#{outId},</if>
<if test="startDate != null">#{startDate},</if>
<if test="endDate != null">#{endDate},</if>
<if test="startNumDay != null">#{startNumDay},</if>
<if test="endNumDay != null">#{endNumDay},</if>
<if test="recipesId != null">#{recipesId},</if>
<if test="sendFlag != null">#{sendFlag},</if>
<if test="sendTime != null">#{sendTime},</if>
<if test="createTime != null">#{createTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="reviewStatus != null">#{reviewStatus},</if>
</trim>
</insert>
<update id="updateSysRecipesPlan" parameterType="SysRecipesPlan">
update sys_recipes_plan
<trim prefix="SET" suffixOverrides=",">
<if test="orderId != null">order_id = #{orderId},</if>
<if test="cusId != null">cus_id = #{cusId},</if>
<if test="outId != null">out_id = #{outId},</if>
<if test="startDate != null">start_date = #{startDate},</if>
<if test="endDate != null">end_date = #{endDate},</if>
<if test="startNumDay != null">start_num_day = #{startNumDay},</if>
<if test="endNumDay != null">end_num_day = #{endNumDay},</if>
<if test="recipesId != null">recipes_id = #{recipesId},</if>
<if test="sendFlag != null">send_flag = #{sendFlag},</if>
<if test="sendTime != null">send_time = #{sendTime},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="reviewStatus != null">review_status = #{reviewStatus},</if>
</trim>
where id = #{id} and del_flag = 0
</update>
<delete id="deleteSysRecipesPlanById" parameterType="Long">
delete from sys_recipes_plan where id = #{id}
</delete>
<delete id="deleteSysRecipesPlanByIds" parameterType="String">
delete from sys_recipes_plan where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<!-- 批量插入食谱计划 -->
<insert id="insertBatch">
INSERT INTO sys_recipes_plan
(order_id, cus_id, out_id, start_date, end_date, start_num_day, end_num_day, send_flag, send_time, recipes_id)
VALUES
<foreach collection="list" item="plan" separator=",">
(#{plan.orderId}, #{plan.cusId}, #{plan.outId}, #{plan.startDate}, #{plan.endDate}, #{plan.startNumDay}, #{plan.endNumDay},
#{plan.sendFlag}, #{plan.sendTime}, #{plan.recipesId})
</foreach>
</insert>
<!-- 根据订单ID删除对应食谱计划 -->
<update id="delRecipesPlanByOrderId" parameterType="String">
delete from sys_recipes_plan where order_id in
<foreach item="orderId" collection="array" open="(" separator="," close=")">
#{orderId}
</foreach>
</update>
<!-- 食谱计划、订单表联查 -->
<select id="selectPlanListByCondition" parameterType="SysRecipesPlan" resultMap="SysRecipesPlanResult">
SELECT srp.id,srp.order_id,srp.recipes_id,srp.start_num_day,srp.end_num_day,srp.cus_id,sc.phone,
su_nutritionist.nick_name nutritionist,su_nutritionist_assis.nick_name AS nutritionist_assis,
srp.start_date,srp.end_date,srp.send_flag,srp.send_time, sc.name as customer, srp.review_status
FROM sys_recipes_plan srp
LEFT JOIN sys_order sr ON sr.order_id = srp.order_id
LEFT JOIN sys_customer sc ON sc.id = srp.cus_id
LEFT JOIN sys_user su_nutritionist ON su_nutritionist.user_id = sr.nutritionist_id AND su_nutritionist.del_flag
= 0
LEFT JOIN sys_user su_nutritionist_assis ON su_nutritionist_assis.user_id = sr.nutri_assis_id AND
su_nutritionist_assis.del_flag = 0
WHERE srp.del_flag = 0 and sr.del_flag = 0
<if test="orderId != null">AND srp.order_id = #{orderId}</if>
<if test="sendFlag != null">AND srp.send_flag = #{sendFlag}</if>
<if test="customer != null and customer != ''">AND (sc.name like concat('%',#{customer},'%') OR sc.phone like
concat('%',#{customer},'%'))
</if>
<if test="nutritionistId != null">AND su_nutritionist.user_id = #{nutritionistId}</if>
<if test="nutritionistAssisId != null">AND su_nutritionist_assis.user_id = #{nutritionistAssisId}</if>
<if test="reviewStatus != null">AND srp.review_status = #{reviewStatus}</if>
<if test="startDate != null and endDate != null ">AND srp.start_date BETWEEN date_format(#{startDate},'%y%m%d')
AND date_format(#{endDate},'%y%m%d')
</if>
ORDER BY srp.order_id DESC,srp.id ASC
</select>
<!-- 食谱计划、订单表联查 -->
<!--<select id="selectPlanListByCondition" parameterType="SysRecipesPlan" resultMap="SysRecipesPlanResult">
SELECT sr.order_id,sr.customer,sr.phone,su_nutritionist.nick_name nutritionist,su_nutritionist_assis.nick_name AS nutritionist_assis,sr.start_time,sr.server_end_time
FROM sys_order sr
LEFT JOIN sys_user su_nutritionist ON su_nutritionist.user_id = sr.nutritionist_id AND su_nutritionist.del_flag = 0
LEFT JOIN sys_user su_nutritionist_assis ON su_nutritionist_assis.user_id = sr.nutri_assis_id AND su_nutritionist_assis.del_flag = 0
<where>
<if test="orderId != null">AND sr.order_id = #{orderId}</if>
<if test="customer != null and customer != ''">AND (sr.customer like concat('%',#{customer},'%') OR sr.phone like concat('%',#{customer},'%'))</if>
<if test="nutritionistId != null">AND su_nutritionist.user_id = #{nutritionistId}</if>
<if test="nutritionistAssisId != null">AND su_nutritionist_assis.user_id = #{nutritionistAssisId}</if>
<if test="startDate != null and endDate != null ">
AND sr.order_id IN ( SELECT order_id FROM sys_recipes_plan srp WHERE srp.del_flag = 0 AND srp.start_date BETWEEN date_format(#{startDate},'%y%m%d') AND date_format(#{endDate},'%y%m%d'))
</if>
</where>
ORDER BY sr.order_id DESC
</select>-->
<!-- 根据订单ID查询食谱计划 -->
<select id="selectPlanListByOrderId" parameterType="SysRecipesPlan" resultMap="SysRecipesPlanResult">
SELECT srp.id,srp.order_id,sr.customer,sr.phone, srp.start_date,srp.end_date,srp.send_flag,srp.send_time
FROM sys_recipes_plan srp
LEFT JOIN sys_order sr ON sr.order_id = srp.order_id
WHERE srp.del_flag = 0 AND sr.del_flag = 0 AND srp.order_id = #{orderId}
<if test="sendFlag != null">AND srp.send_flag = #{sendFlag}</if>
ORDER BY srp.id ASC
</select>
<!-- 根据cusId查询食谱计划-->
<select id="selectPlanListByCusId" parameterType="Long" resultMap="SysRecipesPlanResult">
select id, out_id, start_date, end_date, start_num_day, end_num_day, recipes_id, review_status from sys_recipes_plan where cus_id=#{cusId} order by create_time desc
</select>
<select id="getCusIdByOutId" parameterType="String" resultType="Long">
select cus_id from sys_recipes_plan where out_id=#{outId} limit 1
</select>
<resultMap id="SysRecipesPlanListInfoResult" type="SysRecipesPlanListInfo">
<result property="id" column="id"/>
<result property="startDate" column="start_date"/>
<result property="endDate" column="end_date"/>
<result property="startNumDay" column="start_num_day"/>
<result property="endNumDay" column="end_num_day"/>
<association property="menus" column="recipes_id" select="selectMenuIds"/>
</resultMap>
<!-- 通过outId查询食谱计划简要-->
<select id="selectRecipesPlanListInfo" resultMap="SysRecipesPlanListInfoResult">
select id, start_date, end_date, start_num_day, end_num_day, recipes_id from sys_recipes_plan where out_id=#{outId}
</select>
<resultMap type="SysRecipesDaily" id="SysRecipesResult">
<result property="id" column="id"/>
<result property="numDay" column="num_day"/>
</resultMap>
<select id="selectMenuIds" parameterType="Long" resultMap="SysRecipesResult">
select id, num_day from sys_customer_daily_menu where recipes_id=#{recipes_id} order by num_day asc
</select>
<!-- 批量修改食谱计划 -->
<update id="updateMuchRecipesPlanDate" parameterType="SysRecipesPlan"> 
<!--<foreach collection="list" item="item" separator=";" open="" close="">
</foreach>-->
update sys_recipes_plan set start_date = #{startDate},end_date = #{endDate} where id = #{id}
</update>
</mapper>