20261021-refund-permissions.sql 1.3 KB

12345678910111213141516
  1. -- Explicit comparison collation avoids MySQL 1267 across database/session defaults.
  2. -- Set the existing order-management parent menu ID before running.
  3. SET @refund_parent = NULL;
  4. START TRANSACTION;
  5. INSERT INTO cms_menu (title,menu_name,perms,type,path,order_by,parent_id,created_time,update_time)
  6. SELECT p.title,p.perms,p.perms,'button','',p.sort_num,m.id,NOW(),NOW()
  7. FROM (SELECT '人工退款' title,'order:refund' perms,1 sort_num UNION ALL SELECT '余额转原渠道退款','order:refundTransfer',2) p
  8. JOIN cms_menu m ON m.id=@refund_parent AND m.type<>'button'
  9. WHERE NOT EXISTS (SELECT 1 FROM cms_menu e WHERE e.perms = CONVERT(p.perms USING utf8mb4) COLLATE utf8mb4_unicode_ci);
  10. INSERT INTO cms_role_menu (role_id,menu_id,created_time,update_time)
  11. SELECT r.id,m.id,NOW(),NOW() FROM cms_role r JOIN cms_menu m ON m.perms IN ('order:refund','order:refundTransfer')
  12. WHERE r.role_name='root' AND NOT EXISTS (SELECT 1 FROM cms_role_menu e WHERE e.role_id=r.id AND e.menu_id=m.id);
  13. COMMIT;
  14. SELECT p.perms,m.id,IF(m.id IS NULL,'MISSING','OK') result
  15. FROM (SELECT 'order:refund' perms UNION ALL SELECT 'order:refundTransfer') p LEFT JOIN cms_menu m ON m.perms = CONVERT(p.perms USING utf8mb4) COLLATE utf8mb4_unicode_ci;
  16. -- Both rows must be OK. Assign other roles explicitly, refresh permissions and re-login.