Bonus-Cloud-Houqin/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/v3/AccTradeMapper.xml

1668 lines
66 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.bonus.canteen.core.account.v3.mapper.AccTradeMapper">
<!-- 移动端分页查询充值记录 -->
<select id="queryTradeAppPage" resultType="com.bonus.canteen.core.account.v3.app.vo.AppAccTradePageVO">
SELECT
id AS tradeId,
amount,
acc_all_bal as walletBalTotal,
trade_type,
trade_time,
pay_state,
pay_type,
remark,
fail_reason
FROM acc_trade
<where>
cust_id = #{infoParam.custId}
<if test="infoParam.startDateTime != null">
and trade_time <![CDATA[ >= ]]> #{infoParam.startDateTime}
</if>
<if test="infoParam.endDateTime != null">
and trade_time <![CDATA[ <= ]]> #{infoParam.endDateTime}
</if>
<if test="infoParam.tradeTypeList != null and infoParam.tradeTypeList.size()>0 ">
and trade_type in
<foreach collection="infoParam.tradeTypeList" item="tradeType" separator="," open="(" close=")">
#{tradeType}
</foreach>
</if>
<if test="infoParam.payStateList != null and infoParam.payStateList.size()>0 ">
and pay_state in
<foreach collection="infoParam.payStateList" item="payState" separator="," open="(" close=")">
#{payState}
</foreach>
</if>
</where>
ORDER BY trade_time DESC
</select>
<!-- * 查询交易记录 场景发送mq-->
<select id="listAccTradeForSend" resultType="com.bonus.canteen.core.account.v3.mq.send.model.RepAccMqModel">
SELECT
atr.id AS flowId,
atr.cust_id,
ci.cust_num,
ci.nick_name as cust_name,
atr.org_id,
co.dept_name as org_name,
co.dept_name AS org_full_name,
atr.psn_type,
cpt.psn_type_name,
atr.amount AS flowAmount,
atr.actual_amount AS flowRealAmount,
atr.manage_cost AS manageCost,
atr.wallet_bal_total AS accTotalBal,
atr.acc_all_bal AS accAllBal,
atr.trade_time AS payTime,
atr.trade_type AS flowType,
atr.remark,
atr.crby AS optname,
atr.recharge_source AS rechargeSource,
atr.machine_type AS machineType,
atr.pay_channel AS payChannel,
atr.pay_type AS payType,
atr.batch_num AS batchNum,
atr.recharge_operate AS rechargeOperate,
atr.machine_sn As mchSn,
atr.machine_sn,
atr.withdraw_source,
atr.operate_source,
atr.origin_trade_id
FROM
acc_trade AS atr
LEFT JOIN sys_user AS ci ON atr.cust_id = ci.cust_id
LEFT JOIN sys_dept AS co ON atr.org_id = co.dept_id
LEFT JOIN cust_psn_type AS cpt ON atr.psn_type = cpt.psn_type
WHERE atr.id IN
<foreach collection="tradeIdList" item="tradeId" separator="," open="(" close=")">
#{tradeId}
</foreach>
ORDER BY atr.trade_time,atr.id
</select>
<!-- <select id="listAccTradeForSend" resultType="net.xnzn.core.account.v3.mq.send.model.RepAccMqModel">-->
<!-- SELECT-->
<!-- atr.id AS flowId,-->
<!-- atr.cust_id,-->
<!-- ci.cust_num,-->
<!-- ci.cust_name,-->
<!-- atr.org_id,-->
<!-- co.org_name,-->
<!-- co.org_full_name,-->
<!-- atr.psn_type,-->
<!-- cpt.psn_type_name,-->
<!-- atr.amount AS flowAmount,-->
<!-- atr.actual_amount AS flowRealAmount,-->
<!-- atr.manage_cost AS manageCost,-->
<!-- atr.wallet_bal_total AS accTotalBal,-->
<!-- atr.acc_all_bal AS accAllBal,-->
<!-- atr.trade_time AS payTime,-->
<!-- atr.trade_type AS flowType,-->
<!-- atr.remark,-->
<!-- atr.crby AS optname,-->
<!-- atr.recharge_source AS rechargeSource,-->
<!-- atr.machine_type AS machineType,-->
<!-- atr.pay_channel AS payChannel,-->
<!-- atr.pay_type AS payType,-->
<!-- atr.batch_num AS batchNum,-->
<!-- atr.recharge_operate AS rechargeOperate,-->
<!-- atr.machine_sn As mchSn,-->
<!-- atr.machine_sn,-->
<!-- atr.withdraw_source,-->
<!-- atr.operate_source,-->
<!-- atr.origin_trade_id-->
<!-- FROM-->
<!-- acc_trade AS atr-->
<!-- LEFT JOIN cust_info AS ci ON atr.cust_id = ci.cust_id-->
<!-- LEFT JOIN cust_org AS co ON atr.org_id = co.org_id-->
<!-- LEFT JOIN cust_psn_type AS cpt ON atr.psn_type = cpt.psn_type-->
<!-- WHERE atr.id IN-->
<!-- <foreach collection="tradeIdList" item="tradeId" separator="," open="(" close=")">-->
<!-- #{tradeId}-->
<!-- </foreach>-->
<!-- ORDER BY atr.trade_time,atr.id-->
<!-- </select>-->
<!-- 获取个人钱包充值汇总-->
<select id="getAccRechargeSum" resultType="com.bonus.canteen.core.account.v3.api.vo.AccRechargeSumApiVO">
SELECT
count(*) AS sumCount,
SUM( amount ) AS sumAmount
FROM
acc_trade t1
<where>
t1.trade_type = 10 and t1.pay_state = 3 and t1.trade_state = 2
<if test="param.custId != null">
and t1.cust_id = #{param.custId}
</if>
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.payChannellList != null and param.payChannellList.size() > 0">
and t1.pay_channel in
<foreach collection="param.payChannellList" item="payChannel" separator="," open="(" close=")">
#{payChannel}
</foreach>
</if>
</where>
</select>
<!-- 移动端根据交易id获取交易记录-->
<select id="getOneTradeApp" resultType="com.bonus.canteen.core.account.v3.app.vo.AppAccTradePageVO">
SELECT
id AS tradeId,
amount,
acc_all_bal as walletBalTotal,
trade_type,
trade_time,
pay_state,
pay_type,
remark
FROM acc_trade
WHERE id = #{tradeId}
</select>
<!-- 查询用户补贴交易明细-->
<select id="listAccSubsidyTrade" resultType="com.bonus.canteen.core.account.v3.model.AccTradeWalletDetail">
SELECT *
FROM
acc_trade_wallet_detail
<where>
wallet_id = 2
and cust_id = #{custId}
<if test="tradeTypeList != null and tradeTypeList.size() > 0">
and trade_type in
<foreach collection="tradeTypeList" item="tradeType" separator="," open="(" close=")">
#{tradeType}
</foreach>
</if>
</where>
ORDER BY trade_time DESC,trade_id DESC
</select>
<!-- 分页查询补贴充值记录-->
<select id="queryAccSubRechargeList" resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubRechargePageVO">
<include refid="query_sub_recharge_detail_sql">
</include>
</select>
<!-- 查询补贴充值记录sql -->
<sql id="query_sub_recharge_detail_sql">
SELECT atr.trade_time,
atr.cust_id,
ci.cust_num,
ci.nick_name as cust_name,
ci.phonenumber as mobile,
co.dept_name AS org_full_name,
atr.psn_type,
cpt.psn_type_name,
atr.crby,
atr.id as tradeId,
atr.trade_state,
atr.batch_num,
atr.remark,
atr.amount as rechargeAmount,
atwd.wallet_bal as rechargeAfterWalletBal,
atwd.validate_time
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN cust_psn_type cpt ON cpt.psn_type = atr.psn_type
LEFT JOIN sys_dept co ON co.dept_id = atr.org_id
LEFT JOIN acc_trade_wallet_detail atwd ON atr.id = atwd.trade_id
<include refid="acc_recharge_sub_page_where_sql">
</include>
ORDER BY atr.trade_time desc,atr.id desc
</sql>
<!-- 补贴充值记录where条件-->
<sql id="acc_recharge_sub_page_where_sql">
<where>
atr.trade_type = 20 and atr.pay_state = 3
<if test="param.accTradeId != null">
and atr.id = #{param.accTradeId}
</if>
<if test="param.startDateTime != null">
and atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.crBy != null and param.crBy != ''">
and atr.crby like #{param.crBy}
</if>
<if test="param.batchNum != null and param.batchNum != ''">
and atr.batch_num = #{param.batchNum}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
<if test="param.custId != null">
and atr.cust_id = #{param.custId}
</if>
</where>
</sql>
<!-- 关联用户模糊查询-->
<sql id="cust_fuzzy_query">
and (ci.cust_num LIKE CONCAT('%', #{param.keyword},'%')
or ci.nick_name = #{param.keyword,typeHandler=com.bonus.canteen.core.common.encrypt.SM4EncDecHandler}
or ci.phonenumber = #{param.keyword,typeHandler=com.bonus.canteen.core.common.encrypt.SM4EncDecHandler}
<!-- or ci.mobile_suffix = #{param.keyword,typeHandler=com.bonus.canteen.core.common.encrypt.SM4EncDecHandler} -->
or ci.nick_name_like LIKE CONCAT('%',#{param.keyword,typeHandler=com.bonus.canteen.core.common.encrypt.CipherQueryLikeHandler},'%')
)
</sql>
<!-- 查询补贴充值记录-合计金额-->
<select id="getTotalAccSubRechargePage" resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubRechargePageVO">
SELECT sum(atr.amount) rechargeAmount
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<include refid="acc_recharge_sub_page_where_sql">
</include>
</select>
<!-- 查询补贴清空记录-->
<select id="queryAccSubClearList" resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubClearPageVO">
<include refid="query_sub_clear_detail_sql">
</include>
</select>
<!-- 补贴清空记录sql-->
<sql id="query_sub_clear_detail_sql">
SELECT atr.trade_time,
atr.cust_id,
ci.cust_num,
ci.nick_name AS cust_name,
ci.phonenumber AS mobile,
co.dept_name AS org_full_name,
atr.psn_type,
cpt.psn_type_name,
atr.amount as clearAmount,
atwd.wallet_bal as clearAfterWalletBal,
atr.crby,
atr.id as tradeId
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN sys_dept co ON co.dept_id = atr.org_id
LEFT JOIN cust_psn_type cpt ON cpt.psn_type = atr.psn_type
LEFT JOIN acc_trade_wallet_detail atwd ON atr.id = atwd.trade_id
<include refid="acc_recharge_sub_clear_page_where_sql">
</include>
ORDER BY atr.trade_time desc,atr.id desc
</sql>
<!-- 补贴清空记录where条件-->
<sql id="acc_recharge_sub_clear_page_where_sql">
<where>
atr.trade_type = 100 and atr.pay_state = 3
<if test="param.startDateTime != null">
and atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.crBy != null and param.crBy != ''">
and atr.crby like #{param.crBy}
</if>
<if test="param.batchNum != null and param.batchNum != ''">
and atr.batch_num = #{param.batchNum}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
<if test="param.custId != null">
and atr.cust_id = #{param.custId}
</if>
<if test="param.accTradeId != null">
and atr.id = #{param.accTradeId}
</if>
</where>
</sql>
<!-- 查询补贴清空记录 - 合计金额-->
<select id="getTotalAccSubClearPage" resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubClearPageVO">
SELECT SUM(atr.amount) clearAmount
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<include refid="acc_recharge_sub_clear_page_where_sql">
</include>
</select>
<!-- 补贴汇总-用户个人补贴汇总-导出-->
<select id="listAccSubRechargeCollectPageForCust"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubCollectVO">
<include refid="query_acc_sub_recharge_collect_cust_sql"></include>
</select>
<!-- 补贴汇总-用户个人补贴汇总-sql-->
<sql id="query_acc_sub_recharge_collect_cust_sql">
SELECT
ci.cust_id,
ci.cust_num,
ci.nick_name as cust_name,
ci.phonenumber as mobile,
co.dept_name AS custOrgFullName,
IFNULL(t3.count,0) AS `times`,
IFNULL(t3.amount,0) AS `amount`,
IFNULL(t3.clearTimes,0) AS clearTimes,
IFNULL(t3.clearAmount,0) AS clearAmount,
IFNULL(t3.revocationTimes,0) AS revocationTimes,
IFNULL(t3.revocationAmount,0) AS revocationAmount,
IFNULL(t3.amount,0) + IFNULL(t3.clearAmount,0) + IFNULL(t3.revocationAmount,0) AS totalAmount,
t3.change_flag
FROM
sys_user ci
INNER JOIN acc_info ai on ci.cust_id = ai.cust_id
LEFT JOIN sys_dept co ON ci.dept_id = co.dept_id
LEFT JOIN
(
SELECT
t1.cust_id,
SUM( CASE WHEN t1.trade_type = 20 THEN 1 ELSE 0 END ) AS `count`,
SUM( CASE WHEN t1.trade_type = 20 THEN t1.amount ELSE 0 END ) AS `amount`,
SUM( CASE WHEN t1.trade_type = 50 THEN 1 ELSE 0 END ) AS revocationTimes,
SUM( CASE WHEN t1.trade_type = 50 THEN - t1.amount ELSE 0 END ) AS revocationAmount,
SUM( CASE WHEN t1.trade_type = 100 THEN 1 ELSE 0 END ) AS clearTimes,
SUM( CASE WHEN t1.trade_type = 100 THEN - t1.amount ELSE 0 END ) AS clearAmount,
1 AS change_flag
FROM
acc_trade t1
<where>
t1.trade_type IN (20,50,100)
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</where>
GROUP BY t1.cust_id
) t3 ON t3.cust_id = ci.cust_id
<where>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
and ci.dept_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
ORDER BY change_flag IS NULL,amount DESC,ci.cust_id
</sql>
<!-- 补贴汇总 - 人员类别汇总 集合-->
<select id="listAccSubRechargeCollectForCustPsn"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubCollectVO">
<include refid="query_acc_recharge_sum_psn_base_sql">
</include>
</select>
<!-- 补贴汇总-人员类别汇总 sql -->
<sql id="query_acc_recharge_sum_psn_base_sql">
SELECT
cpt.psn_type,
cpt.psn_type_name,
IFNULL(t3.count,0) AS `times`,
IFNULL(t3.amount,0) AS `amount`,
IFNULL(t3.clearTimes,0) AS clearTimes,
IFNULL(t3.clearAmount,0) AS clearAmount,
IFNULL(t3.revocationTimes,0) AS revocationTimes,
IFNULL(t3.revocationAmount,0) AS revocationAmount,
IFNULL(t3.amount,0) + IFNULL(t3.clearAmount,0) + IFNULL(t3.revocationAmount,0) AS totalAmount,
t3.change_flag
FROM
(SELECT psn_type_name, psn_type FROM cust_psn_type UNION ALL SELECT '—' AS psn_type_name, - 1 AS psn_type) cpt
LEFT JOIN
(
SELECT
IFNULL( t1.psn_type, - 1 ) AS psn_type,
SUM( CASE WHEN t1.trade_type = 20 THEN 1 ELSE 0 END ) AS `count`,
SUM( CASE WHEN t1.trade_type = 20 THEN t1.amount ELSE 0 END ) AS `amount`,
SUM( CASE WHEN t1.trade_type = 50 THEN 1 ELSE 0 END ) AS revocationTimes,
SUM( CASE WHEN t1.trade_type = 50 THEN - t1.amount ELSE 0 END ) AS revocationAmount,
SUM( CASE WHEN t1.trade_type = 100 THEN 1 ELSE 0 END ) AS clearTimes,
SUM( CASE WHEN t1.trade_type = 100 THEN - t1.amount ELSE 0 END ) AS clearAmount,
1 AS change_flag
FROM
acc_trade t1
<where>
t1.trade_type IN (20,50,100)
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</where>
GROUP BY t1.psn_type
) t3 ON t3.psn_type = cpt.psn_type
<where>
<if test="param.psnTypeList != null and param.psnTypeList.size() != 0">
and cpt.psn_type in
<foreach collection="param.psnTypeList" item="psnType" separator="," open="(" close=")">
#{psnType}
</foreach>
</if>
</where>
ORDER BY change_flag IS NULL, amount DESC, cpt.psn_type
</sql>
<!-- 补贴汇总 - 组织汇总 集合-->
<select id="listAccSubRechargeCollectPageCustOrg"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubCollectVO">
<include refid="query_acc_recharge_sum_org_base_sql">
</include>
</select>
<!-- 补贴汇总组织汇总sql-->
<sql id="query_acc_recharge_sum_org_base_sql">
SELECT
g.dept_id as org_id,
<!-- g.org_num, -->
g.dept_name AS org_full_name,
IFNULL(t3.count,0) AS `times`,
IFNULL(t3.amount,0) AS `amount`,
IFNULL(t3.clearTimes,0) AS clearTimes,
IFNULL(t3.clearAmount,0) AS clearAmount,
IFNULL(t3.revocationTimes,0) AS revocationTimes,
IFNULL(t3.revocationAmount,0) AS revocationAmount,
IFNULL(t3.amount,0) + IFNULL(t3.clearAmount,0) + IFNULL(t3.revocationAmount,0) AS totalAmount,
t3.change_flag
FROM
sys_dept g
LEFT JOIN (
SELECT
IFNULL( t1.org_id, - 1 ) AS org_id,
SUM( CASE WHEN t1.trade_type = 20 THEN 1 ELSE 0 END ) AS `count`,
SUM( CASE WHEN t1.trade_type = 20 THEN t1.amount ELSE 0 END ) AS `amount`,
SUM( CASE WHEN t1.trade_type = 50 THEN 1 ELSE 0 END ) AS revocationTimes,
SUM( CASE WHEN t1.trade_type = 50 THEN - t1.amount ELSE 0 END ) AS revocationAmount,
SUM( CASE WHEN t1.trade_type = 100 THEN 1 ELSE 0 END ) AS clearTimes,
SUM( CASE WHEN t1.trade_type = 100 THEN - t1.amount ELSE 0 END ) AS clearAmount,
1 AS change_flag
FROM
acc_trade t1
<where>
t1.trade_type IN ( 20, 50, 100 )
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</where>
GROUP BY t1.org_id
) t3 ON t3.org_id = g.dept_id
<where>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
and g.dept_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
</where>
ORDER BY change_flag IS NULL,amount DESC,g.ancestors
</sql>
<!-- 补贴汇总-用户个人补贴汇总-->
<select id="getTotalAccSubRechargeCollectAmountForCust"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubCollectVO">
SELECT
IFNULL( a.times, 0 ) AS `times`,
IFNULL( a.amount, 0 ) AS `amount`,
IFNULL( a.clearTimes, 0 ) AS clearTimes,
IFNULL( a.clearAmount, 0 ) AS clearAmount,
IFNULL( a.revocationTimes, 0 ) AS revocationTimes,
IFNULL( a.revocationAmount, 0 ) AS revocationAmount,
IFNULL( a.amount, 0 ) + IFNULL( a.clearAmount, 0 ) + IFNULL( a.revocationAmount, 0 ) AS totalAmount
FROM
(
SELECT
SUM( CASE WHEN atr.trade_type = 20 THEN 1 ELSE 0 END ) AS `times`,
SUM( CASE WHEN atr.trade_type = 20 THEN atr.amount ELSE 0 END ) AS `amount`,
SUM( CASE WHEN atr.trade_type = 50 THEN 1 ELSE 0 END ) AS revocationTimes,
SUM( CASE WHEN atr.trade_type = 50 THEN - atr.amount ELSE 0 END ) AS revocationAmount,
SUM( CASE WHEN atr.trade_type = 100 THEN 1 ELSE 0 END ) AS clearTimes,
SUM( CASE WHEN atr.trade_type = 100 THEN - atr.amount ELSE 0 END ) AS clearAmount
FROM sys_user ci
LEFT JOIN acc_trade atr ON ci.cust_id = atr.cust_id
<where>
atr.trade_type IN ( 20, 50, 100 )
<if test="param.startDateTime != null">
AND atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
AND atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.psnTypeList != null and param.psnTypeList.size() != 0">
AND atr.psn_type in
<foreach collection="param.psnTypeList" item="psnType" separator="," open="(" close=")">
#{psnType}
</foreach>
</if>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
AND ci.dept_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
<if test="'2'.toString() == authPO.roleType.toString()">
and EXISTS (
SELECT null
FROM sys_role_dept it1
LEFT JOIN sys_role it2 ON it2.role_id = it1.role_id
LEFT JOIN sys_user_role it3 ON it1.role_id = it3.role_id
WHERE it2.del_flag = 0
AND it2.role_key = #{authPO.roleCode}
<!-- AND it1.half_select = 1 -->
AND it3.user_id = #{authPO.userId}
AND it1.dept_id = ci.dept_id
)
</if>
</where>
) as a
</select>
<!-- 补贴汇总 - 合计金额-->
<select id="getTotalAccSubRechargeCollectAmount"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubCollectVO">
SELECT
IFNULL( a.times, 0 ) AS `times`,
IFNULL( a.amount, 0 ) AS `amount`,
IFNULL( a.clearTimes, 0 ) AS clearTimes,
IFNULL( a.clearAmount, 0 ) AS clearAmount,
IFNULL( a.revocationTimes, 0 ) AS revocationTimes,
IFNULL( a.revocationAmount, 0 ) AS revocationAmount,
IFNULL( a.amount, 0 ) + IFNULL( a.clearAmount, 0 ) + IFNULL( a.revocationAmount, 0 ) AS totalAmount
FROM
(
SELECT
SUM( CASE WHEN atr.trade_type = 20 THEN 1 ELSE 0 END ) AS `times`,
SUM( CASE WHEN atr.trade_type = 20 THEN atr.amount ELSE 0 END ) AS `amount`,
SUM( CASE WHEN atr.trade_type = 50 THEN 1 ELSE 0 END ) AS revocationTimes,
SUM( CASE WHEN atr.trade_type = 50 THEN - atr.amount ELSE 0 END ) AS revocationAmount,
SUM( CASE WHEN atr.trade_type = 100 THEN 1 ELSE 0 END ) AS clearTimes,
SUM( CASE WHEN atr.trade_type = 100 THEN - atr.amount ELSE 0 END ) AS clearAmount
FROM acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<where>
atr.trade_type IN ( 20, 50, 100 )
<if test="param.startDateTime != null">
AND atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
AND atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.psnTypeList != null and param.psnTypeList.size() != 0">
AND atr.psn_type in
<foreach collection="param.psnTypeList" item="psnType" separator="," open="(" close=")">
#{psnType}
</foreach>
</if>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
AND atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
<if test="'2'.toString() == authPO.roleType.toString()">
and EXISTS (
SELECT null
FROM sys_role_dept it1
LEFT JOIN sys_role it2 ON it2.role_id = it1.role_id
LEFT JOIN sys_user_role it3 ON it1.role_id = it3.role_id
WHERE it2.del_flag = 0
AND it2.role_key = #{authPO.roleCode}
<!-- AND it1.half_select = 1 -->
AND it3.user_id = #{authPO.userId}
AND it1.dept_id = atr.org_id
)
</if>
</where>
) as a
</select>
<select id="getCustTimeForAdvanceReceiveSub" resultType="int">
SELECT COUNT(id)
FROM acc_trade
WHERE sub_time_rule_id = #{timeId}
AND trade_type = #{tradeType}
AND cust_id = #{custId}
AND trade_time <![CDATA[ >= ]]> #{firstDateTime}
AND trade_time <![CDATA[ <= ]]> #{nowTime}
</select>
<!-- 根据交易记录id和批次号查询交易记录-->
<select id="listAccTrade" resultType="com.bonus.canteen.core.account.v3.web.vo.AccTradeAndDetailVO">
SELECT *
FROM acc_trade
<where>
trade_type = #{tradeType}
<if test="tradeIdList != null and tradeIdList.size() != 0">
and id in
<foreach collection="tradeIdList" item="tradeId" separator="," open="(" close=")">
#{tradeId}
</foreach>
</if>
<if test="batchNum != null">
and batch_num = #{batchNum}
</if>
</where>
ORDER BY trade_time DESC
</select>
<!-- 查询补贴撤销记录-导出-->
<select id="listRepealAccSubTrade" resultType="com.bonus.canteen.core.account.v3.web.vo.AccSubRepealPageVO">
<include refid="query_sub_repeal_detail_sql">
</include>
</select>
<!-- 查询个人钱包充值撤销记录sql-->
<sql id="query_sub_repeal_detail_sql">
SELECT atr.trade_time,
atr.cust_id,
ci.cust_num,
ci.nick_name AS cust_name,
ci.phonenumber AS mobile,
co.dept_name AS org_full_name
atr.psn_type,
cpt.psn_type_name,
atwd.amount as repealAmount,
atwd.wallet_bal as repealAfterWalletBal,
atr.crby,
atr.id as tradeId
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN sys_dept co ON co.dept_id = atr.org_id
LEFT JOIN cust_psn_type cpt ON cpt.psn_type = atr.psn_type
LEFT JOIN acc_trade_wallet_detail atwd ON atr.id = atwd.trade_id
<include refid="query_recharge_repeal_detail_where_sql">
</include>
ORDER BY atr.trade_time desc,atr.id desc
</sql>
<!-- 充值撤销补贴撤销where条件-->
<sql id="query_recharge_repeal_detail_where_sql">
<where>
atr.pay_state = 3
<if test="param.walletId != null">
and atwd.wallet_id = #{param.walletId}
</if>
<if test="param.tradeType != null">
and atr.trade_type = #{param.tradeType}
</if>
<if test="param.startDateTime != null">
and atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.crBy != null and param.crBy != ''">
and atr.crby like #{param.crBy}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.custId != null">
and atr.cust_id = #{param.custId}
</if>
<if test="param.accTradeId != null and param.accTradeId != ''">
and atr.id = #{param.accTradeId}
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</sql>
<!-- 查询个人钱包充值撤销记录 - 合计金额-->
<select id="getTotalRepealAccSubTradePage" resultType="java.math.BigDecimal">
SELECT SUM(atwd.amount)
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN acc_trade_wallet_detail atwd ON atr.id = atwd.trade_id
<include refid="query_recharge_repeal_detail_where_sql">
</include>
</select>
<!-- 获取本月提前领取补贴人员-->
<select id="listCustIdForAdvanceReceiveSub" resultType="java.lang.Long">
SELECT cust_id
FROM acc_trade
WHERE sub_time_rule_id = #{timeId}
AND trade_type = #{tradeType}
AND trade_time <![CDATA[ >= ]]> #{firstDateTime}
AND trade_time <![CDATA[ <= ]]> #{nowTime}
</select>
<!-- 提现查询最近的10条充值记录-->
<select id="queryRechargeListByCustIdForWithdraw" resultType="com.bonus.canteen.core.account.v3.model.AccTrade">
SELECT *
FROM acc_trade t1
WHERE trade_type = #{tradeType}
AND cust_id = #{custId}
AND trade_state = 2
<if test="lastRechargeId != null">
AND id <![CDATA[ < ]]> #{lastRechargeId}
</if>
AND EXISTS (
SELECT it11.trade_id
FROM acc_trade_wallet_detail it11
WHERE it11.wallet_id = 1
AND t1.id = it11.trade_id
AND it11.trade_type = #{tradeType}
)
ORDER BY trade_time DESC,id DESC LIMIT 10
</select>
<!-- 查询提现明细 - 无分页-->
<select id="listAccWithdrawDetails" resultType="com.bonus.canteen.core.account.v3.web.vo.AccWithdrawDetailPageVO">
<include refid="query_acc_withdraw_detail_base_sql">
</include>
</select>
<!-- 查询提现明细sql-->
<sql id="query_acc_withdraw_detail_base_sql">
SELECT t1.id AS tradeId,
t1.trade_time,
ci.cust_num,
ci.nick_name AS cust_name,
ci.phonenumber AS mobile,
t6.dept_name AS org_full_name
t4.psn_type_name,
t1.amount AS withdrawAmount,
t5.wallet_id AS withdrawWalletType,
t5.wallet_bal AS withdrawWalletBal,
t1.trade_type,
t1.pay_channel,
t1.pay_type,
t1.withdraw_source,
t1.crby,
t1.crtime,
t1.remark
FROM
acc_trade t1
LEFT JOIN sys_user ci ON t1.cust_id = ci.cust_id
LEFT JOIN cust_psn_type t4 ON t4.psn_type = t1.psn_type
LEFT JOIN acc_trade_wallet_detail t5 ON t1.id = t5.trade_id
LEFT JOIN sys_dept t6 ON t6.dept_id = t1.org_id
<include refid="withdraw_detail_where_sql">
</include>
ORDER BY t1.trade_time desc,t1.id desc
</sql>
<!-- 查询提现明细where条件-->
<sql id="withdraw_detail_where_sql">
<where>
t1.trade_type = 30
<if test="param.accTradeId != null and param.accTradeId != ''">
and t1.id = #{param.accTradeId}
</if>
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.payChannel != null">
and t1.pay_channel = #{param.payChannel}
</if>
<if test="param.crBy != null and param.crBy != ''">
and t1.crby like #{param.crBy}
</if>
<if test="param.withdrawSource != null">
and t1.withdraw_source = #{param.withdrawSource}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and t1.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</sql>
<!-- 查询提现明细汇总提现金额-->
<select id="getTotalWithdrawAmount" resultType="com.bonus.canteen.core.account.v3.web.vo.AccWithdrawDetailPageVO">
SELECT SUM(t1.amount) AS withdrawAmount
FROM
acc_trade t1
LEFT JOIN sys_user ci ON t1.cust_id = ci.cust_id
<include refid="withdraw_detail_where_sql">
</include>
</select>
<!-- 查询提现方式汇总 - 集合-->
<select id="queryTradeTypeAccWithdrawSumList" resultType="com.bonus.canteen.core.account.v3.web.vo.AccWithdrawTradeTypePageVO">
<include refid="query_trade_type_acc_withdraw_sum_sql">
</include>
</select>
<!-- 提现汇总数据展示sql-->
<sql id="query_trade_type_acc_withdraw_sum_sql">
SELECT t1.withdraw_source,
t1.pay_channel,
COUNT(t1.amount) payChannelNum,
SUM(t1.amount) payChannelAmount
FROM acc_trade t1
<include refid="query_trade_type_acc_withdraw_sum_where_sql">
</include>
GROUP BY t1.withdraw_source, t1.pay_channel
ORDER BY t1.withdraw_source, t1.pay_channel
</sql>
<!-- 提现汇总数据where/sql-->
<sql id="query_trade_type_acc_withdraw_sum_where_sql">
<where>
t1.trade_type = #{param.tradeType}
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.payChannel != null">
and t1.pay_channel = #{param.payChannel}
</if>
<if test="param.withdrawSource != null">
and t1.withdraw_source = #{param.withdrawSource}
</if>
</where>
</sql>
<!-- 查询提现方式汇总 - 合计-->
<select id="queryTradeTypeAccWithdrawAmountSum"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccWithdrawTradeTypePageVO">
SELECT
COUNT(t1.amount) payChannelNum,
SUM(t1.amount) payChannelAmount
FROM acc_trade t1
<include refid="query_trade_type_acc_withdraw_sum_where_sql">
</include>
</select>
<!-- 查询人员类别提现汇总/组织提现汇总list-->
<select id="queryAccWithdrawListSum" resultType="com.bonus.canteen.core.account.v3.web.vo.AccWithdrawPageVO">
<include refid="query_acc_withdraw_page_sum_base_sql">
</include>
</select>
<!-- 查询人员类别提现汇总/组织提现汇总sql-->
<sql id="query_acc_withdraw_page_sum_base_sql">
SELECT
<if test="param.type == 2">
IFNULL( min( t4.psn_type_name ), '未分类人员' ) AS psn_type_name,
</if>
<if test="param.type == 3">
min(t3.dept_name) AS org_full_name,
</if>
t1.withdraw_source,
t1.pay_channel,
COUNT(t1.amount) AS `count`,
SUM(t1.amount) AS amount
FROM acc_trade t1
LEFT JOIN sys_dept t3 ON t1.org_id = t3.dept_id
<if test="param.type == 2">
LEFT JOIN cust_psn_type t4 ON t4.psn_type = t1.psn_type
</if>
<include refid="query_acc_withdraw_page_sum_where_sql">
</include>
<if test="param.type == 2">
GROUP BY t1.psn_type, t1.withdraw_source, t1.pay_channel
ORDER BY t1.psn_type, t1.withdraw_source, t1.pay_channel
</if>
<if test="param.type == 3">
GROUP BY t1.org_id, t1.withdraw_source, t1.pay_channel
ORDER BY t1.org_id, t1.withdraw_source, t1.pay_channel
</if>
</sql>
<!-- 查询人员类别提现汇总/组织提现汇总 where-->
<sql id="query_acc_withdraw_page_sum_where_sql">
WHERE t1.trade_type = #{param.tradeType}
<if test="param.startDateTime != null">
AND t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
AND t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.payChannel != null">
AND t1.pay_channel = #{param.payChannel}
</if>
<if test="param.withdrawSource != null">
AND t1.withdraw_source = #{param.withdrawSource}
</if>
<if test="param.psnTypeList != null and param.psnTypeList.size() != 0">
AND t1.psn_type in
<foreach collection="param.psnTypeList" item="psnType" separator="," open="(" close=")">
#{psnType}
</foreach>
</if>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
AND t1.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
</sql>
<!-- 查询人员类别提现汇总/组织提现汇总金额-->
<select id="queryAccWithdrawSumTotalAmount" resultType="com.bonus.canteen.core.account.v3.web.vo.AccWithdrawPageVO">
SELECT
COUNT(t1.amount) `count`,
SUM(t1.amount) amount
FROM acc_trade t1
<if test="param.type == 2">
LEFT JOIN cust_psn_type t4 ON t4.psn_type = t1.psn_type
</if>
<include refid="query_acc_withdraw_page_sum_where_sql">
</include>
</select>
<!-- 钱包转账记录-->
<select id="queryAccTransferList" resultType="com.bonus.canteen.core.account.v3.web.vo.AccTransferPageVO">
<include refid="acc_transfer_detail_sql">
</include>
</select>
<!-- 转账记录查询sql -->
<sql id="acc_transfer_detail_sql">
SELECT atr.trade_time,
atr.cust_id,
ci.cust_num,
ci.nick_name AS cust_name,
ci.phonenumber AS mobile,
co.dept_name AS org_full_name,
atr.psn_type,
cpt.psn_type_name,
atr.trade_type,
atwd.wallet_id,
atr.amount,
atwd.wallet_bal as walletBal,
atr.crby,
atr.id as tradeId
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN cust_psn_type cpt ON cpt.psn_type = atr.psn_type
LEFT JOIN sys_dept co ON co.dept_id = atr.org_id
LEFT JOIN acc_trade_wallet_detail atwd ON atr.id = atwd.trade_id
<include refid="acc_transer_page_where_sql">
</include>
ORDER BY atr.trade_time desc
</sql>
<!-- 转账记录查询条件sql -->
<sql id="acc_transer_page_where_sql">
<where>
<if test="param.tradeType != null">
and atr.trade_type = #{param.tradeType}
</if>
<if test="param.tradeTypeList != null and param.tradeTypeList.size() > 0">
and atr.trade_type in
<foreach collection="param.tradeTypeList" item="tradeType" separator="," open="(" close=")">
#{tradeType}
</foreach>
</if>
<if test="param.startDateTime != null">
and atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.crBy != null and param.crBy != ''">
and atr.crby like #{param.crBy}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.accTradeId != null and param.accTradeId != ''">
and atr.id = #{param.accTradeId}
</if>
<if test="param.custId != null">
AND atr.cust_id = #{param.custId}
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</sql>
<!-- 钱包转账记录- 合计金额-->
<select id="getTotalAccTransferPage" resultType="com.bonus.canteen.core.account.v3.web.vo.AccTransferPageVO">
SELECT sum(atr.amount) amount
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<include refid="acc_transer_page_where_sql">
</include>
</select>
<!-- 查询钱包冻结明细-->
<select id="queryAccFrozenPageList" resultType="com.bonus.canteen.core.account.v3.web.vo.AccFrozenPageVO">
<include refid="query_acc_frozen_detail_sql">
</include>
</select>
<!-- 查询冻结解冻明细sql-->
<sql id="query_acc_frozen_detail_sql">
SELECT atr.trade_time,
atr.cust_id,
ci.cust_num,
ci.nick_name AS cust_name,
ci.phonenumber AS mobile,
co.dept_name AS org_full_name,
atr.psn_type,
cpt.psn_type_name,
atwd.wallet_id,
atr.amount as frozenAmount,
atwd.wallet_bal as walletBal,
atwd.frozen_balance as walletFrozenBal,
atr.crby,
atr.id as tradeId
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN cust_psn_type cpt ON cpt.psn_type = atr.psn_type
LEFT JOIN acc_trade_wallet_detail atwd ON atr.id = atwd.trade_id
LEFT JOIN sys_dept co ON atr.org_id = co.dept_id
<include refid="query_acc_frozen_page_where_sql">
</include>
ORDER BY atr.trade_time desc
</sql>
<!-- 钱包冻结解冻明细where条件-->
<sql id="query_acc_frozen_page_where_sql">
<where>
<if test="param.tradeType != null">
and atr.trade_type = #{param.tradeType}
</if>
<if test="param.startDateTime != null">
and atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.crBy != null and param.crBy != ''">
and atr.crby like #{param.crBy}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.custId != null">
and atr.cust_id = #{param.custId}
</if>
<if test="param.accTradeId != null and param.accTradeId != ''">
and atr.id = #{param.accTradeId}
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</sql>
<!-- 查询钱包冻结解冻记录 - 合计金额-->
<select id="getTotalAccFrozenPage" resultType="java.math.BigDecimal">
SELECT sum(atr.amount)
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<include refid="query_acc_frozen_page_where_sql">
</include>
ORDER BY atr.trade_time desc
</select>
<!-- 查询钱包解冻明细-->
<select id="queryAccUnFrozenPageList" resultType="com.bonus.canteen.core.account.v3.web.vo.AccUnFrozenPageVO">
<include refid="query_acc_frozen_detail_sql">
</include>
</select>
<!-- 查询红包发放记录-->
<select id="queryAccRedRechargeList" resultType="com.bonus.canteen.core.account.v3.web.vo.AccRedRechargePageVO">
<include refid="query_acc_red_recharge_banse_sql">
</include>
</select>
<!-- 查询红包发放记录-->
<sql id="query_acc_red_recharge_banse_sql">
SELECT atr.trade_time,
atr.cust_id,
ci.cust_num,
ci.nick_name as cust_name,
ci.phonenumber as mobile,
co.dept_name as org_full_name,
atr.psn_type,
cpt.psn_type_name,
atr.amount as rechargeAmount,
atwd.wallet_bal as rechargeAfterWalletBal,
atr.crby,
atr.id as tradeId,
atr.remark
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN cust_psn_type cpt ON cpt.psn_type = atr.psn_type
LEFT JOIN sys_dept co ON co.dept_id = atr.org_id
LEFT JOIN acc_trade_wallet_detail atwd ON atr.id = atwd.trade_id
<include refid="acc_recharge_red_page_where_sql">
</include>
ORDER BY atr.trade_time desc,atr.id desc
</sql>
<!-- 红包充值where条件-->
<sql id="acc_recharge_red_page_where_sql">
<where>
atr.trade_type = 140 and atr.pay_state = 3
<if test="param.startDateTime != null">
and atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.crBy != null and param.crBy != ''">
and atr.crby like #{param.crBy}
</if>
<if test="param.batchNum != null and param.batchNum != ''">
and atr.batch_num = #{param.batchNum}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.accTradeId != null and param.accTradeId != ''">
and atr.id = #{param.accTradeId}
</if>
<if test="param.custId != null">
and atr.cust_id = #{param.custId}
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</sql>
<!-- 查询红包发放记录 - 合计金额-->
<select id="getTotalAccRedRechargePage" resultType="com.bonus.canteen.core.account.v3.web.vo.AccRedRechargePageVO">
SELECT sum(atr.amount) rechargeAmount
FROM
acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<include refid="acc_recharge_red_page_where_sql">
</include>
</select>
<!-- 红包发放人员类别汇总 - 导出-->
<select id="listAccRedRechargeCollectPageForCustPsn"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccRedCollectVO">
<include refid="query_acc_red_recharge_collect_Psn_sql"></include>
</select>
<!-- 红包发放人员类别汇总sql-->
<sql id="query_acc_red_recharge_collect_Psn_sql">
SELECT
cpt.psn_type,
cpt.psn_type_name,
IFNULL( t3.rechargeCount, 0 ) AS rechargeCount,
IFNULL( t3.rechargeAmount, 0 ) AS rechargeAmount,
t3.change_flag
FROM
(SELECT psn_type_name, psn_type FROM cust_psn_type UNION ALL SELECT '—' AS psn_type_name, - 1 AS psn_type) cpt
LEFT JOIN
(
SELECT
IFNULL( t1.psn_type, - 1 ) AS psn_type,
count(*) AS rechargeCount,
SUM( t1.amount ) AS rechargeAmount,
1 AS change_flag
FROM
acc_trade t1
<where>
t1.trade_type = 140
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</where>
GROUP BY t1.psn_type
) t3 ON t3.psn_type = cpt.psn_type
<where>
<if test="param.psnTypeList != null and param.psnTypeList.size() != 0">
and cpt.psn_type in
<foreach collection="param.psnTypeList" item="psnType" separator="," open="(" close=")">
#{psnType}
</foreach>
</if>
</where>
ORDER BY change_flag IS NULL, rechargeAmount DESC, cpt.psn_type
</sql>
<!-- 红包发放用户组织汇总 导出-->
<select id="listAccRedRechargeCollectPageForCustOrg"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccRedCollectVO">
<include refid="query_acc_red_recharge_collect_org_sql"></include>
</select>
<!-- 红包发放用户组织汇总sql-->
<sql id="query_acc_red_recharge_collect_org_sql">
SELECT
g.dept_id as org_id,
<!-- g.org_num, -->
g.dept_name as org_full_name,
IFNULL( t3.rechargeCount, 0 ) AS rechargeCount,
IFNULL( t3.rechargeAmount, 0 ) AS rechargeAmount,
t3.change_flag
FROM
sys_dept g
LEFT JOIN (
SELECT
IFNULL( t1.org_id, - 1 ) AS org_id,
count(*) AS rechargeCount,
SUM( t1.amount ) AS rechargeAmount,
1 AS change_flag
FROM
acc_trade t1
<where>
t1.trade_type = 140
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</where>
GROUP BY t1.org_id
) t3 ON t3.org_id = g.dept_id
<where>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
and g.dept_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
</where>
ORDER BY change_flag IS NULL,rechargeAmount DESC,g.ancestors
</sql>
<!-- 红包发放用户个人汇总 导出-->
<select id="listAccRedRechargeCollectPageForCust"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccRedCollectVO">
<include refid="query_acc_red_recharge_collect_cust_sql"></include>
</select>
<!-- 红包发放用户个人汇总sql-->
<sql id="query_acc_red_recharge_collect_cust_sql">
SELECT
ci.cust_id,
ci.cust_num,
ci.nick_name as cust_name,
ci.phonenumber as mobile,
co.dept_name AS custOrgFullName,
IFNULL( t3.rechargeCount, 0 ) AS rechargeCount,
IFNULL( t3.rechargeAmount, 0 ) AS rechargeAmount,
t3.change_flag
FROM
sys_user ci
INNER JOIN acc_info ai on ci.cust_id = ai.cust_id
LEFT JOIN sys_dept co ON ci.dept_id = co.dept_id
LEFT JOIN (
SELECT
t1.cust_id,
count(*) AS rechargeCount,
SUM( t1.amount ) AS rechargeAmount,
1 AS change_flag
FROM
acc_trade t1
<where>
t1.trade_type = 140
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</where>
GROUP BY t1.cust_id
) t3 ON t3.cust_id = ci.cust_id
<where>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
and ci.dept_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
ORDER BY change_flag IS NULL,rechargeAmount DESC,ci.cust_id
</sql>
<!-- 红包发放汇总-合计-用户-->
<select id="queryAccRedRechargeCollectPageSumForCust" resultType="com.bonus.canteen.core.account.v3.web.vo.AccRedCollectVO">
SELECT
count(*) AS rechargeCount,
SUM( atr.amount ) AS rechargeAmount
FROM sys_user ci
LEFT JOIN acc_trade atr ON ci.cust_id = atr.cust_id
<where>
atr.trade_type = 140
<if test="param.startDateTime != null">
AND atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
AND atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.psnTypeList != null and param.psnTypeList.size() != 0">
AND ci.psn_type in
<foreach collection="param.psnTypeList" item="psnType" separator="," open="(" close=")">
#{psnType}
</foreach>
</if>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
AND ci.dept_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</select>
<!-- 红包发放汇总-合计-->
<select id="queryAccRedRechargeCollectPageSum"
resultType="com.bonus.canteen.core.account.v3.web.vo.AccRedCollectVO">
SELECT
count(*) AS rechargeCount,
SUM( atr.amount ) AS rechargeAmount
FROM acc_trade atr
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<where>
atr.trade_type = 140
<if test="param.startDateTime != null">
AND atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
AND atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.psnTypeList != null and param.psnTypeList.size() != 0">
AND atr.psn_type in
<foreach collection="param.psnTypeList" item="psnType" separator="," open="(" close=")">
#{psnType}
</foreach>
</if>
<if test="param.orgIdList != null and param.orgIdList.size() != 0">
AND atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</select>
<!-- 查询充值明细汇总充值金额-->
<select id="getTotalRechargeAmount" resultType="com.bonus.canteen.core.account.v3.web.vo.AccRechargeDetailPageVO">
SELECT
SUM(t1.amount) rechargeAmount,
SUM(t1.actual_Amount) actualAmount,
SUM(t1.manage_cost) manageCost
FROM
acc_trade t1
LEFT JOIN sys_user ci ON t1.cust_id = ci.cust_id
<include refid="recharge_detail_where_sql">
</include>
</select>
<!-- 查询充值明细where条件-->
<sql id="recharge_detail_where_sql">
<where>
<choose>
<when test="param.timeType != null and param.timeType == 1 ">
<if test="param.startDateTime != null">
and t1.crtime <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.crtime <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</when>
<otherwise>
<if test="param.startDateTime != null">
and t1.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and t1.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
</otherwise>
</choose>
<if test="param.tradeType != null">
and t1.trade_type = #{param.tradeType}
</if>
<if test="param.payChannel != null">
and t1.pay_channel = #{param.payChannel}
</if>
<if test="param.batchNum != null and param.batchNum != ''">
and t1.batch_num = #{param.batchNum}
</if>
<if test="param.accTradeId!= null">
and t1.id = #{param.accTradeId}
</if>
<if test="param.crBy != null and param.crBy != ''">
and t1.crby like #{param.crBy}
</if>
<if test="param.tradeStateList != null and param.tradeStateList.size() > 0">
and t1.trade_state in
<foreach collection="param.tradeStateList" item="tradeState" separator="," open="(" close=")">
#{tradeState}
</foreach>
</if>
<if test="param.payStateList != null and param.payStateList.size() > 0">
and t1.pay_state in
<foreach collection="param.payStateList" item="payState" separator="," open="(" close=")">
#{payState}
</foreach>
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and t1.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.custId != null">
and t1.cust_id = #{param.custId}
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</sql>
<!-- 查询充值明细 导出使用-->
<select id="listAccRechargeDetails" resultType="com.bonus.canteen.core.account.v3.web.vo.AccRechargeDetailPageVO">
<include refid="query_acc_recharge_details_sql">
</include>
</select>
<!-- 查询充值明细sql-->
<sql id="query_acc_recharge_details_sql">
SELECT t1.id tradeId,
t1.crtime,
t1.trade_time,
ci.cust_num,
ci.nick_name as cust_name,
ci.phonenumber as mobile,
t6.dept_name as org_full_name,
t4.psn_type_name,
t1.trade_type,
t1.pay_channel,
t1.pay_type,
t1.manage_cost,
t1.amount rechargeAmount,
t1.actual_Amount actualAmount,
t1.crby,
t1.recharge_source,
t1.pay_state,
t1.trade_state,
t1.fail_reason,
t1.canteen_id,
t1.machine_type,
t1.machine_sn,
t7.device_name,
t1.batch_num,
t5.canteen_name canteenName,
t1.remark
FROM
acc_trade t1
LEFT JOIN sys_user ci ON t1.cust_id = ci.cust_id
LEFT JOIN cust_psn_type t4 ON t4.psn_type = t1.psn_type
LEFT JOIN alloc_canteen t5 ON t5.canteen_id = t1.canteen_id
LEFT JOIN sys_dept t6 ON t6.dept_id = t1.org_id
LEFT JOIN device_info t7 ON t7.device_sn = t1.machine_sn
<include refid="recharge_detail_where_sql">
</include>
<if test="param.timeType != null and param.timeType == 1">
ORDER BY t1.crtime desc,t1.id desc
</if>
<if test="param.timeType != null and param.timeType == 2">
ORDER BY t1.trade_time desc,t1.id desc
</if>
</sql>
<!-- 个人钱包-充值撤销明细v4-合计-->
<select id="getWalletRepealAccTradePageTotal" resultType="com.bonus.canteen.core.account.v4.vo.AccWalletRepealV4PageVO">
SELECT
SUM(atr.amount) AS repealAmount
FROM
acc_trade atr
INNER JOIN acc_trade_wallet_detail t2 ON t2.trade_id = atr.id
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
<include refid="list_wallet_repeal_where"></include>
</select>
<sql id="list_wallet_repeal_where">
<where>
<if test="param.startDateTime != null">
and atr.trade_time <![CDATA[ >= ]]> #{param.startDateTime}
</if>
<if test="param.endDateTime != null">
and atr.trade_time <![CDATA[ <= ]]> #{param.endDateTime}
</if>
<if test="param.tradeTypeList != null and param.tradeTypeList.size() > 0">
and atr.trade_type in
<foreach collection="param.tradeTypeList" item="tradeType" separator="," open="(" close=")">
#{tradeType}
</foreach>
</if>
<if test="param.crBy != null and param.crBy != ''">
and atr.crby like #{param.crBy}
</if>
<if test="param.orgIdList != null and param.orgIdList.size() > 0">
and atr.org_id in
<foreach collection="param.orgIdList" item="orgId" separator="," open="(" close=")">
#{orgId}
</foreach>
</if>
<if test="param.custId != null">
and atr.cust_id = #{param.custId}
</if>
<if test="param.accTradeId != null and param.accTradeId != ''">
and atr.id = #{param.accTradeId}
</if>
<if test="param.originalRechargeId != null and param.originalRechargeId != ''">
and atr.origin_trade_id = #{param.originalRechargeId}
</if>
<if test="param.repealSourceList != null and param.repealSourceList.size() > 0">
and atr.recharge_source in
<foreach collection="param.repealSourceList" item="repealSource" separator="," open="(" close=")">
#{repealSource}
</foreach>
</if>
<if test="param.keyword != null and param.keyword != ''">
<include refid="cust_fuzzy_query"></include>
</if>
</where>
</sql>
<!-- 个人钱包-充值撤销明细v4-->
<select id="listWalletRepealAccTradeV4" resultType="com.bonus.canteen.core.account.v4.vo.AccWalletRepealV4PageVO">
SELECT
atr.trade_time,
atr.id AS tradeId,
atr.cust_id,
ci.cust_num,
ci.nick_name as cust_name,
ci.phonenumber as mobile,
co.dept_name as org_full_name,
cpt.psn_type_name,
atr.trade_type,
atr.amount AS repealAmount,
t2.wallet_id AS repealWalletType,
t2.wallet_bal AS repealAfterWalletBal,
atr.crby,
atr.recharge_source AS revokeSource,
atr.origin_trade_id
FROM
acc_trade atr
INNER JOIN acc_trade_wallet_detail t2 ON t2.trade_id = atr.id
LEFT JOIN sys_user ci ON ci.cust_id = atr.cust_id
LEFT JOIN sys_dept co ON co.dept_id = atr.org_id
LEFT JOIN cust_psn_type cpt ON cpt.psn_type = atr.psn_type
<include refid="list_wallet_repeal_where"></include>
ORDER BY atr.trade_time desc,atr.id desc
</select>
</mapper>