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}