UPDATE CU_MEMBER_ACCOUNT
SET
account1 = account1 + #{account1},
account2 = account2 + #{account2},
account3 = account3 + #{account3},
account4 = account4 + #{account4},
account5 = account5 + #{account5},
account6 = account6 + #{account6},
account7 = account7 + #{account7},
account8 = account8 + #{account8},
account9 = account9 + #{account9},
account10 = account10 + #{account10},
account11 = account11 + #{account11},
account12 = account12 + #{account12},
account13 = account13 + #{account13},
account14 = account14 + #{account14},
account15 = account15 + #{account15},
account16 = account16 + #{account16},
account17 = account17 + #{account17},
account18 = account18 + #{account18},
account19 = account19 + #{account19},
account20 = account20 + #{account20},
lock_account1 = #{lockAccount1},
lock_account2 = #{lockAccount2},
lock_account4 = #{lockAccount4},
withdraw_account4 = withdraw_account4 + #{withdrawAccount4},
consume_account4 = consume_account4 + #{consumeAccount4},
lock_account13 = #{lockAccount13},
pk_modified = #{pkModified},
modified_time = sysdate
WHERE pk_member = #{pkMember} and pk_country = #{pkCountry} and del_flag=0
MERGE INTO cu_member_account m
USING (select *
from (select a.field_value,
r.recharge_amount,
pk_member,
r.recharge_method
from cu_member_recharge r
left join bd_account a
on r.pk_account = a.pk_id
where r.del_flag = 0
and r.batch = #{batch}) tt pivot(sum(recharge_amount)
for field_value in('1' as account1,
'2' as account2,
'3' as account3,
'4' as account4,
'5' as account5,
'6' as account6,
'7' as account7,
'8' as account8,
'9' as account9,
'10' as account10,
'12' as account12,
'13' as account13))) t
ON (m.pk_member = t.pk_member)
WHEN MATCHED THEN
update
set m.account1 = NVL(t.account1, 0) + m.account1,
m.account2 = NVL(t.account2, 0) + m.account2,
m.account3 = NVL(t.account3, 0) + m.account3,
m.account4 = NVL(t.account4, 0) + m.account4,
m.WITHDRAW_ACCOUNT4 = case
when NVL(t.account4, 0) < 0 and
m.WITHDRAW_ACCOUNT4 + NVL(t.account4, 0) >= 0 then
NVL(t.account4, 0) + m.WITHDRAW_ACCOUNT4
when NVL(t.account4, 0) < 0 and
m.WITHDRAW_ACCOUNT4 + NVL(t.account4, 0) < 0 then
0
else
m.WITHDRAW_ACCOUNT4
end,
m.CONSUME_ACCOUNT4 = case
when NVL(t.account4, 0) < 0 and
m.WITHDRAW_ACCOUNT4 + NVL(t.account4, 0) < 0 then
m.WITHDRAW_ACCOUNT4 + t.account4 + m.CONSUME_ACCOUNT4
else
NVL(t.account4, 0) + m.CONSUME_ACCOUNT4
end,
m.account5 = NVL(t.account5, 0) + m.account5,
m.account6 = NVL(t.account6, 0) + m.account6,
m.account7 = NVL(t.account7, 0) + m.account7,
m.account8 = NVL(t.account8, 0) + m.account8,
m.account9 = NVL(t.account9, 0) + m.account9,
m.account10 = NVL(t.account10, 0) + m.account10,
m.account12 = NVL(t.account12, 0) + m.account12,
m.account13 = NVL(t.account13, 0) + m.account13,
m.MODIFIED_TIME = sysdate,
m.PK_MODIFIED = #{pkModified}
with t1 as
(select u.member_code,
u.member_name,
u.pk_id,
u.pk_vertex vertex_id,
u.pk_team_code team_id,
v.vertex_name,
v.pk_member,
u.pk_place_parent,
u.pk_parent,
t.team_name
from cu_member u
left join bd_vertex v
on u.pk_vertex = v.pk_id
and v.del_flag = 0
left join cu_member_team t
on u.pk_team_code = t.pk_id
and t.del_flag = 0
where u.del_flag = 0
and u.pk_settle_country = #{pkCountry})
select ss.memberCode,
ss.memberName,
ss.pk_id pkId,
ss.vertexId,
ss.teamId,
ss.vertexName,
ss.pk_member,
ss.pk_place_parent,
ss.pk_parent,
ss.teamName,
ss.slevel,
pp.plevel,
account1,
lock_account1,
lock_transfer_account1,
account2,
lock_account2,
lock_transfer_account2,
account3,
lock_account3,
lock_transfer_account3,
account4,
lock_account4,
lock_transfer_account4,
lock_withdraw_account4,
withdraw_account4,
consume_account4,
account5,
lock_account5,
lock_transfer_account5,
account6,
lock_account6,
lock_transfer_account6,
account7,
lock_account7,
lock_transfer_account7,
account8,
lock_account8,
lock_transfer_account8,
account9,
lock_account9,
lock_transfer_account9,
account10,
lock_account10,
account11,
lock_transfer_account10,
account12,
account13,
lock_account13
from (select member_code memberCode,
member_name memberName,
pk_id,
vertex_id vertexId,
team_id teamId,
vertex_name vertexName,
pk_member,
pk_place_parent,
pk_parent,
team_name teamName,
level slevel
from t1
start with pk_id =
(select cm.pk_id
from cu_member cm
where cm.member_code = #{memberCode})
pk_member
connect by prior pk_id = pk_place_parent) ss,
(select pk_id, level plevel
from t1
start with pk_id =
(select cm.pk_id
from cu_member cm
where cm.member_code = #{memberCode})
pk_member
connect by prior pk_id = pk_parent) pp,
cu_member_account a
1=1
and member_name like #{memberName} || '%'
and vertex_name like #{memberName} || '%'
and team_name like #{teamName} || '%'
and team_id = #{teamId}
and vertex_id = #{vertexId}
and level <= #{slevel}
1=1
and member_name like #{memberName} || '%'
and vertex_name like #{memberName} || '%'
and team_name like #{teamName} || '%'
and team_id = #{teamId}
and vertex_id = #{vertexId}
and level <= #{plevel}
ss.pk_id = pp.pk_id
and ss.pk_id = a.pk_member
and a.del_flag = 0
and a.pk_country = #{pkCountry}
ss.pk_id = pp.pk_id
and ss.pk_id = a.pk_member
and a.del_flag = 0
and a.pk_country = #{pkCountry}
and ss.pk_id in
#{item}
update cu_member_account a
set
a.lock_account1 = #{lockAccount1},
a.lock_transfer_account1 = #{lockTransferAccount1},
a.account1_remarks = #{account1Remarks},
a.lock_account2 = #{lockAccount2},
a.lock_transfer_account2 = #{lockTransferAccount2},
a.account2_remarks = #{account2Remarks},
a.lock_account3 = #{lockAccount3},
a.lock_transfer_account3 = #{lockTransferAccount3},
a.account3_remarks = #{account3Remarks},
a.lock_account4 = #{lockAccount4},
a.lock_transfer_account4 = #{lockTransferAccount4},
a.lock_withdraw_account4 = #{lockWithdrawAccount4},
a.account4_remarks = #{account4Remarks},
a.lock_account5 = #{lockAccount5},
a.lock_transfer_account5 = #{lockTransferAccount5},
a.account5_remarks = #{account5Remarks},
a.lock_account6 = #{lockAccount6},
a.lock_transfer_account6 = #{lockTransferAccount6},
a.account6_remarks = #{account6Remarks},
a.lock_account7 = #{lockAccount7},
a.lock_transfer_account7 = #{lockTransferAccount7},
a.account7_remarks = #{account7Remarks},
a.lock_account8 = #{lockAccount8},
a.lock_transfer_account8 = #{lockTransferAccount8},
a.account8_remarks = #{account8Remarks},
a.lock_account9 = #{lockAccount9},
a.lock_transfer_account9 = #{lockTransferAccount9},
a.account9_remarks = #{account9Remarks},
a.lock_account10 = #{lockAccount10},
a.lock_transfer_account10 = #{lockTransferAccount10},
a.account10_remarks = #{account10Remarks},
a.pk_modified = #{pkModified},
a.modified_time = sysdate
WHERE a.pk_member in
#{item}
merge into cu_member_account a
using (select pk_member,
sum(real_income_total * bc.out_exchange_rate) account4,
sum(back_points * bc.out_exchange_rate) account5,
sum(repur_coupon_subtotal * bc.out_exchange_rate) account8,
sum(global_points * bc.out_exchange_rate) account9,
sum(car_award_points * bc.out_exchange_rate) account10
from cu_member_bonus cb
inner join bd_currency bc
on cb.pk_country = bc.pk_country
where cb.del_flag = 0
and cb.pk_country = #{pkCountry}
and period between #{startPeriod} and #{endPeriod}
and cb.grant_status = 2
group by pk_member
) b
on (a.pk_member = b.pk_member)
when matched then
update set a.account4 = a.account4 + b.account4,
a.consume_account4 = a.consume_account4 + b.account4,
a.account5 = a.account5 + b.account5,
a.account8 = a.account8 + b.account8
merge into cu_member_account a
using (
select a.pk_member,
(case
when CONSUME_ACCOUNT4 >= a.consume_money then a.consume_money
else CONSUME_ACCOUNT4 end) consume_money
from (select ct.pk_member, sum(cd.consume_money) consume_money
from cu_member_trade ct
inner join cu_member_trade_detail cd
on cd.pk_member_trade = ct.pk_id
where cd.del_flag = 0
and ct.del_flag = 0
and cd.trade_statue = 1
and cd.period between #{startPeriod} and #{endPeriod}
and ct.pk_country = #{pkCountry}
group by ct.pk_member) a
inner join cu_member_account ca
on a.pk_member = ca.pk_member
where ca.CONSUME_ACCOUNT4 > 0
) b
on (a.pk_member = b.pk_member)
when matched then
update set a.withdraw_account4 = a.withdraw_account4 + b.consume_money,
a.consume_account4 = a.consume_account4 - b.consume_money