MpMenuLogic.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /**
  3. * MpMenuLogic.php UTF-8
  4. * huosdk_mini_program
  5. *
  6. * @date : 2018/9/26 15:20
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HuoMp 1.0
  11. */
  12. namespace huoMpMsg\controller;
  13. use huolib\constant\WeiXinMenuConst;
  14. use huomp\model\common\CommonModel;
  15. use huoMpMsg\model\MpMenuModel;
  16. class MpMenuLogic extends CommonModel {
  17. /**
  18. * 获取菜单列表
  19. *
  20. * @param int $conf_id
  21. *
  22. * @return array
  23. */
  24. public function getMenu($conf_id) {
  25. $_map = [
  26. 'conf_id' => $conf_id,
  27. 'is_menu' => WeiXinMenuConst::IS_MENU_2,
  28. ];
  29. $_model = new MpMenuModel();
  30. $_order = 'list_order DESC';
  31. $_data = $_model->where($_map)->order($_order)->select();
  32. if (is_object($_data)) {
  33. $_data = $_data->toArray();
  34. }
  35. if (empty($_data)) {
  36. return [];
  37. }
  38. $_button = [];
  39. foreach ($_data as $_k => $_v) {
  40. if (empty($_v['parent_id'])) { //一级菜单
  41. $_button[$_v['id']] = empty($_button[$_v['id']]) ? $_v : array_merge($_button[$_v['id']], $_v);
  42. } else {
  43. $_button[$_v['parent_id']]['sub_button'][] = $_v;
  44. }
  45. }
  46. return $_button;
  47. }
  48. /**
  49. * 获取菜单数据用于提交微信
  50. *
  51. * @param $conf_id
  52. *
  53. * @return array
  54. */
  55. public function getMenuData($conf_id) {
  56. $_data = $this->getMenu($conf_id);
  57. $_button = [];
  58. foreach ($_data as $_k => $_v) {
  59. $_data = [];
  60. $_data['name'] = $_v['name'];
  61. if (empty($_v['sub_button'])) { //一级菜单
  62. $_data['type'] = $_v['type'];
  63. if (WeiXinMenuConst::MENU_TYPE_CLICK == $_data['type']) {
  64. $_data['key'] = $_v['key'];
  65. } elseif (WeiXinMenuConst::MENU_TYPE_VIEW == $_data['type']) {
  66. $_data['url'] = $_v['url'];
  67. } elseif (WeiXinMenuConst::MENU_TYPE_MP == $_data['type']) {
  68. $_data['appid'] = $_v['mini_app_id'];
  69. $_data['url'] = $_v['url'];
  70. $_data['pagepath'] = $_v['pagepath'];
  71. }
  72. } else {
  73. $_data['sub_button'] = [];
  74. foreach ($_v['sub_button'] as $_k2 => $_v2) {
  75. $_data2 = [];
  76. $_data2['name'] = $_v2['name'];
  77. $_data2['type'] = $_v2['type'];
  78. if (WeiXinMenuConst::MENU_TYPE_CLICK == $_data2['type']) {
  79. $_data2['key'] = $_v2['key'];
  80. } elseif (WeiXinMenuConst::MENU_TYPE_VIEW == $_data2['type']) {
  81. $_data2['url'] = $_v2['url'];
  82. } elseif (WeiXinMenuConst::MENU_TYPE_MP == $_data2['type']) {
  83. $_data2['appid'] = $_v2['mini_app_id'];
  84. $_data2['url'] = $_v2['url'];
  85. $_data2['pagepath'] = $_v2['pagepath'];
  86. }
  87. $_data['sub_button'][] = $_data2;
  88. }
  89. }
  90. $_button['button'][] = $_data;
  91. }
  92. return $_button;
  93. }
  94. /**
  95. * 获取一级菜单idname
  96. *
  97. * @param $conf_id
  98. *
  99. * @return array
  100. */
  101. public function getFirstLevel($conf_id) {
  102. $_map = [
  103. 'conf_id' => $conf_id,
  104. 'is_menu' => WeiXinMenuConst::IS_MENU_2,
  105. 'parent_id' => 0,
  106. ];
  107. $_arr = (new MpMenuModel())->where($_map)->column('name', 'id');
  108. return $_arr;
  109. }
  110. /**
  111. * 获取菜单个数
  112. *
  113. * @param $conf_id
  114. * @param int $parent_id
  115. *
  116. * @return int|string
  117. */
  118. public function getMenuCount($conf_id, $parent_id = 0) {
  119. $_map = [
  120. 'conf_id' => $conf_id,
  121. 'is_menu' => WeiXinMenuConst::IS_MENU_2,
  122. 'parent_id' => $parent_id,
  123. ];
  124. return (new MpMenuModel())->where($_map)->count('id');
  125. }
  126. /**
  127. * 获取一级菜单的子菜单数
  128. *
  129. * @param int $parent_id
  130. *
  131. * @return int|string
  132. */
  133. public function getSubMenuCount($parent_id = 0) {
  134. $_map = [
  135. 'is_menu' => WeiXinMenuConst::IS_MENU_2,
  136. 'parent_id' => $parent_id,
  137. ];
  138. return (new MpMenuModel())->where($_map)->count('id');
  139. }
  140. /**
  141. * 获取配置关键词列表
  142. *
  143. * @param int $conf_id
  144. *
  145. * @param array $_param
  146. * @param string $page
  147. *
  148. * @return array
  149. */
  150. public function getKeyList($conf_id, $_param = [], $page = '1,10') {
  151. $_rdata = ['count' => 0, 'list' => []];
  152. $_map = [
  153. 'conf_id' => $conf_id,
  154. 'is_menu' => WeiXinMenuConst::IS_MENU_1,
  155. 'key' => ['neq', '']
  156. ];
  157. if (!empty($_param['key'])) {
  158. $_map['key'] = $_param['key'];
  159. }
  160. $_model = new MpMenuModel();
  161. $_count = $_model->where($_map)->count('id');
  162. if (empty($_count)) {
  163. return $_rdata;
  164. }
  165. $_order = 'list_order DESC';
  166. $_data = $_model->where($_map)->order($_order)->page($page)->select();
  167. if (is_object($_data)) {
  168. $_data = $_data->toArray();
  169. }
  170. if (empty($_data)) {
  171. return $_rdata;
  172. }
  173. $_rdata['count'] = $_count;
  174. $_rdata['list'] = $_data;
  175. return $_rdata;
  176. }
  177. }