| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- <?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.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampDao">
- <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
- <id column="id_" jdbcType="INTEGER" property="id"/>
- <result column="name_" jdbcType="VARCHAR" property="name"/>
- <result column="num_" jdbcType="INTEGER" property="num"/>
- <result column="apply_start_date_" jdbcType="TIMESTAMP" property="applyStartDate"/>
- <result column="apply_end_date_" jdbcType="TIMESTAMP" property="applyEndDate"/>
- <result column="train_start_date_" jdbcType="TIMESTAMP" property="trainStartDate"/>
- <result column="train_end_date_" jdbcType="TIMESTAMP" property="trainEndDate"/>
- <result column="state_" jdbcType="VARCHAR" property="state"/>
- <result column="im_group_ids_" jdbcType="VARCHAR" property="imGroupIds"/>
- <result column="pic_url_" jdbcType="VARCHAR" property="picUrl"/>
- <result column="del_flag_" jdbcType="INTEGER" property="delFlag"/>
- <result column="create_by_" jdbcType="INTEGER" property="createBy"/>
- <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
- <result column="update_by_" jdbcType="INTEGER" property="updateBy"/>
- <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
- <result column="organ_ids_" property="organIds"/>
- <result column="music_group_ids_" property="musicGroupIds"/>
- <result column="sign_standard_" property="signStandard"/>
- <result column="standard_days_" property="standardDays"/>
- <result column="enable_flag_" property="enableFlag"/>
- </resultMap>
- <sql id="Base_Column_List">
- id_
- , name_, num_, apply_start_date_, apply_end_date_, train_start_date_, train_end_date_,
- state_,pic_url_, im_group_ids_, create_by_, create_time_, update_by_, update_time_
- ,organ_ids_,music_group_ids_,sign_standard_,standard_days_,enable_flag_
- </sql>
- <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
- parameterType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
- insert into temp_little_artist_training_camp(name_, num_, apply_start_date_, apply_end_date_, train_start_date_,
- train_end_date_, state_, im_group_ids_,pic_url_, del_flag_,create_by_, create_time_, update_by_, update_time_
- ,organ_ids_,music_group_ids_,sign_standard_,standard_days_,enable_flag_)
- values
- <foreach collection="entities" item="entity" separator=",">
- (#{entity.name}, #{entity.num}, #{entity.applyStartDate}, #{entity.applyEndDate}, #{entity.trainStartDate},
- #{entity.trainEndDate}, #{entity.state}, #{entity.imGroupIds}, #{entity.delFlag},#{entity.picUrl},#{entity.createBy}, #{entity.createTime},
- #{entity.updateBy}, #{entity.updateTime},#{entity.organIds}, #{entity.musicGroupIds},#{entity.signStandard}, #{entity.standardDays},#{entity.enableFlag})
- </foreach>
- </insert>
- <select id="queryUserTrainingTime" resultType="com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo" parameterType="java.util.Map">
- SELECT
- a.user_id_ AS userId,
- a.create_time_ AS trainingDate,
- sum(a.play_time_) AS playTime
- FROM
- ( SELECT
- user_id_,
- ifnull(play_time_, 0) AS play_time_,
- date_format(create_time_, '%Y-%m-%d') AS create_time_
- FROM sys_music_compare_record
- <where>
- <if test="param.startTime != null">
- AND create_time_ >= #{param.startTime}
- </if>
- <if test="param.endTime != null">
- AND create_time_ <= #{param.endTime}
- </if>
- <if test="param.userId != null">
- AND user_id_ = #{param.userId}
- </if>
- <if test="param.userIdList !=null and param.userIdList.size()>0">
- AND user_id_ IN
- <foreach collection="param.userIdList" item="userId" open="(" close=")" separator=",">
- #{userId}
- </foreach>
- </if>
- </where>
- ) AS a
- GROUP BY a.user_id_, a.create_time_
- </select>
- <select id="queryUserTrainingTimeV2" resultType="com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo" parameterType="java.util.Map">
- SELECT
- user_id_ as userId,
- ifnull(train_time_, 0) AS playTime,
- date_format(day_, '%Y-%m-%d') AS trainingDate
- FROM user_music_compare_camp_day_data
- <where>
- <if test="param.startTime != null">
- AND day_ >= #{param.startTime}
- </if>
- <if test="param.campId != null">
- AND camp_id_ = #{param.campId}
- </if>
- <if test="param.endTime != null">
- AND day_ <= #{param.endTime}
- </if>
- <if test="param.userId != null">
- AND user_id_ = #{param.userId}
- </if>
- <if test="param.userIdList !=null and param.userIdList.size()>0">
- AND user_id_ IN
- <foreach collection="param.userIdList" item="userId" open="(" close=")" separator=",">
- #{userId}
- </foreach>
- </if>
- </where>
- </select>
- <select id="queryAllUserId" resultType="java.lang.Integer">
- SELECT
- distinct user_id_
- FROM
- temp_little_artist_training_camp_user_relation
- </select>
- <select id="queryCampUser" resultType="com.ym.mec.biz.dal.vo.TempCampUserVo">
- select
- b.id_ as id,
- b.username_ as username,
- b.phone_ as phone,
- a.state_ as state,
- c.name_ as campName
- from temp_little_artist_training_camp_user_relation as a
- left join sys_user as b on a.user_id_ = b.id_
- left join temp_little_artist_training_camp as c on a.activity_id_ = c.id_
- <where>
- <if test="param.state != null ">
- AND a.state_ = #{param.state}
- </if>
- <if test="param.search != null ">
- AND (
- b.`id_` LIKE CONCAT('%', #{param.search},'%')
- OR b.`username_` LIKE CONCAT('%', #{param.search},'%')
- OR b.`phone_` LIKE CONCAT('%', #{param.search},'%')
- )
- </if>
- </where>
- </select>
- <select id="queryUserTrainingDetail" parameterType="java.util.Map" resultType="com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo">
- SELECT a.user_id_ as id,
- d.username_ as username,
- d.phone_ as phone,
- e.name_ as imGroupName,
- ifnull(b.playDay, 0) as playDay,
- ifnull(c.playTime, 0) as playTime
- FROM `temp_little_artist_training_camp_user_relation` `a`
- LEFT JOIN (
- SELECT `a`.`user_id_`, COUNT(`playDay`) AS `playDay`
- FROM (
- SELECT `cr`.`user_id_`, DATE(`cr`.`create_time_`) AS `playDay`
- FROM `sys_music_compare_record` `cr`
- WHERE `cr`.`create_time_` >= DATE_ADD(DATE(#{param.startTime}), INTERVAL IF(#{param.startTime} = DATE(#{param.startTime}), 0, 1) DAY)
- AND `cr`.`create_time_` < DATE_ADD(DATE(#{param.endTime}), INTERVAL 1 DAY)
- GROUP BY `cr`.`user_id_`, DATE(`cr`.`create_time_`)
- HAVING SUM(`cr`.`play_time_`) > #{param.signStandard}
- ) `a`
- GROUP BY `a`.`user_id_`
- ) `b`
- ON `a`.`user_id_` = `b`.`user_id_`
- LEFT JOIN (
- SELECT `cr`.`user_id_`, SUM(`cr`.`play_time_`) AS `playTime`
- FROM `sys_music_compare_record` `cr`
- WHERE `cr`.`create_time_` >= DATE_ADD(DATE(#{param.startTime}), INTERVAL IF(#{param.startTime} = DATE(#{param.startTime}), 0, 1) DAY)
- AND `cr`.`create_time_` < DATE_ADD(DATE(#{param.endTime}), INTERVAL 1 DAY)
- GROUP BY `cr`.`user_id_`
- ) `c`
- ON `a`.`user_id_` = `c`.`user_id_`
- LEFT JOIN `sys_user` `d` ON `d`.`id_` = `a`.`user_id_`
- LEFT JOIN `im_group` `e` ON `a`.`im_group_id_` = `e`.`id_`
- <where>
- a.activity_id_ = #{param.campId} and a.state_ = #{param.state}
- <if test="param.imGroupId != null">
- AND e.id_ = #{param.imGroupId}
- </if>
- <if test="param.standardFlag != null and param.standardFlag == true">
- AND ifnull( b.playDay, 0 ) >= #{param.standardDays}
- </if>
- <if test="param.standardFlag != null and param.standardFlag == false">
- AND ifnull( b.playDay, 0 ) < #{param.standardDays}
- </if>
- <if test="param.search != null ">
- AND (
- d.`id_` LIKE CONCAT('%', #{param.search},'%')
- OR d.`username_` LIKE CONCAT('%', #{param.search},'%')
- OR d.`phone_` LIKE CONCAT('%', #{param.search},'%')
- )
- </if>
- </where>
- </select>
- <select id="queryUserTrainingDetailV2" parameterType="java.util.Map" resultType="com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo">
- select * from (SELECT
- a.user_id_ AS id,
- d.username_ AS username,
- d.phone_ AS phone,
- e.name_ AS imGroupName,
- sum( if(ifnull(c.train_time_,0) >= b.sign_standard_ * 60,1,0)) AS playDay,
- sum(ifnull(c.train_time_,0)) AS playTime
- FROM
- `temp_little_artist_training_camp_user_relation` `a`
- left join temp_little_artist_training_camp b on b.id_ = a.activity_id_
- left join user_music_compare_camp_day_data c on c.camp_id_ = a.activity_id_ and a.user_id_ = c.user_id_
- LEFT JOIN `sys_user` `d` ON `d`.`id_` = `a`.`user_id_`
- LEFT JOIN `im_group` `e` ON `a`.`im_group_id_` = `e`.`id_`
- <where>
- a.activity_id_ = #{param.campId} and a.state_ = #{param.state}
- <if test="param.imGroupId != null">
- AND e.id_ = #{param.imGroupId}
- </if>
- <if test="param.search != null">
- AND (
- d.`id_` LIKE CONCAT('%', #{param.search},'%')
- OR d.`username_` LIKE CONCAT('%', #{param.search},'%')
- OR d.`phone_` LIKE CONCAT('%', #{param.search},'%')
- )
- </if>
- </where>
- group by a.user_id_
- ) t
- <where>
- <if test="param.standardFlag != null and param.standardFlag == true">
- AND ifnull( t.playDay, 0 ) >= #{param.standardDays}
- </if>
- <if test="param.standardFlag != null and param.standardFlag == false">
- AND ifnull( t.playDay, 0 ) < #{param.standardDays}
- </if>
- </where>
- </select>
- <select id="queryCampImGroup" resultType="com.ym.mec.biz.dal.entity.ImGroup">
- select id_ as id,
- name_ as name
- from im_group
- where find_in_set(id_, #{imGroupIds})
- </select>
- <select id="queryUserTrainingPlayTime" resultType="int" parameterType="java.util.Map">
- SELECT ifnull(sum(`play_time_`), 0) as playTime
- FROM `sys_music_compare_record`
- WHERE user_id_ = #{param.userId}
- and create_time_ >= #{param.startTime}
- AND create_time_ <= #{param.endTime}
- </select>
- <select id="queryUserGroup" resultType="int" parameterType="int">
- <!--有乐团的用户-->
- <!--select a.user_id_ as userId, a.sortDate, b.subject_id_list_-->
- select a.user_id_ as userId
- from (select a.user_id_, c.bill_start_date_ as sortDate
- from (select a.activity_id_, a.user_id_, b.music_group_id_, a.state_
- from temp_little_artist_training_camp_user_relation as a
- left join student_registration as b on a.user_id_ = b.user_id_
- where a.state_ = 'APPLY'
- and a.activity_id_ = #{campId}
- and a.im_group_id_ is null
- group by b.user_id_
- having min(b.id_)) as a
- left join music_group as c on a.music_group_id_ = c.id_
- union all
- <!--没有乐团的用户-取第一次上课时间-->
- select a.user_id_, min(d.class_date_) as sortDate
- from temp_little_artist_training_camp_user_relation as a
- left join student_registration as b on a.user_id_ = b.user_id_
- left join course_schedule_student_payment as c on a.user_id_ = c.user_id_
- left join course_schedule as d on c.course_schedule_id_ = d.id_
- where b.id_ is null
- and a.state_ = 'APPLY'
- and a.activity_id_ = #{campId}
- and a.im_group_id_ is null
- group by a.user_id_
- having min(d.class_date_)
- union all
- <!-- 没有乐团-没有上课的用户 -->
- select a.user_id_, null as sortDate
- from temp_little_artist_training_camp_user_relation as a
- left join student_registration as b on a.user_id_ = b.user_id_
- left join course_schedule_student_payment as c on a.user_id_ = c.user_id_
- left join course_schedule as d on c.course_schedule_id_ = d.id_
- where b.id_ is null
- and c.id_ is null
- and a.state_ = 'APPLY'
- and a.activity_id_ = #{campId}
- and a.im_group_id_ is null
- group by a.user_id_) as a
- left join student as b on a.user_id_ = b.user_id_
- order by a.sortDate desc, b.subject_id_list_
- </select>
- <select id="queryStartTrainInfo" parameterType="string" resultType="com.ym.mec.biz.dal.vo.BaseVo">
- select
- b.user_id_ as id,
- c.name_ as `name`
- from temp_little_artist_training_camp as a
- left join temp_little_artist_training_camp_user_relation as b on a.id_ = b.activity_id_
- left join im_group as c on b.im_group_id_ = c.id_
- where a.train_start_date_ = #{date}
- and a.state_ = 'ING'
- and b.im_group_id_ is not null
- </select>
- <select id="findTrainingByStudent" resultType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
- select tlatc.*,tlatcur.state_ status from temp_little_artist_training_camp tlatc
- left join temp_little_artist_training_camp_user_relation tlatcur ON tlatc.id_ = tlatcur.activity_id_ and tlatcur.user_id_ = #{userId}
- where
- <if test="musicGroupIds != null and musicGroupIds != ''">
- (INTE_ARRAY(tlatc.music_group_ids_,#{musicGroupIds}) OR tlatc.music_group_ids_ IS NULL) AND
- </if>
- <if test="musicGroupIds == null or musicGroupIds == ''">
- tlatc.music_group_ids_ IS NULL AND
- </if>
- (FIND_IN_SET(#{organId},tlatc.organ_ids_) OR tlatc.organ_ids_ IS NULL)
- and tlatc.del_flag_ = 0 and tlatc.enable_flag_ = 1 order by id_ DESC
- </select>
- <update id="updateUserNum" parameterType="object">
- update temp_little_artist_training_camp
- set num_ = num_ + 1
- where id_ = #{campId}
- and num_ < #{maxNum}
- </update>
- </mapper>
|