AnnouncementMapper.xml 7.71 KB
<?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.xiniunet.announcement.dal.AnnouncementMapper">

    <sql id="whereForFindList">
        <if test="request.id!=null"> AND `ID` =#{ request.id }</if>
        <if test="request.tenantId!=null"> AND `TENANT_ID` =#{ request.tenantId }</if>
        <if test="request.title!=null"> AND `TITLE` LIKE CONCAT ('%',#{ request.title  },'%')</if>
        <if test="request.content!=null"> AND `CONTENT` LIKE CONCAT ('%',#{ request.content  },'%')</if>
        <if test="request.ownerUserId!=null"> AND `OWNER_USER_ID` =#{ request.ownerUserId }</if>
       <!-- <if test="request.relatedUserId!=null"> AND
            (`OWNER_USER_ID` =#{ request.relatedUserId } OR
            `ID` IN (
            SELECT `ANNOUNCEMENT_ID` FROM trx_announcement_user where USER_ID =#{ request.relatedUserId }
            AND           `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            )
            )
        </if>-->
    </sql>
    <sql id="whereForFindByUserList">
        <if test="request.id!=null"> AND ta.`ID` =#{ request.id }</if>
        <if test="request.tenantId!=null"> AND ta.`TENANT_ID` =#{ request.tenantId }</if>
        <if test="request.title!=null"> AND ta.`TITLE` LIKE CONCAT ('%',#{ request.title  },'%')</if>
        <if test="request.content!=null"> AND ta.`CONTENT` LIKE CONCAT ('%',#{ request.content  },'%')</if>
        <if test="request.ownerUserId!=null"> AND ta.`OWNER_USER_ID` =#{ request.ownerUserId }</if>
        <if test="request.userId!=null"> AND tau.`USER_ID` =#{ request.userId }</if>
        <if test="request.keyword != null and request.keyword !=''">
            AND
            (
             ta.`TITLE` LIKE CONCAT ('%',#{  request.keyword  },'%')
            OR ta.`CONTENT` LIKE CONCAT ('%',#{  request.keyword  },'%')
            )
        </if>
    </sql>

    <sql id="whereForSearchList">
        AND
        (
            1=0
            OR `TITLE` LIKE CONCAT ('%',#{  request.keyword  },'%')  
            OR `CONTENT` LIKE CONCAT ('%',#{  request.keyword  },'%')  
        )
    </sql>

    <select id="find" resultMap="announcementPO">
        SELECT
            <include refid="entityColumnList"/>
        FROM
            `TRX_ANNOUNCEMENT`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            <include refid="whereForFindList" />
        <if test="request.pageSize !=0">
            LIMIT #{ request.beginItemIndex }, #{ request.pageSize }
        </if>
    </select>

    <select id="findCount" resultType="java.lang.Long">
        SELECT
            COUNT(1)
        FROM
            `TRX_ANNOUNCEMENT`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            <include refid="whereForFindList" />
    </select>
    <select id="findByUser" resultMap="announcementPO">
        SELECT
        <include refid="entityByUserColumnList"/>
        FROM
        `TRX_ANNOUNCEMENT` ta
        LEFT JOIN trx_announcement_user tau
        ON ta.ID = tau.ANNOUNCEMENT_ID and tau.IS_DELETED = 0 and tau.`TENANT_ID`=#{ passport.tenantId }
        LEFT JOIN (
          SELECT ANNOUNCEMENT_ID,IS_DELETED,TENANT_ID,count(1) UN_CONFIRM_COUNT from trx_announcement_user where IS_CONFIRM = 0 GROUP BY ANNOUNCEMENT_ID
        ) cta
        ON cta.ANNOUNCEMENT_ID = ta.ID and cta.IS_DELETED = 0 and cta.`TENANT_ID`=#{ passport.tenantId }
        WHERE
        ta.`IS_DELETED`=0
        AND ta.`TENANT_ID`=#{ passport.tenantId }
        <include refid="whereForFindByUserList" />
        GROUP BY ta.ID
        ORDER BY ta.ID DESC
        <if test="request.pageSize !=0">
            LIMIT #{ request.beginItemIndex }, #{ request.pageSize }
        </if>
    </select>

    <select id="findByUserCount" resultType="java.lang.Long">
        SELECT count(1) FROM (
        SELECT
        ta.ID
        FROM
        `TRX_ANNOUNCEMENT` ta
        LEFT JOIN trx_announcement_user tau
        ON ta.ID = tau.ANNOUNCEMENT_ID and tau.IS_DELETED = 0 and tau.`TENANT_ID`=#{ passport.tenantId }
        LEFT JOIN (
        SELECT ANNOUNCEMENT_ID,IS_DELETED,TENANT_ID,count(1) UN_CONFIRM_COUNT from trx_announcement_user where IS_CONFIRM = 0 GROUP BY ANNOUNCEMENT_ID
        ) cta
        ON cta.ANNOUNCEMENT_ID = ta.ID and cta.IS_DELETED = 0 and cta.`TENANT_ID`=#{ passport.tenantId }
        WHERE
        ta.`IS_DELETED`=0
        AND  ta.`TENANT_ID`=#{ passport.tenantId }
        <include refid="whereForFindByUserList" />
        GROUP BY ta.ID ) T
    </select>
    <select id="search" resultMap="announcementPO">
        SELECT
            <include refid="entityColumnList"/>
        FROM
            `TRX_ANNOUNCEMENT`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            <if test="request.keyword !=null">
                <include refid="whereForSearchList" />
            </if>
        <if test="request.pageSize !=0">
            LIMIT #{ request.beginItemIndex }, #{ request.pageSize }
        </if>
    </select>

    <select id="searchCount" resultType="java.lang.Long">
        SELECT
            COUNT(1)
        FROM
            `TRX_ANNOUNCEMENT`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            <if test="request.keyword !=null">
                <include refid="whereForSearchList" />
            </if>
    </select>

    <select id="existByCode" resultType="java.lang.Long">
        SELECT
            COUNT(1)
        FROM
            `TRX_ANNOUNCEMENT`
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            AND `ID` != #{id}
            AND `CODE` = #{code}
    </select>

    <update id="update">
        UPDATE
            `TRX_ANNOUNCEMENT`
        SET
            `TITLE`=#{ request.title },
            `CONTENT`=#{ request.content },
            `OWNER_USER_ID`=#{ request.ownerUserId },
            `OWNER_USER_NAME`=#{ request.ownerUserName },
            `ANNOUNCEMENT_TIME`=#{ request.announcementTime },
            `IS_REVOKE`=#{ request.isRevoke },
            `REVOKE_USER_ID`=#{ request.revokeUserId },
            `REVOKE_USER_NAME`=#{ request.revokeUserName },
            `REVOKE_REASON`=#{ request.revokeReason },
            `REVOKE_TIME`=#{ request.revokeTime },
            `IS_ALL_CONFIRM`=#{ request.isAllConfirm },
            `LAST_UPDATED_BY`=#{ passport.userId },
            `LAST_UPDATE_TIME`=SYSDATE(),
            `ROW_VERSION`=#{ request.rowVersion }+1
        WHERE
            `IS_DELETED`=0
            AND `TENANT_ID`=#{ passport.tenantId }
            AND `ID` = #{ request.id }
            AND `ROW_VERSION` = #{ request.rowVersion }
    </update>
    <update id="revoke">
        UPDATE
        `TRX_ANNOUNCEMENT`
        SET
        `IS_REVOKE`=1,
        `REVOKE_USER_ID`=#{ passport.userId },
        `REVOKE_USER_NAME`=#{ passport.userName },
        `REVOKE_REASON`=#{ request.revokeReason },
        `REVOKE_TIME`=SYSDATE(),
        `LAST_UPDATED_BY`=#{ passport.userId },
        `LAST_UPDATE_TIME`=SYSDATE(),
        `ROW_VERSION`=#{ request.rowVersion }+1
        WHERE
        `IS_DELETED`=0
        AND `TENANT_ID`=#{ passport.tenantId }
        AND `ID` = #{ request.id }
        AND `ROW_VERSION` = #{ request.rowVersion }
    </update>
    <update id="allConfirm">
        UPDATE
        `TRX_ANNOUNCEMENT`
        SET
        `IS_ALL_CONFIRM`=1,
        `LAST_UPDATED_BY`=#{ passport.userId },
        `LAST_UPDATE_TIME`=SYSDATE(),
        `ROW_VERSION`=#{ request.rowVersion }+1
        WHERE
        `IS_DELETED`=0
        AND `TENANT_ID`=#{ passport.tenantId }
        AND `ID` = #{ request.id }
        AND `ROW_VERSION` = #{ request.rowVersion }
    </update>
</mapper>