SelfDefinedMenu.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Modules\OfficialAccount\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. class SelfDefinedMenu extends Model
  5. {
  6. protected $table = 'self_defined_menu';
  7. protected $fillable = ['distribution_channel_id','menu','status','is_generate'];
  8. public static function getMenu($distribution_channel_id,$filter=[]){
  9. $obj = self::where('distribution_channel_id',$distribution_channel_id);
  10. if(isset($filter['status']) && $filter['status']) {
  11. $obj->where('status',$filter['status']);
  12. }
  13. $menu = $obj->first();
  14. \Log::info('getMenu:');\Log::info($menu);
  15. if(!empty($menu)){
  16. $menu->menu = json_decode($menu->menu);
  17. }
  18. \Log::info('getMenu2:');\Log::info($menu);
  19. return $menu;
  20. }
  21. public static function getMenuFormated($distribution_channel_id,$filter=[]) {
  22. $res = self::getMenu($distribution_channel_id,$filter);
  23. if($res){
  24. $menus_raw=$res->menu;
  25. $menus_raw = json_decode($menus_raw,true);
  26. \Log::info($menus_raw);
  27. $menus_raw = $menus_raw['buttons'];
  28. foreach ($menus_raw as $key =>$menu) {
  29. //如果有子菜单 则遍历子菜单
  30. if(isset($menu['sub_button']) && is_array($menu['sub_button']) && count($menu['sub_button'])>0) {
  31. foreach ($menu['sub_button'] as $k=> $each) {
  32. if($each['type'] == 'link' || $each['type']=='custom') {
  33. $menus_raw[$key]['sub_button'][$k]['url'] = trim($menus_raw[$key]['sub_button'][$k]['url']);
  34. $menus_raw[$key]['sub_button'][$k]['type'] = 'view';
  35. if(empty($each['key'])) {
  36. unset($menus_raw[$key]['sub_button'][$k]['key']);
  37. }
  38. }else{
  39. $menus_raw[$key]['sub_button'][$k]['type'] = 'click';
  40. if(isset($each['url'])){
  41. unset($menus_raw[$key]['sub_button'][$k]['url']);
  42. }
  43. }
  44. }
  45. }else {
  46. if($menu['type'] == 'link' || $menu['type']=='custom') {
  47. $menus_raw[$key]['type'] = 'view';
  48. $menus_raw[$key]['url'] = trim($menus_raw[$key]['url']);
  49. if(empty($each['key'])) {
  50. unset($menus_raw[$key]['key']);
  51. }
  52. }else{
  53. $menus_raw[$key]['type'] = 'click';
  54. if(isset($menu['url'])){
  55. unset($menus_raw[$key]['url']);
  56. }
  57. }
  58. }
  59. }
  60. return $menus_raw;
  61. }
  62. return false;
  63. }
  64. }