WebThemeConfigController.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Game\WebThemeConfig;
  4. use App\Game\WebRegionConfig;
  5. use Illuminate\Http\Request;
  6. class WebThemeConfigController
  7. {
  8. public function index(Request $request)
  9. {
  10. $list = WebThemeConfig::orderBy('id', 'asc')->paginate(40);
  11. return view('admin.web_theme_config.index', [
  12. 'list' => $list,
  13. ]);
  14. }
  15. public function add(Request $request)
  16. {
  17. if ($request->isMethod('post')) {
  18. $post = $request->post();
  19. // 处理 BindRegions,将字符串转换为数组
  20. if (isset($post['BindRegions']) && is_string($post['BindRegions'])) {
  21. $regionIds = array_filter(array_map('trim', explode(',', $post['BindRegions'])));
  22. $post['BindRegions'] = array_map('intval', $regionIds);
  23. }
  24. WebThemeConfig::create($post);
  25. // 更新对应 Region 的 ThemeKey
  26. if (!empty($post['BindRegions']) && !empty($post['ThemeKey'])) {
  27. WebRegionConfig::whereIn('id', $post['BindRegions'])
  28. ->update(['ThemeKey' => $post['ThemeKey']]);
  29. }
  30. return apiReturnSuc();
  31. }
  32. $regions = WebRegionConfig::orderBy('GroupID', 'asc')->orderBy('id', 'asc')->get();
  33. return view('admin.web_theme_config.add', ['regions' => $regions]);
  34. }
  35. public function edit(Request $request, $id)
  36. {
  37. $info = WebThemeConfig::findOrFail($id);
  38. if ($request->isMethod('post')) {
  39. $post = $request->post();
  40. // 处理 BindRegions
  41. if (isset($post['BindRegions']) && is_string($post['BindRegions'])) {
  42. $regionIds = array_filter(array_map('trim', explode(',', $post['BindRegions'])));
  43. $post['BindRegions'] = array_map('intval', $regionIds);
  44. }
  45. // 清除原有绑定的 Region 的 ThemeKey
  46. if (!empty($info->BindRegions)) {
  47. WebRegionConfig::whereIn('id', $info->BindRegions)
  48. ->update(['ThemeKey' => '']);
  49. }
  50. $info->update($post);
  51. // 更新新绑定的 Region 的 ThemeKey
  52. if (!empty($post['BindRegions']) && !empty($post['ThemeKey'])) {
  53. WebRegionConfig::whereIn('id', $post['BindRegions'])
  54. ->update(['ThemeKey' => $post['ThemeKey']]);
  55. }
  56. return apiReturnSuc();
  57. }
  58. $regions = WebRegionConfig::orderBy('GroupID', 'asc')->orderBy('id', 'asc')->get();
  59. return view('admin.web_theme_config.edit', [
  60. 'info' => $info,
  61. 'regions' => $regions
  62. ]);
  63. }
  64. public function delete($id)
  65. {
  66. $info = WebThemeConfig::findOrFail($id);
  67. // 清除绑定的 Region 的 ThemeKey
  68. if (!empty($info->BindRegions)) {
  69. WebRegionConfig::whereIn('id', $info->BindRegions)
  70. ->update(['ThemeKey' => '']);
  71. }
  72. $info->delete();
  73. return apiReturnSuc();
  74. }
  75. }