update platform_bill a join platform_bill b on a.type =b.type and TO_DAYS(a.day_id)-TO_DAYS(b.day_id)= 1 set a.start_money=b.end_money where a.day_id =#{dayId} and a.type = 0 update platform_bill a join platform_bill b on a.user_id =b.user_id and a.type =b.type and TO_DAYS(a.day_id)-TO_DAYS(b.day_id)= 1 set a.start_money=b.end_money where a.day_id =#{dayId} and a.type in(1,2) INSERT INTO `tcwm2.5`.platform_bill ( day_id, user_id, shop_name, `type`, start_money, revenue, revenue_count, shop_payouts, shop_payouts_rates, shop_payouts_count, rider_payouts, rider_payouts_rates, rider_payouts_count, refund_money, refund_count, end_money, sys_gift_amount, platform_rates, total_income, pay_money, create_time, update_time, shop_balance ) -- 第一部分:骑手数据(type=2) SELECT #{dayId}, tu.user_id, NULL, 2, 0, IFNULL(SUM(ti.rider_money), 0), -- 骑手总收入(revenue) COUNT(ti.rider_money), -- 收入订单数(revenue_count) NULL, NULL, NULL, -- 商户提现字段(未使用) IFNULL(SUM(co.money), 0), -- 骑手提现金额(rider_payouts) IFNULL(SUM(co.rate), 0), -- 骑手提现手续费(rider_payouts_rates) COUNT(co.id), -- 骑手提现次数(rider_payouts_count) NULL, NULL, -- 退款字段(未使用) IFNULL(MAX(tu.balance), 0), -- 期末余额(end_money) -- 系统赠送金额 - 系统扣除金额(sys_gift_amount): IFNULL( ( SELECT SUM(money) FROM user_money_details ud1 WHERE ud1.user_id = tu.user_id AND ud1.title LIKE '系统赠送%' AND ud1.create_time > #{startTime} AND ud1.create_time #{endTime} ) - ( SELECT SUM(money) FROM user_money_details ud2 WHERE ud2.user_id = tu.user_id AND ud2.title LIKE '系统扣除%' AND ud2.create_time > #{startTime} AND ud2.create_time #{endTime} ) , 0 ) AS gift_amount, NULL, -- 平台抽成(未使用) IFNULL(SUM(ti.rider_money), 0), -- 总收益(total_income) NULL, -- 用户支付金额(未使用) #{now}, #{now}, -- 创建和更新时间 0 -- 商户余额(shop_balance) FROM tb_user tu USE INDEX (tb_user_rider_open_id_IDX) LEFT JOIN tb_indent ti USE INDEX (tb_indent_finish_time_IDX) ON ti.finish_time > #{startTime} AND ti.finish_time #{endTime} AND ti.rider_user_id = tu.user_id AND ti.indent_state = '6' -- 订单状态:已完成 LEFT JOIN cash_out co ON co.user_id = tu.user_id AND co.type = 1 AND co.state = 1 AND co.out_at > #{startTime} AND co.out_at #{endTime} WHERE tu.rider_open_id IS NOT NULL -- 筛选骑手用户 GROUP BY tu.user_id UNION ALL -- 第二部分:商家数据(type=1) SELECT #{dayId}, tu.user_id, NULL, 1, 0, IFNULL(SUM(tor.shop_income_money), 0), -- 商家总收入(revenue) COUNT(tor.shop_income_money), -- 收入订单数(revenue_count) IFNULL(SUM(co.money), 0), -- 商家提现金额(shop_payouts) IFNULL(SUM(co.rate), 0), -- 商家提现手续费(shop_payouts_rates) COUNT(co.id), -- 商家提现次数(shop_payouts_count) NULL, NULL, NULL, -- 骑手提现字段(未使用) IFNULL(SUM(to1.pay_money), 0), -- 退款金额(refund_money) COUNT(to1.pay_money), -- 退款次数(refund_count) -- 未结算订单金额(end_money): IFNULL( ( SELECT SUM(to2.shop_income_money) FROM tb_order to2 WHERE to2.status = 4 AND to2.shop_id = gs.shop_id ) , 0), -- 系统赠送金额 - 系统扣除金额(sys_gift_amount): IFNULL( ( SELECT SUM(money) FROM user_money_details ud1 WHERE ud1.user_id = tu.user_id AND ud1.title LIKE '系统赠送%' AND ud1.create_time > #{startTime} AND ud1.create_time #{endTime} ) - ( SELECT SUM(money) FROM user_money_details ud2 WHERE ud2.user_id = tu.user_id AND ud2.title LIKE '系统扣除%' AND ud2.create_time > #{startTime} AND ud2.create_time #{endTime} ) , 0) AS gift_amount, -- 平台抽成金额(platform_rates): IFNULL(ROUND(SUM(tor.shop_income_money * (1 - IFNULL(gs.shop_rate, 1)) / IFNULL(gs.shop_rate, 1)), 2), 0), IFNULL(SUM(tor.shop_income_money), 0), -- 总收益(total_income) IFNULL(SUM(tor.pay_money), 0), -- 用户支付金额(pay_money) #{now}, #{now}, -- 创建和更新时间 IFNULL(MAX(um.money), 0) -- 商户余额(shop_balance) FROM tb_user tu LEFT JOIN goods_shop gs ON tu.user_id = gs.user_id -- 关联商家店铺 LEFT JOIN tb_order tor USE INDEX (tb_order_update_time_IDX) ON gs.shop_id = tor.shop_id AND tor.update_time > #{startTime} AND tor.update_time #{endTime} AND tor.status = 4 -- 订单状态:已完成 LEFT JOIN tb_order to1 USE INDEX (tb_order_update_time_IDX) ON gs.shop_id = to1.shop_id AND to1.update_time > #{startTime} AND to1.update_time #{endTime} AND to1.status IN (5, 8) -- 订单状态:退款/异常 LEFT JOIN cash_out co ON co.user_id = tu.user_id AND co.type = 2 AND co.state = 1 AND co.out_at > #{startTime} AND co.out_at #{endTime} LEFT JOIN user_money um ON um.user_id = tu.user_id -- 用户余额表 WHERE tu.admin_user_id IS NOT NULL -- 筛选商家用户 GROUP BY tu.user_id; INSERT INTO `tcwm2.5`.platform_bill (day_id, user_id, shop_name, `type`, start_money, revenue, revenue_count, shop_payouts, shop_payouts_rates, shop_payouts_count, rider_payouts, rider_payouts_rates, rider_payouts_count, refund_money, refund_count, end_money,sys_gift_amount, platform_rates,total_income,pay_money,create_time,update_time) select day_id,null,null,0,0,sum(if(type=1, revenue,0)),sum(if(type=1, revenue_count,0)), sum(if(type=1, shop_payouts ,0)),sum(if(type=1, shop_payouts_rates ,0)),sum(if(type=1, shop_payouts_count ,0)), sum(if(type=2, rider_payouts ,0)),sum(if(type=2, rider_payouts_rates ,0)),sum(if(type=2, rider_payouts_count ,0)), sum(if(type=1, refund_money ,0)),sum(if(type=1, refund_count ,0)),(select ifnull(sum(pay_money), 0) from tb_order where status in (3,4,6,7)),null, sum(if(type=1, platform_rates ,0)),null,null,max(create_time) ,max(update_time) from platform_bill pb where day_id =#{dayId}