日照智慧社区接口服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

365 lines
19 KiB

<?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.epmet.dao.ActInfoDao">
<resultMap type="com.epmet.entity.ActInfoEntity" id="actInfoMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="title" column="TITLE"/>
<result property="coverPic" column="COVER_PIC"/>
<result property="signUpStartTime" column="SIGNUP_START_TIME"/>
<result property="signUpEndTime" column="SIGNUP_END_TIME"/>
<result property="requirement" column="REQUIREMENT"/>
<result property="actStartTime" column="ACT_START_TIME"/>
<result property="actEndTime" column="ACT_END_TIME"/>
<result property="actAddress" column="ACT_ADDRESS"/>
<result property="actLongitude" column="ACT_LONGITUDE"/>
<result property="actLatitude" column="ACT_LATITUDE"/>
<result property="signInStartTime" column="SIGNIN_START_TIME"/>
<result property="signInEndTime" column="SIGNIN_END_TIME"/>
<result property="signInAddress" column="SIGNIN_ADDRESS"/>
<result property="signInLongitude" column="SIGNIN_LONGITUDE"/>
<result property="signInLatitude" column="SIGNIN_LATITUDE"/>
<result property="signInRadius" column="SIGNIN_RADIUS"/>
<result property="actQuotaCategory" column="ACT_QUOTA_CATEGORY"/>
<result property="actQuota" column="ACT_QUOTA"/>
<result property="actStatus" column="ACT_STATUS"/>
<result property="cancelReason" column="CANCEL_REASON"/>
<result property="cancelTime" column="CANCEL_TIME"/>
<result property="sponsorContacts" column="SPONSOR_CONTACTS"/>
<result property="sponsorTel" column="SPONSOR_TEL"/>
<result property="sponsorType" column="SPONSOR_TYPE"/>
<result property="sponsorId" column="SPONSOR_ID"/>
<result property="sponsorName" column="SPONSOR_NAME"/>
<result property="pid" column="PID"/>
<result property="reward" column="REWARD"/>
<result property="volunteerLimit" column="VOLUNTEER_LIMIT"/>
<result property="auditSwitch" column="AUDIT_SWITCH"/>
<result property="actualStartTime" column="ACTUAL_START_TIME"/>
<result property="actualEndTime" column="ACTUAL_END_TIME"/>
<result property="serviceMin" column="SERVICE_MIN"/>
<result property="summaryFlag" column="SUMMARY_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
<result property="delFlag" column="DEL_FLAG"/>
</resultMap>
<!--活动列表 报名中(未报满) -->
<select id="selectListActSigningUp" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'signing_up' AS actCurrentState, -- 活动状态:报名中,未报满
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.ACT_STATUS = 'published'
AND (i.ACT_QUOTA_CATEGORY = 0 OR i.ACT_QUOTA > IFNULL(c.signupNum, 0)) -- 不限名额或者报名人数未报满
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.ACT_QUOTA_CATEGORY DESC,i.CREATED_TIME DESC
</select>
<!--活动列表 - 报名中,已报满-->
<select id="selectListActQuotaIsEnough" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'enough' AS actCurrentState, -- 活动状态:报名中,已报满
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.ACT_STATUS = 'published'
AND i.ACT_QUOTA_CATEGORY = 1 -- 固定名额
AND i.ACT_QUOTA = IFNULL(c.signupNum, 0) -- 名额已满
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
</select>
<!--活动列表 - (报名已结束 - 活动未开始),截止报名-->
<select id="selectListActEndSignUp" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'end_sign_up' AS actCurrentState, -- 活动状态:未开始
IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
-- 活动开始时间 > 当前时间 并且 报名截止时间 &lt; 当前时间 报名已结束,活动未开始 未开始
AND ( <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') > ]]> NOW() AND <![CDATA[ DATE_FORMAT(i.SIGN_UP_END_TIME,'%Y-%m-%d %H:%i:%s') < ]]> NOW() )
AND i.ACT_STATUS != 'canceled'
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
</select>
<!--活动列表 - (活动开始时间 <= 当前时间 并且 活动结束时间 >= 当前时间),进行中-->
<select id="selectListActInProgress" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'in_progress' AS actCurrentState, -- 活动状态:进行中
IF(u.USER_ID = #{userId},'1','0') as signupFlag -- 用户报名状态(0-未报名,1已报名)
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
-- 活动开始时间 &lt;= 当前时间 并且活动结束时间 >= 当前时间 进行中
AND ( <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') <= ]]> NOW() AND <![CDATA[ DATE_FORMAT(i.SIGN_UP_END_TIME,'%Y-%m-%d %H:%i:%s') >= ]]> NOW() )
AND i.ACT_STATUS != 'canceled'
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
</select>
<!--活动列表 - (活动结束时间 < 当前时间),已结束-->
<select id="selectListActFinished" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiActInfoResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'finished' AS actCurrentState, -- 活动状态:已结束
IF(u.USER_ID = #{userId},'1','0') as signupFlag -- 用户报名状态(0-未报名,1已报名)
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.ACT_STATUS = 'finished'
AND i.CUSTOMER_ID = #{customerId}
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-审核中-->
<select id="selectListMyActAuditing" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'auditing' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND u.`STATUS` = 'auditing'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-已通过-->
<select id="selectListMyActIHavePassed" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'passed' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND u.`STATUS` = 'passed'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-审核不通过-->
<select id="selectListActRefused" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'refused' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND u.`STATUS` = 'refused'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--我的活动-已结束-->
<select id="selectListMyActCanceld" parameterType="com.epmet.dto.form.resi.ResiMyActFormDTO"
resultType="com.epmet.dto.result.resi.ResiMyActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0))
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
'canceld' AS actCurrentState -- 活动状态
FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND u.DEL_FLAG = '0'
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND u.USER_ID = #{userId}
AND <![CDATA[ DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i:%s') < ]]> NOW() -- 活动结束时间 &lt; 当前时间, 活动已结束
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!--最新活动列表-->
<select id="selectListLatestAct" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiLatestActResultDTO">
SELECT
i.ID actId,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
IF(i.ACT_QUOTA_CATEGORY = 1, true , false ) as actQuotaCategory,
i.ACT_QUOTA actQuota,
IFNULL(c.signupNum, 0) signupNum, -- 已报名人数
case
when i.ACT_STATUS = 'published'
then
case
when <![CDATA[c.signupNum >= ACT_QUOTA ]]> and i.ACT_QUOTA_CATEGORY = 1
then 'enough'
else 'signing_up' end
when <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') > ]]> NOW()
and <![CDATA[ DATE_FORMAT(i.SIGN_UP_END_TIME,'%Y-%m-%d %H:%i:%s') < ]]> NOW()
then 'end_sign_up'
when <![CDATA[ DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i:%s') <= ]]> NOW()
and <![CDATA[ DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i:%s') >= ]]> NOW()
then 'in_progress'
end as actCurrentState
FROM act_info i
LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID
WHERE i.DEL_FLAG = '0'
AND i.CUSTOMER_ID = #{customerId}
AND i.ACT_STATUS != 'finished' AND i.ACT_STATUS != 'canceled'
ORDER BY i.CREATED_TIME DESC
LIMIT 0, #{num}
</select>
<!--即将进行/正在进行中的活动-->
<select id="selectListInProgress" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiInProgressActResultDTO">
SELECT
i.ID actId,
CASE
WHEN <![CDATA[DATE_SUB(i.ACT_START_TIME, INTERVAL 1 HOUR) <= ]]> NOW() AND <![CDATA[i.ACT_START_TIME > ]]> NOW() THEN
CONCAT('您报名的 "',i.TITLE,'" 活动还有',TIMESTAMPDIFF(MINUTE, NOW(), i.ACT_START_TIME),'分钟开始。')
ELSE
CONCAT('正在进行中的活动:"',i.TITLE,'"。。。')
END title
FROM act_info i LEFT JOIN act_user_relation r ON i.ID = r.ACT_ID
WHERE i.DEL_FLAG = '0'
AND r.DEL_FLAG = '0'
AND r.USER_ID = #{userId}
AND NOW() BETWEEN DATE_SUB(i.ACT_START_TIME, INTERVAL 1 HOUR) AND i.ACT_END_TIME
</select>
<!--活动回顾列表-->
<select id="selectListLookBackAct" parameterType="com.epmet.dto.form.resi.ResiActBaseFormDTO"
resultType="com.epmet.dto.result.resi.ResiLookBackActResultDTO">
SELECT
i.ID id,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_ADDRESS actAddress,
'finished' actCurrentState
FROM act_info i
WHERE i.DEL_FLAG = '0'
AND i.SUMMARY_FLAG = 1 OR (SELECT r.ACT_ID FROM act_live_rec r WHERE r.DEL_FLAG = '0' AND r.ACT_ID = i.ID GROUP BY r.ACT_ID)
AND i.CUSTOMER_ID = #{customerId}
AND i.ACT_STATUS = 'finished'
ORDER BY i.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<select id="queryActAccordingToActIdAndUserId" resultType="com.epmet.dto.ActInfoDTO">
SELECT
i.ID id,
i.TITLE title,
i.COVER_PIC coverPic,
DATE_FORMAT(i.ACT_START_TIME,'%Y-%m-%d %H:%i') actStartTime,
DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime,
i.ACT_QUOTA actQuota,
i.ACT_STATUS actStatus,
i.VOLUNTEER_LIMIT volunteerLimit,
i.AUDIT_SWITCH auditSwitch,
i.ACT_ADDRESS actAddress
FROM act_info i
LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID
WHERE i.DEL_FLAG = '0'
AND u.DEL_FLAG = '0'
AND i.ID = #{actId}
AND u.USER_ID = #{userId}
</select>
</mapper>