insert into sys_alipay_account_usage
(id, app_id, order_id, create_date, single_amount, status, create_datetime)
select #{id}, app_id, #{orderId}, #{createDate}, #{singleAmount}, #{status}, #{createDatetime}
from (
select a.app_id, a.single_day_limit, ifnull(b.total, 0) amount, a.seq
from sys_alipay_account a
left join (
select a.app_id, sum(a.single_amount) total
from sys_alipay_account_usage a
where a.create_date = #{createDate}
and (
a.status = 'ok' or (
a.status = 'init'
and
timestampdiff(SECOND, a.create_datetime, now()) < 1800
)
)
group by a.app_id
) b on a.app_id = b.app_id
) t
where t.amount + #{singleAmount} <= t.single_day_limit order by t.seq limit 1
update sys_alipay_account_usage set status = 'ok' where order_id = #{orderId}