client-info-mapper.xml 7.36 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">

<!-- @author tongxiaochuan -->
<mapper namespace="com.cjs.cms.dao.user.account.ClientInfoDao">
	
	<update id="updateDeveloper" parameterType="map">
		update HS_ASSET.CLIENTINFO set DEVELOPER = #{developer} 
		where CLIENT_ID = #{clientId}
	</update>
	
	<select id="queryByClientId" parameterType="String" resultType="ClientInfo">
	    SELECT A.CLIENT_ID, A.CLIENT_NAME, A.ID_NO, A.MOBILE_TEL, A.OPEN_DATE, A.DEVELOPER
		FROM HS_ASSET.ASSET_CLIENT_INFO_VIEW A
        WHERE CLIENT_ID = #{clientId}
	</select>
	
	<select id="queryByClientName" parameterType="String" resultType="ClientInfo">
	    SELECT A.CLIENT_ID, A.CLIENT_NAME, A.ID_NO, A.MOBILE_TEL, A.OPEN_DATE, A.DEVELOPER
		FROM HS_ASSET.ASSET_CLIENT_INFO_VIEW A
        WHERE CLIENT_NAME = #{clientName}
	</select>
	 
	<select id="queryCountByDeveloper" parameterType="string" resultType="int">
		SELECT COUNT(1) FROM HS_ASSET.CLIENT A 
		INNER JOIN HS_ASSET.BANKEXCHACCOUNT B ON A.CLIENT_ID = B.CLIENT_ID 
		INNER JOIN HS_ASSET.CLIENTINFO T ON A.CLIENT_ID = T.CLIENT_ID 
		WHERE B.BKACCOUNT_REGFLAG = 2 AND T.DEVELOPER = #{developer} 
		AND A.CLIENT_STATUS = 0
	</select>
	
	<!-- 根据推荐人递归查询指定时间内推荐人数(所有层的下级推荐都算) -->
	<select id="queryGroupByDeveloper" parameterType="map" resultType="map">
		SELECT COUNT(1) NUM FROM 
		(SELECT CASE WHEN A.AGENT_NO IS NOT NULL THEN A.AGENT_NO ELSE T.CLIENT_ID END CLIENT_ID,
		T.DEVELOPER, C.OPEN_DATE FROM HS_ASSET.CLIENTINFO T
		INNER JOIN HS_ASSET.CLIENT C ON T.CLIENT_ID = C.CLIENT_ID 
		INNER JOIN HS_ASSET.BANKEXCHACCOUNT B ON T.CLIENT_ID = B.CLIENT_ID 
		LEFT JOIN HS_ASSET.AGENTINFO A ON T.CLIENT_ID = A.FUND_ACCOUNT 
		WHERE B.BKACCOUNT_REGFLAG = 2 AND C.CLIENT_STATUS = 0) 
		WHERE OPEN_DATE BETWEEN #{startDate} AND #{endDate} 
		START WITH DEVELOPER = #{developer} 
		CONNECT BY NOCYCLE PRIOR CLIENT_ID = DEVELOPER
	</select>
	
	<!-- 查询指定用户列表中用户的推荐人账号及对应推荐人数 -->
	<select id="queryCountForDeveloper" parameterType="java.util.List" resultType="map">
		SELECT E.DEVELOPER CLIENT_ID,COUNT(1) SUM FROM (
		SELECT CASE LENGTH(TRIM(A.AGENT_NO)) WHEN 6 THEN A.FUND_ACCOUNT 
		WHEN 4 THEN A.FUND_ACCOUNT ELSE TRIM(T.DEVELOPER) END DEVELOPER FROM HS_ASSET.CLIENTINFO T 
		LEFT JOIN HS_ASSET.AGENTINFO A ON T.DEVELOPER = A.AGENT_NO 
		WHERE T.DEVELOPER != '5001' AND TRIM(T.DEVELOPER) IS NOT NULL 
		AND T.CLIENT_ID IN 
		<foreach collection="list" item="item" index="index" open="(" separator="," close=")">#{item}</foreach> 
		) E 
		GROUP BY E.DEVELOPER
	</select>
	
	<select id="queryDeveloperByClientId" parameterType="string" resultType="string">
		<![CDATA[SELECT CASE WHEN LENGTH(TRIM(DEVELOPER)) <= 6 THEN A.FUND_ACCOUNT ELSE TRIM(T.DEVELOPER) END DEVELOPER 
		FROM HS_ASSET.CLIENTINFO T 
		LEFT JOIN HS_ASSET.AGENTINFO A ON T.DEVELOPER = A.AGENT_NO 
		WHERE CLIENT_ID = #{clientId}]]>
	</select>
	
		<sql id="queryclientUnderCountSql">
		<!-- 35018买入,35017卖出 -->
		select ${clientId} clientId,cc.client_id, cc.developer,
		dd.buybusiness,dd.sellbusiness,
		ee.client_name,
		ff.client_name
		developname,ee.asset_level
		from (select client_id, developer
		from (select
		bb.agent_no,
		bb.fund_account,
		case
		when bb.agent_no is not null then
		bb.fund_account
		else
		aa.developer
		end developer,
		aa.client_id,
		aa.mobile_tel
		from HS_ASSET.CLIENTINFO aa, HS_ASSET.AGENTINFO bb
		where
		aa.developer = bb.agent_no(+))
		start with client_id = #{clientId}
		connect by prior client_id = developer) cc,
		(
		select client_id ,sum(sellbusiness) sellbusiness,
		sum(buybusiness)buybusiness
		from(
		select
		case when business_flag='35017' then abs(cc.business_amount) *
		cc.business_price else 0 end
		sellbusiness,
		case when business_flag='35018' then abs(cc.business_amount) *
		cc.business_price
		else 0 end buybusiness,client_id
		from HS_HIS.HIS_OTCDELIVER cc where 1=1
		<if test="startDate != null and startDate != ''">
					<![CDATA[and   cc.init_date >= #{startDate}]]>
		</if>
		<if test="endDate != null and endDate != ''">
					<![CDATA[ and cc.init_date <= #{endDate}]]>
		</if>
		) group by client_id	
		) dd,	
		HS_ASSET.CLIENT ee,
		HS_ASSET.CLIENT ff
		where cc.client_id = dd.client_id(+)
		and cc.client_id = ee.client_id(+)
		and cc.developer = ff.client_id(+)
		order by decode(cc.client_id,#{clientId},cc.client_id) , cc.developer desc 
	</sql>
		
	<select id="queryclientUnderCount" resultType="map" parameterType="map">	
			<include refid="common.pageStart"/>
			<include refid="queryclientUnderCountSql"/>
			<include refid="common.pageEnd"/>
	</select>
	
	<select id="queryclientUnderCountTotal" parameterType="map" resultType="int">
		select count(1) from (<include refid="queryclientUnderCountSql"/>)
	</select>
	<!-- 汇总 -->
	<select id="querySumCountTatal" parameterType="map" resultType="map">
		select count(client_id)CLIENT_ID,sum(buybusiness)buybusiness,sum(sellbusiness)sellbusiness
		 from (<include refid="queryclientUnderCountSql"/>) 
	</select>
	
	<!-- 导出 下辖会员统计-->
	<select id="exportUnderClientTotal" resultType="map" parameterType="map">
		<include refid="queryclientUnderCountSql"/>
	</select>
	
	<!-- 根据用户号查询汇付开户绑卡相关信息 -->
	<select id="queryForPnr" parameterType="string" resultType="map">
		SELECT T.MOBILE_TEL, R.CLIENT_NAME, R.ID_NO, E.BANK_ACCOUNT, B.OPEN_BANK_CODE, 
			B.PROVINCE_CODE, B.CITY_CODE 
		FROM HS_ASSET.CLIENTINFO T 
		INNER JOIN HS_ASSET.CLIENT R ON T.CLIENT_ID = R.CLIENT_ID 
		INNER JOIN HS_ASSET.BANKINOUTACCOUNT B ON T.CLIENT_ID = B.CLIENT_ID 
		INNER JOIN HS_ASSET.BANKEXCHACCOUNT E ON T.CLIENT_ID = E.CLIENT_ID 
		WHERE T.CLIENT_ID = #{clientId}
	</select>
	
	<!-- 查询所有开户完全成功的用户 -->
	<select id="queryAllUserRegisterSuccessed" resultType="string">
		SELECT A.CLIENT_ID FROM HS_ASSET.CLIENT A
		INNER JOIN HS_ASSET.BANKEXCHACCOUNT B ON A.CLIENT_ID = B.CLIENT_ID 
		INNER JOIN HS_ASSET.CLIENTINFO T ON A.CLIENT_ID = T.CLIENT_ID 
		WHERE B.BKACCOUNT_REGFLAG = 2 AND A.CLIENT_STATUS = 0 
		ORDER BY A.CLIENT_ID ASC
	</select>
	
	<!-- 为指定日期内开户成功的用户补发配额 -->
	<select id="queryForSendPoint" resultType="string">
		SELECT A.CLIENT_ID FROM HS_ASSET.CLIENT A
		INNER JOIN HS_ASSET.BANKEXCHACCOUNT B ON A.CLIENT_ID = B.CLIENT_ID 
		INNER JOIN HS_ASSET.CLIENTINFO T ON A.CLIENT_ID = T.CLIENT_ID 
		WHERE B.BKACCOUNT_REGFLAG = 2 AND A.CLIENT_STATUS = 0 
		AND A.OPEN_DATE BETWEEN '20170101' AND '20170222' 
		ORDER BY A.CLIENT_ID ASC
	</select>
	
	<update id="inheritDeveloper" parameterType="DeveloperChangeRecordInfo">
		UPDATE HS_ASSET.CLIENTINFO R SET R.DEVELOPER = #{newDeveloper} 
		WHERE R.CLIENT_ID IN (SELECT T.CLIENT_ID FROM HS_ASSET.CLIENTINFO T WHERE T.DEVELOPER = #{oldDeveloper})
	</update>
	
	<!-- 根据指定用户的推荐用户 -->
	<select id="queryClientByDeveloper" parameterType="string" resultType="string">
		SELECT CLIENT_ID FROM HS_ASSET.CLIENTINFO 
		WHERE DEVELOPER = #{developer}
	</select>
	
	<select id="queryClientStatus" parameterType="string" resultType="int">
		SELECT COUNT(1) FROM HS_ASSET.CLIENT A
		INNER JOIN HS_ASSET.BANKEXCHACCOUNT B ON A.CLIENT_ID = B.CLIENT_ID 
		INNER JOIN HS_ASSET.CLIENTINFO T ON A.CLIENT_ID = T.CLIENT_ID 
		WHERE B.BKACCOUNT_REGFLAG = 2 AND A.CLIENT_STATUS = 0 
		AND A.CLIENT_ID = #{clientId} 
	</select>
	
</mapper>