烟台政务云平台
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.
 
 
 
 
 

280 lines
11 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.modules.group.dao.ResiGroupDao">
<resultMap id="MyGroupResultDTOMap" type="com.epmet.resi.group.dto.group.result.MyGroupResultDTO">
<result property="groupId" column="id"/>
<result property="groupHeadPhoto" column="GROUP_HEAD_PHOTO"/>
<result property="groupName" column="GROUP_NAME"/>
<result property="totalMember" column="TOTAL_MEMBERS"/>
<result property="totalPartyMember" column="TOTAL_PARTY_MEMBERS"/>
<result property="groupState" column="STATE"/>
<result property="groupLeaderFlag" column="GROUP_LEADER_FLAG"/>
<association property="latestTopic" select="com.epmet.modules.group.dao.ResiGroupDao.selectLatestTopic" column="id">
</association>
</resultMap>
<!-- 我的小组查询(包含我创建的小组+我加入的小组),以各组的最新话题时间有近到远排序) -->
<select id="selectListMyGroup" parameterType="com.epmet.resi.group.dto.group.form.MyGroupFormDTO"
resultMap="MyGroupResultDTOMap">
SELECT
rg.id,
rg.GROUP_HEAD_PHOTO,
rg.GROUP_NAME ,
rgs.TOTAL_MEMBERS ,
rgs.TOTAL_PARTY_MEMBERS ,
rg.STATE ,
rgm.GROUP_LEADER_FLAG
FROM
resi_group_member rgm
LEFT JOIN resi_group rg ON ( rgm.RESI_GROUP_ID = rg.ID )
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )
WHERE
rg.DEL_FLAG = '0'
AND rgm.DEL_FLAG = '0'
AND rgs.DEL_FLAG = '0'
AND rg.CUSTOMER_ID = #{customerId}
AND rg.GRID_ID =#{gridId}
AND rgm.CUSTOMER_USER_ID = #{userId}
AND rgm.STATUS IN ( 'approved', 'silent' )
AND rg.STATE in('approved','hidden','closed')
order by rg.LATEST_TOPIC_PUBLISH_DATE desc
LIMIT #{pageNo}, #{pageSize}
</select>
<!-- 查询当前组最新话题 -->
<select id="selectLatestTopic" resultType="com.epmet.resi.group.dto.group.result.LatestTopicDTO">
SELECT
rt.id as topicId,
rt.TOPIC_CONTENT as topicContent
FROM
resi_topic rt
WHERE
rt.DEL_FLAG = '0'
and rt.GROUP_ID=#{groupId}
AND rt.STATUS = 'discussing'
order by rt.CREATED_TIME desc
limit 1
</select>
<!-- 推荐小组列表查询 -->
<select id="selectListRecommendGroup" parameterType="com.epmet.resi.group.dto.group.form.RecommendGroupFormDTO"
resultType="com.epmet.resi.group.dto.group.result.RecommendGroupResultDTO">
SELECT
rg.id AS groupId,
rg.GROUP_HEAD_PHOTO AS groupHeadPhoto,
rg.GROUP_NAME AS groupName,
rgs.TOTAL_MEMBERS AS totalMember,
rgs.TOTAL_PARTY_MEMBERS AS totalPartyMember
FROM
resi_group rg
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )
WHERE
rg.DEL_FLAG = '0'
AND rgs.DEL_FLAG = '0'
and rg.id not in (
SELECT
rgm.RESI_GROUP_ID
FROM
resi_group_member rgm
WHERE
rgm.DEL_FLAG = '0'
AND rgm.`STATUS` !='removed'
AND rgm.CUSTOMER_USER_ID = #{userId}
)
and rg.CUSTOMER_ID=#{customerId}
and rg.GRID_ID=#{gridId}
and rg.STATE ='approved'
order by totalMember desc,rg.LATEST_TOPIC_PUBLISH_DATE desc
LIMIT #{pageNo}, #{pageSize}
</select>
<!-- 我创建的小组查询 -->
<select id="selectListMyCreated" parameterType="com.epmet.resi.group.dto.group.form.CreatedFormDTO"
resultType="com.epmet.resi.group.dto.group.result.CreatedResultDTO">
SELECT
rg.id AS groupId,
rg.GROUP_HEAD_PHOTO AS groupHeadPhoto,
rg.GROUP_NAME AS groupName,
rgs.TOTAL_MEMBERS AS totalMember,
rgs.TOTAL_PARTY_MEMBERS AS totalPartyMember,
rg.STATE AS groupState
FROM
resi_group_member rgm
LEFT JOIN resi_group rg ON ( rgm.RESI_GROUP_ID = rg.ID )
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )
WHERE
rg.DEL_FLAG = '0'
AND rgm.DEL_FLAG = '0'
AND rgs.DEL_FLAG = '0'
AND rg.CUSTOMER_ID = #{customerId}
AND rg.GRID_ID =#{gridId}
AND rgm.CUSTOMER_USER_ID = #{userId}
AND rgm.GROUP_LEADER_FLAG = 'leader'
ORDER BY
rg.CREATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!-- 修改组信息 -->
<update id="modifyGroupInfo" parameterType="com.epmet.resi.group.dto.group.form.ModifyGroupFormDTO">
UPDATE resi_group rg
SET rg.GROUP_NAME = #{groupName},
rg.GROUP_HEAD_PHOTO = #{groupHeadPhoto},
rg.GROUP_INTRODUCTION =#{groupIntroduction},
rg.UPDATED_BY=#{userId},
rg.UPDATED_BY=NOW()
WHERE
rg.id = #{groupId}
AND rg.DEL_FLAG = '0'
</update>
<!-- 查看小组管理界面信息 -->
<select id="selectGroupSummarize" parameterType="com.epmet.resi.group.dto.group.form.GroupSummarizeFormDTO"
resultType="com.epmet.resi.group.dto.group.result.GroupSummarizeResultDTO">
SELECT
rg.id AS groupId,
rg.GROUP_HEAD_PHOTO AS groupHeadPhoto,
rg.GROUP_NAME AS groupName,
rg.GROUP_INTRODUCTION AS groupIntroduction,
rgs.TOTAL_MEMBERS AS totalMember,
rgs.TOTAL_PARTY_MEMBERS AS totalPartyMember,
rgm.GROUP_LEADER_FLAG AS leaderFlag,
(
SELECT
count(1)
FROM
group_memeber_operation gmo
WHERE
gmo.DEL_FLAG = '0'
AND gmo.GROUP_ID = rg.id
AND gmo.OPERATE_STATUS = 'under_auditting'
) AS totalApplyingMember,
rgs.TOTAL_TOPICS
FROM
resi_group rg
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )
LEFT JOIN resi_group_member rgm ON ( rg.id = rgm.RESI_GROUP_ID AND rgm.CUSTOMER_USER_ID =#{userId})
WHERE
rg.DEL_FLAG = '0'
AND rgs.DEL_FLAG = '0'
and rg.id=#{groupId}
</select>
<!-- 根据组信息查询组张信息 -->
<select id="selectGroupLeader" parameterType="java.lang.String" resultType="com.epmet.resi.group.dto.member.ResiGroupMemberDTO">
SELECT
*
FROM
resi_group_member rgm
WHERE
rgm.DEL_FLAG = '0'
AND rgm.GROUP_LEADER_FLAG = 'leader'
AND rgm.RESI_GROUP_ID = #{groupId}
</select>
<!-- 校验群名称是否存在 -->
<select id="checkResiGroupName" parameterType="com.epmet.resi.group.dto.group.form.ApplyCreateGroupFormDTO"
resultType="com.epmet.modules.group.entity.ResiGroupEntity">
SELECT
rg.*
FROM
resi_group rg
LEFT JOIN resi_group_member rgm ON ( rg.id = rgm.RESI_GROUP_ID )
WHERE
rg.DEL_FLAG = '0'
AND rgm.DEL_FLAG = '0'
AND rgm.GROUP_LEADER_FLAG = 'leader'
AND rgm.CUSTOMER_USER_ID = #{userId}
AND rg.GROUP_NAME = #{groupName}
AND rg.CUSTOMER_ID = #{customerId}
AND rg.GRID_ID = #{gridId}
AND rg.STATE in('approved','under_auditting')
</select>
<!-- 小组审核历史 -->
<select id="selectAuditedGroupList" parameterType="com.epmet.resi.group.dto.group.form.GroupAuditedFromDTO"
resultType="com.epmet.resi.group.dto.group.result.GroupAuditedResultDTO">
SELECT
rg.ID AS "groupId",
rg.GROUP_HEAD_PHOTO AS "groupHeadPhoto",
rg.GROUP_NAME AS "groupName",
rg.GROUP_INTRODUCTION AS "groupIntroduction",
rgo.STATE AS "status",
rgo.MESSAGE_TEXT AS "messageText",
rgo.UPDATED_TIME AS "auditedTime"
FROM
resi_group rg
INNER JOIN resi_group_operation rgo ON rg.ID = rgo.RESI_GROUP_ID
WHERE rg.CUSTOMER_ID = #{customerId}
AND rg.GRID_ID = #{gridId}
AND (rgo.STATE = 'approved' OR rgo.STATE = 'rejected')
AND rg.DEL_FLAG = '0'
AND rgo.DEL_FLAG = '0'
ORDER BY
rgo.UPDATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<select id="selectGroupsByGridId" resultType="com.epmet.modules.group.entity.ResiGroupEntity">
SELECT
*
FROM
resi_group
WHERE CUSTOMER_ID = #{customerId}
AND GRID_ID = #{gridId}
AND DEL_FLAG = '0'
ORDER BY
UPDATED_TIME DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<!-- 查询审核中的组信息列表(分页),一条组数据可能对应多条组操作记录,所以要限制组数据和组操作数据当前都在'待审核'状态来锁定唯一的映射关系 -->
<select id="getApplyingGroupsByCustIdAndGridId" parameterType="com.epmet.resi.group.dto.group.form.ApplyingGroupsFormDTO" resultType="com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO">
SELECT
gro.ID AS groupId,
gro.GROUP_NAME AS groupName,
gro.GROUP_HEAD_PHOTO AS groupHeadPhoto,
oper.READ_FLAG AS readFlag,
oper.MESSAGE_TEXT AS messageText,
CASE
WHEN TO_DAYS(oper.CREATED_TIME) = TO_DAYS(NOW()) THEN DATE_FORMAT(oper.CREATED_TIME,'%k:%i')
ELSE DATE_FORMAT(oper.CREATED_TIME,'%Y-%m-%d %k:%i')
END
AS createdTime
FROM
RESI_GROUP gro
LEFT JOIN RESI_GROUP_OPERATION oper ON ( gro.ID = oper.RESI_GROUP_ID AND oper.DEL_FLAG = '0' )
WHERE
gro.DEL_FLAG = '0'
AND gro.CUSTOMER_ID = #{customerId}
AND gro.GRID_ID = #{gridId}
AND gro.STATE = 'under_auditting'
AND oper.STATE = 'under_auditting'
ORDER BY gro.CREATED_TIME DESC
LIMIT #{pageNo},#{pageSize}
</select>
<!-- 获取组审核信息详情,已审核/未审核通用,一条组数据可能对应多条组操作记录,所以要限制组操作数据当前在'待审核'、'通过'、'拒绝通过'这三种状态之中的某个状态来锁定唯一的映射关系,因为每条组数据所对应的组操作记录的上述三种状态只能存在一种 -->
<select id="getApplyingGroupDetailByGroupId" parameterType="java.lang.String" resultType="com.epmet.resi.group.dto.group.result.ApplyingGroupDetailResultDTO">
SELECT
gro.ID AS groupId,
gro.GROUP_NAME AS groupName,
gro.GROUP_HEAD_PHOTO AS groupHeadPhoto,
gro.GROUP_INTRODUCTION AS groupIntroduction,
oper.READ_FLAG AS readFlag,
oper.MESSAGE_TEXT AS messageText,
oper.CREATED_TIME AS createdTime,
oper.STATE AS status,
oper.OPERATE_REASON rejectReason,
gro.CREATED_BY AS leaderId,
oper.READ_FLAG AS readFlag,
oper.ID AS operationId
FROM
RESI_GROUP gro
LEFT JOIN RESI_GROUP_OPERATION oper ON ( gro.ID = oper.RESI_GROUP_ID AND oper.DEL_FLAG = '0' )
WHERE
gro.DEL_FLAG = '0'
AND gro.ID = #{groupId}
AND oper.STATE IN ('under_auditting','approved','rejected')
</select>
</mapper>