MenuModel.class.php 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184
  1. <?php
  2. /**
  3. * lionfish 商城系统
  4. *
  5. * ==========================================================================
  6. * @link http://www.liofis.com/
  7. * @copyright Copyright (c) 2015 liofis.com.
  8. * @license http://www.liofis.com/license.html License
  9. * ==========================================================================
  10. *
  11. * @author fish
  12. *
  13. */
  14. namespace Seller\Model;
  15. class MenuModel{
  16. /**
  17. * 获取 全部菜单带路由
  18. * @param bool $full 是否返回长URL
  19. * @return array
  20. */
  21. public function getMenu($full = false)
  22. {
  23. $return_menu = array();
  24. $return_submenu = array();
  25. $action_name = ACTION_NAME;
  26. if( !empty($action_name) )
  27. {
  28. $route = strtolower(CONTROLLER_NAME).'.'.ACTION_NAME;
  29. }else{
  30. $route = strtolower(CONTROLLER_NAME);
  31. }
  32. $routes = explode('.', $route);
  33. $top = (empty($routes[0]) ? 'shop' : $routes[0]);
  34. $allmenus = $this->shopMenu();
  35. if ($routes[0] == 'system') {
  36. $top = $routes[1];
  37. }
  38. if( in_array(strtolower(CONTROLLER_NAME) , array('weprogram','configpay','express','logistics','shipping','configindex','copyright') ))
  39. {
  40. $top = 'config';
  41. }
  42. if (!empty($allmenus)) {
  43. $submenu = $allmenus[$top];
  44. foreach ($allmenus as $key => $val) {
  45. $menu_item = array('route' => empty($val['route']) ? $key : $val['route'], 'text' => $val['title'], 'subtitle' => $val['subtitle']);
  46. if ($routes[0] == 'system') {
  47. //$menu_item['route'] = 'system.' . $menu_item['route'];
  48. }
  49. if( isset($val['items']) )
  50. {
  51. $menu_item['items'] = $val['items'];
  52. }
  53. if (!empty($val['index'])) {
  54. $menu_item['index'] = $val['index'];
  55. }
  56. if (!empty($val['param'])) {
  57. $menu_item['param'] = $val['param'];
  58. }
  59. if (!empty($val['icon'])) {
  60. $menu_item['icon'] = $val['icon'];
  61. if (!empty($val['iconcolor'])) {
  62. $menu_item['iconcolor'] = $val['iconcolor'];
  63. }
  64. }
  65. if ($this->verifyParam($val) ) {
  66. $menu_item['active'] = 1;
  67. }
  68. if ($full) {
  69. //$menu_item['url'] = U($menu_item['route'], !empty($menu_item['param']) && is_array($menu_item['param']) ? $menu_item['param'] : array());
  70. }
  71. $return_menu[] = $menu_item;
  72. }
  73. unset($key);
  74. unset($val);
  75. if (!empty($submenu)) {
  76. $return_submenu['subtitle'] = $submenu['subtitle'];
  77. if ($submenu['main']) {
  78. $return_submenu['route'] = $top;
  79. if (is_string($submenu['main'])) {
  80. //$return_submenu['route'] .= '.' . $submenu['main'];
  81. }
  82. }
  83. if (!empty($submenu['index'])) {
  84. //$return_submenu['route'] = $top . '.' . $submenu['index'];
  85. }
  86. if (!empty($submenu['items'])) {
  87. //var_dump($submenu['items']);die();
  88. foreach ($submenu['items'] as $i => $child) {
  89. if (!empty($child['top'])) {
  90. $top = '';
  91. }
  92. if (empty($child['items'])) {
  93. $return_submenu_default = $top . '';
  94. $route_second = $top;
  95. if (!empty($child['route'])) {
  96. if (!empty($top)) {
  97. $route_second .= '.';
  98. }
  99. $route_second .= $child['route'];
  100. }
  101. $return_menu_child = array('title' => $child['title'], 'route' => $child['route']);
  102. if (!empty($child['param'])) {
  103. $return_menu_child['param'] = $child['param'];
  104. }
  105. if (!empty($child['perm'])) {
  106. $return_menu_child['perm'] = $child['perm'];
  107. }
  108. if (!empty($child['permmust'])) {
  109. $return_menu_child['permmust'] = $child['permmust'];
  110. }
  111. if ($routes[0] == 'system') {
  112. //$return_menu_child['route'] = 'system.' . $return_menu_child['route'];
  113. }
  114. $addedit = false;
  115. if (!$child['route_must']) {
  116. if ((($return_menu_child['route'] . '.add') == $route) || (($return_menu_child['route'] . '.edit') == $route)) {
  117. $addedit = true;
  118. }
  119. }
  120. $extend = false;
  121. if (!empty($child['extend'])) {
  122. if ((($child['extend'] . '.add') == $route) || (($child['extend'] . '.edit') == $route) || ($child['extend'] == $route)) {
  123. $extend = true;
  124. }
  125. }
  126. else {
  127. if (!empty($child['extends']) && is_array($child['extends'])) {
  128. if (in_array($route, $child['extends']) || in_array($route . '.add', $child['extends']) || in_array($route . '.edit', $child['extends'])) {
  129. $extend = true;
  130. }
  131. }
  132. }
  133. if ($this->verifyParam($return_menu_child, false) ) {
  134. $return_menu_child['active'] = 1;
  135. }
  136. if ($full) {
  137. //$return_menu_child['url'] = U($return_menu_child['route'], !empty($return_menu_child['param']) && is_array($return_menu_child['param']) ? $return_menu_child['param'] : array());
  138. }
  139. //if (!empty($return_menu_child['permmust']) && !$this->cv($return_menu_child['permmust'])) {
  140. // continue;
  141. //}
  142. //if (!$this->cv($return_menu_child['route'])) {
  143. // if (empty($return_menu_child['perm']) || !$this->cv($return_menu_child['perm'])) {
  144. // continue;
  145. // }
  146. //}
  147. $return_submenu['items'][] = $return_menu_child;
  148. unset($return_submenu_default);
  149. unset($route_second);
  150. }
  151. else {
  152. $return_menu_child = array(
  153. 'title' => $child['title'],
  154. 'items' => array()
  155. );
  156. foreach ($child['items'] as $ii => $three) {
  157. $return_submenu_default = $top . '';
  158. $route_second = 'main';
  159. if (!empty($child['route'])) {
  160. $return_submenu_default = $top . '.' . $child['route'];
  161. $route_second = $child['route'];
  162. }
  163. $return_submenu_three = array('title' => $three['title']);
  164. $return_submenu_three['route'] = $three['route'];
  165. if ($this->verifyParam($three,false) ) {
  166. $return_submenu_three['active'] = 1;
  167. }
  168. if (!empty($three['route'])) {
  169. if (!empty($child['route'])) {
  170. if (!empty($three['route_ns'])) {
  171. //$return_submenu_three['route'] = $top . '.' . $three['route'];
  172. }
  173. else {
  174. // $return_submenu_three['route'] = $top . '.' . $child['route'] . '.' . $three['route'];
  175. }
  176. }
  177. else {
  178. if (!empty($three['top'])) {
  179. //$return_submenu_three['route'] = $three['route'];
  180. }
  181. else {
  182. //$return_submenu_three['route'] = $top . '.' . $three['route'];
  183. }
  184. $route_second = $three['route'];
  185. }
  186. }
  187. else {
  188. //$return_submenu_three['route'] = $return_submenu_default;
  189. }
  190. if (!empty($three['param'])) {
  191. $return_submenu_three['param'] = $three['param'];
  192. }
  193. if (!empty($three['perm'])) {
  194. $return_submenu_three['perm'] = $three['perm'];
  195. }
  196. if (!empty($three['permmust'])) {
  197. $return_submenu_three['permmust'] = $three['permmust'];
  198. }
  199. if ($routes[0] == 'system') {
  200. ///$return_submenu_three['route'] = 'system.' . $return_submenu_three['route'];
  201. }
  202. $addedit = false;
  203. if (!$three['route_must']) {
  204. if ((($return_submenu_three['route'] . '.add') == $route) || (($return_submenu_three['route'] . '.edit') == $route)) {
  205. $addedit = true;
  206. }
  207. }
  208. $extend = false;
  209. if (!empty($three['extend'])) {
  210. if ((($three['extend'] . '.add') == $route) || (($three['extend'] . '.edit') == $route) || ($three['extend'] == $route)) {
  211. $extend = true;
  212. }
  213. }
  214. else {
  215. if (!empty($three['extends']) && is_array($three['extends'])) {
  216. if (in_array($route, $three['extends']) || in_array($route . '.add', $three['extends']) || in_array($route . '.edit', $three['extends'])) {
  217. $extend = true;
  218. }
  219. }
  220. }
  221. if ($three['route_in'] && strexists($route, $return_submenu_three['route'])) {
  222. $return_menu_child['active'] = 1;
  223. $return_submenu_three['active'] = 1;
  224. }
  225. else {
  226. if (($return_submenu_three['route'] == $route) || $addedit || $extend) {
  227. //if ($this->verifyParam($three)) {
  228. $return_menu_child['active'] = 1;
  229. $return_submenu_three['active'] = 1;
  230. //}
  231. }
  232. }
  233. if (!empty($child['extend'])) {
  234. if ($child['extend'] == $route) {
  235. $return_menu_child['active'] = 1;
  236. }
  237. }
  238. else {
  239. if (is_array($child['extends'])) {
  240. if (in_array($route, $child['extends'])) {
  241. $return_menu_child['active'] = 1;
  242. }
  243. }
  244. }
  245. if ($full) {
  246. //$return_submenu_three['url'] = U($return_submenu_three['route'], !empty($return_submenu_three['param']) && is_array($return_submenu_three['param']) ? $return_submenu_three['param'] : array());
  247. }
  248. // if (!empty($return_submenu_three['permmust']) && !$this->cv($return_submenu_three['permmust'])) {
  249. // continue;
  250. // }
  251. // if (!$this->cv($return_submenu_three['route'])) {
  252. // if (empty($return_submenu_three['perm']) || !$this->cv($return_submenu_three['perm'])) {
  253. // continue;
  254. // }
  255. //}
  256. $return_menu_child['items'][] = $return_submenu_three;
  257. }
  258. if (!empty($child['items']) && empty($return_menu_child['items'])) {
  259. continue;
  260. }
  261. $return_menu_child['is_show_list'] = $child['is_hide_child'];
  262. $return_submenu['items'][] = $return_menu_child;
  263. unset($ii);
  264. unset($three);
  265. unset($route_second);
  266. }
  267. }
  268. }
  269. }
  270. }
  271. return array('menu' => $return_menu, 'submenu' => $return_submenu, 'shopmenu' => array());
  272. }
  273. protected function verifyParam($item = array(),$is_first = true)
  274. {
  275. $action_name = ACTION_NAME;
  276. if( !empty($action_name) )
  277. {
  278. $route = strtolower(CONTROLLER_NAME).'/'.ACTION_NAME;
  279. }else{
  280. $route = strtolower(CONTROLLER_NAME);
  281. }
  282. $return = false;
  283. $item_controller_action = $item['route'];
  284. $item_controller_action_arr = explode('/', $item_controller_action);
  285. if($is_first)
  286. {
  287. //weprogram
  288. //weprogram array('weprogram','configpay','configindex','copyright')
  289. //特殊菜单
  290. if( in_array(strtolower(CONTROLLER_NAME) , array('weprogram','configpay','configindex','copyright') ))
  291. {
  292. if($item_controller_action_arr[0] == 'config')
  293. {
  294. $return = true;
  295. }
  296. }
  297. //一级菜单
  298. if($item_controller_action_arr[0] == strtolower(CONTROLLER_NAME))
  299. {
  300. $return = true;
  301. }
  302. //var_dump($item_controller_action_arr[0] , strtolower(CONTROLLER_NAME) );die();
  303. }else{
  304. if($item_controller_action == $route)
  305. {
  306. $return = true;
  307. }
  308. }
  309. /**
  310. array(5) { ["title"]=> string(6) "概况" ["icon"]=> string(5) "index"
  311. ["subtitle"]=> string(12) "概况信息" ["route"]=> string(5) "index"
  312. ["items"]=> array(1) { [0]=> array(2) { ["title"]=> string(6) "统计" ["route"]=> string(5) "index" } } }
  313. **/
  314. return $return;
  315. }
  316. /**
  317. * 定义 商城 菜单
  318. * @return array
  319. */
  320. public function shopMenu()
  321. {
  322. $shopmenu_2 = array(
  323. 'index' => array(
  324. 'title' => '概况',
  325. 'icon' => 'index',
  326. 'subtitle' => '概况信息',
  327. 'route' => 'index/analys',
  328. 'items' => array(
  329. array('title' => '统计', 'route' => 'index/analys'),
  330. )
  331. ),
  332. 'goods' => array(
  333. 'title' => '商品',
  334. 'subtitle' => '商品管理',
  335. 'icon' => 'goods',
  336. 'route' => 'goods/index',
  337. 'items' => array(
  338. array('title' => '商品列表', 'route' => 'goods/index'),
  339. array('title' => '商品分类', 'route' => 'goods/goodscategory'),
  340. array('title' => '商品规格', 'route' => 'goods/goodsspec'),
  341. array('title' => '商品标签', 'route' => 'goods/goodstag'),
  342. //array('title' => '虚拟评价', 'route' => 'goods/goodsvircomment'),
  343. //array('title' => '商品设置', 'route' => 'goods/config'),
  344. array(
  345. 'title' => '商品设置',
  346. 'route' => 'goods/config',
  347. 'items' => array(
  348. array('title' => '基本设置', 'route' => 'goods/config', 'desc' => ''),
  349. array('title' => '统一时间', 'route' => 'goods/settime', 'desc' => ''),
  350. array('title' => '工商资质', 'route' => 'goods/industrial', 'desc' => '')
  351. ),
  352. ),
  353. )
  354. ),
  355. 'order' => array(
  356. 'title' => '订单',
  357. 'subtitle' => '订单管理',
  358. 'icon' => 'order',
  359. 'route' => 'order/index',
  360. 'items' => array(
  361. array('title' => '订单列表', 'route' => 'order/index', 'desc' => ''),
  362. array('title' => '批量发货', 'route' => 'order/ordersendall', 'desc' => ''),
  363. array(
  364. 'title' => '配送管理',
  365. 'route' => 'orderdistribution/index',
  366. 'items' => array(
  367. array('title' => '配送员管理', 'route' => 'orderdistribution/index', 'desc' => ''),
  368. //array('title' => '配送订单管理', 'route' => 'orderdistribution/orderlist', 'desc' => ''),
  369. array('title' => '配送设置', 'route' => 'orderdistribution/distributionconfig', 'desc' => ''),
  370. ),
  371. ),
  372. array(
  373. 'title' => '提现管理',
  374. 'route' => 'orderdistribution/withdrawallist',
  375. 'items' => array(
  376. array('title' => '提现列表', 'route' => 'orderdistribution/withdrawallist', 'desc' => ''),
  377. array('title' => '提现设置', 'route' => 'orderdistribution/withdrawalconfig', 'desc' => ''),
  378. ),
  379. ),
  380. array(
  381. 'title' => '售后管理',
  382. 'route' => 'order/orderaftersales',
  383. 'items' => array(
  384. array('title' => '售后订单', 'route' => 'order/orderaftersales', 'desc' => ''),
  385. )
  386. ),
  387. array(
  388. 'title' => '评价管理',
  389. 'route' => 'order/ordercomment',
  390. 'items' => array(
  391. array('title' => '评价列表', 'route' => 'order/ordercomment', 'desc' => ''),
  392. array('title' => '评价有礼', 'route' => 'order/ordercomment_gift', 'desc' => ''),
  393. array('title' => '评价设置', 'route' => 'order/ordercomment_config', 'desc' => '')
  394. ),
  395. ),
  396. array('title' => '订单设置', 'route' => 'order/config', 'desc' => ''),
  397. array(
  398. 'title' => '打印机设置',
  399. 'route' => 'printer/index',
  400. 'items' => array(
  401. array('title' => '打印机列表', 'route' => 'printer/index', 'desc' => ''),
  402. array('title' => '打印机设置', 'route' => 'printer/config', 'desc' => '')
  403. ),
  404. ),
  405. ),
  406. ),
  407. 'user' => array(
  408. 'title' => '会员',
  409. 'subtitle' => '会员管理',
  410. 'icon' => 'user',
  411. 'route' => 'user/index',
  412. 'items' => array(
  413. array('title' => '会员列表', 'route' => 'user/index', 'desc' => ''),
  414. array('title' => '虚拟会员', 'route' => 'user/userjia', 'desc' => ''),
  415. array('title' => '会员设置', 'route' => 'user/config', 'desc' => ''),
  416. array('title' => '会员分组', 'route' => 'user/usergroup', 'desc' => ''),
  417. array('title' => '会员等级', 'route' => 'user/userlevel', 'desc' => ''),
  418. array(
  419. 'title' => '会员分销',
  420. 'route' => 'distribution/distribution',
  421. 'items' => array(
  422. array('title' => '分销列表', 'route' => 'distribution/distribution', 'desc' => ''),
  423. array('title' => '订单管理', 'route' => 'distribution/distributionorder', 'desc' => ''),
  424. array('title' => '分销设置', 'route' => 'distribution/config', 'desc' => ''),
  425. array('title' => '海报设置', 'route' => 'distribution/qrcodeconfig', 'desc' => ''),
  426. array('title' => '提现列表', 'route' => 'distribution/withdrawallist', 'desc' => ''),
  427. array('title' => '提现设置', 'route' => 'distribution/withdraw_config', 'desc' => ''),
  428. )
  429. ),
  430. )
  431. ),
  432. 'communityhead' => array(
  433. 'title' => '团长',
  434. 'subtitle' => '团长管理',
  435. 'icon' => 'communityhead',
  436. 'route' => 'communityhead/index',
  437. 'items' => array(
  438. array('title' => '团长列表', 'route' => 'communityhead/index', 'desc' => ''),
  439. array('title' => '团长分组', 'route' => 'communityhead/usergroup', 'desc' => ''),
  440. array('title' => '团长等级', 'route' => 'communityhead/headlevel', 'desc' => ''),
  441. array('title' => '团长设置', 'route' => 'communityhead/config', 'desc' => ''),
  442. array(
  443. 'title' => '提现管理',
  444. 'route' => 'communityhead/distribulist',
  445. 'items' => array(
  446. array('title' => '提现列表', 'route' => 'communityhead/distribulist', 'desc' => ''),
  447. array('title' => '提现设置', 'route' => 'communityhead/distributionpostal', 'desc' => ''),
  448. )
  449. ),
  450. ),
  451. ),
  452. 'salesroom' => array(
  453. 'title' => '门店',
  454. 'subtitle' => '门店管理',
  455. 'icon' => 'supply',
  456. 'route' => 'salesroom/index',
  457. 'items' => array(
  458. array('title' => '门店列表', 'route' => 'salesroom/index', 'desc' => ''),
  459. array('title' => '核销人员', 'route' => 'salesroom_member/index', 'desc' => ''),
  460. array('title' => '核销订单记录', 'route' => 'salesroom_order/index', 'desc' => ''),
  461. ),
  462. ),
  463. // 'supply' => array(
  464. // 'title' => '供应商',
  465. // 'subtitle' => '供应商管理',
  466. // 'icon' => 'supply',
  467. // 'route' => 'supply/index',
  468. // 'items' => array(
  469. // array('title' => '供应商列表', 'route' => 'supply/index', 'desc' => ''),
  470. // array('title' => '提现申请', 'route' => 'supply/admintixianlist', 'desc' => ''),
  471. // array('title' => '提现设置', 'route' => 'supply/distributionpostal', 'desc' => ''),
  472. //
  473. // //array('title' => '供应商设置', 'route' => 'supply/config', 'desc' => ''),
  474. //
  475. // array(
  476. // 'title' => '供应商设置',
  477. // 'route' => 'supply/baseconfig',
  478. // 'items' => array(
  479. // array('title' => '基本设置', 'route' => 'supply/baseconfig', 'desc' => ''),
  480. // array('title' => '申请页面内容', 'route' => 'supply/config', 'desc' => ''),
  481. // array('title' => '供应商权限设置', 'route' => 'supply/authority', 'desc' => '')
  482. // ),
  483. // ),
  484. // ),
  485. // ),
  486. 'group' => array(
  487. 'title' => '拼团',
  488. 'subtitle' => '拼团管理',
  489. 'icon' => 'pin',
  490. 'route' => 'group/goods',
  491. 'items' => array(
  492. array('title' => '商品管理', 'route' => 'group/goods', 'desc' => ''),
  493. array('title' => '商品分类', 'route' => 'group/goodscategory', 'desc' => ''),
  494. array('title' => '商品规格', 'route' => 'group/goodsspec', 'desc' => ''),
  495. array('title' => '商品标签', 'route' => 'group/goodstag', 'desc' => ''),
  496. array('title' => '虚拟评价', 'route' => 'group/goodsvircomment', 'desc' => ''),
  497. array('title' => '拼团管理', 'route' => 'group/pintuan', 'desc' => ''),
  498. array('title' => '订单管理', 'route' => 'group/orderlist', 'desc' => ''),
  499. array('title' => '批量发货', 'route' => 'group/ordersendall', 'desc' => ''),
  500. array('title' => '售后管理', 'route' => 'group/orderaftersales', 'desc' => ''),
  501. array('title' => '幻灯片', 'route' => 'group/slider', 'desc' => ''),
  502. array('title' => '拼团设置', 'route' => 'group/config', 'desc' => ''),
  503. array('title' => '拼团佣金', 'route' => 'group/pincommiss', 'desc' => ''),
  504. array('title' => '提现列表', 'route' => 'group/withdrawallist', 'desc' => ''),
  505. array('title' => '提现设置', 'route' => 'group/withdraw_config', 'desc' => ''),
  506. )
  507. ),
  508. // 'generalmall' => array(
  509. // 'title' => '仅快递',
  510. // 'subtitle' => '仅快递管理',
  511. // 'icon' => 'store',
  512. // 'route' => 'generalmall/slider',
  513. // 'items' => array(
  514. // array('title' => '幻灯片', 'route' => 'generalmall/slider', 'desc' => ''),
  515. // array('title' => '导航图标', 'route' => 'generalmall/navigat', 'desc' => ''),
  516. // ),
  517. // ),
  518. 'article' => array(
  519. 'title' => '文章',
  520. 'subtitle' => '文章管理',
  521. 'icon' => 'discovery',
  522. 'route' => 'article/index',
  523. 'items' => array(
  524. array('title' => '文章列表', 'route' => 'article/index', 'desc' => ''),
  525. )
  526. ),
  527. 'marketing' => array(
  528. 'title' => '营销',
  529. 'subtitle' => '营销活动',
  530. 'icon' => 'marketing',
  531. 'route' => 'marketing/coupon',
  532. 'items' => array(
  533. array(
  534. 'title' => '优惠券管理',
  535. 'route' => 'marketing/coupon',
  536. 'items' => array(
  537. array('title' => '优惠券', 'route' => 'marketing/coupon', 'desc' => ''),
  538. array('title' => '优惠券分类', 'route' => 'marketing/category', 'desc' => ''),
  539. array('title' => '手动发送', 'route' => 'marketing/send', 'desc' => ''),
  540. )
  541. ),
  542. array('title' => '满减', 'route' => 'marketing/fullreduction', 'desc' => ''),
  543. array(
  544. 'title' => '积分',
  545. 'route' => 'marketing/signinreward',
  546. 'items' => array(
  547. array('title' => '积分签到', 'route' => 'marketing/signinreward', 'desc' => ''),
  548. array('title' => '积分商品', 'route' => 'points/goods', 'desc' => ''),
  549. array('title' => '兑换订单', 'route' => 'points/order', 'desc' => ''),
  550. array('title' => '积分设置', 'route' => 'marketing/points', 'desc' => ''),
  551. )
  552. ),
  553. array('title' => '弹窗广告', 'route' => 'popadv/index', 'desc' => ''),
  554. array('title' => '广告图片', 'route' => 'advimg/add', 'desc' => ''),
  555. array('title' => '整点秒杀', 'route' => 'marketing/seckill', 'desc' => ''),
  556. array(
  557. 'title' => '菜谱',
  558. 'route' => 'recipe/index',
  559. 'items' => array(
  560. array('title' => '菜谱管理', 'route' => 'recipe/index', 'desc' => ''),
  561. array('title' => '菜谱分类', 'route' => 'recipe/category', 'desc' => ''),
  562. array('title' => '幻灯片', 'route' => 'recipe/slider', 'desc' => ''),
  563. array('title' => '菜谱设置', 'route' => 'recipe/config', 'desc' => ''),
  564. )
  565. ),
  566. array(
  567. 'title' => '群接龙',
  568. 'route' => 'solitaire/index',
  569. 'items' => array(
  570. array('title' => '活动管理', 'route' => 'solitaire/index', 'desc' => ''),
  571. array('title' => '活动设置', 'route' => 'solitaire/config', 'desc' => ''),
  572. )
  573. ),
  574. array(
  575. 'title' => '充值',
  576. 'route' => 'marketing/recharge',
  577. 'items' => array(
  578. array('title' => '充值设置', 'route' => 'marketing/recharge_config', 'desc' => ''),
  579. array('title' => '充值说明', 'route' => 'marketing/explain', 'desc' => ''),
  580. array('title' => '充值流水', 'route' => 'marketing/recharge_diary', 'desc' => ''),
  581. )
  582. ),
  583. array('title' => '主题活动', 'route' => 'marketing/special', 'desc' => ''),
  584. array(
  585. 'title' => '付费会员卡',
  586. 'route' => 'vipcard/index',
  587. 'items' => array(
  588. array('title' => '会员卡', 'route' => 'vipcard/index', 'desc' => ''),
  589. array('title' => '会员权益', 'route' => 'vipcard/equity', 'desc' => ''),
  590. array('title' => '购买记录', 'route' => 'vipcard/order', 'desc' => ''),
  591. array('title' => '会员卡设置', 'route' => 'vipcard/config', 'desc' => ''),
  592. )
  593. ),
  594. array(
  595. 'title' => '预售活动',
  596. 'route' => 'presale/index',
  597. 'items' => array(
  598. array('title' => '商品管理', 'route' => 'presale/index', 'desc' => ''),
  599. array('title' => '幻灯片', 'route' => 'presale/slider', 'desc' => ''),
  600. array('title' => '预售订单', 'route' => 'presale/order', 'desc' => ''),
  601. array('title' => '预售统计', 'route' => 'presale/statistics', 'desc' => ''),
  602. array('title' => '活动设置', 'route' => 'presale/config', 'desc' => ''),
  603. )
  604. ),
  605. array(
  606. 'title' => '店铺装修',
  607. 'route' => 'shopdiy/index',
  608. 'items' => array(
  609. array('title' => '首页装修', 'route' => 'shopdiy/index', 'desc' => ''),
  610. //array('title' => '模板选择', 'route' => 'shopdiy/templateChoose', 'desc' => '')
  611. )
  612. ),
  613. array(
  614. 'title' => '邀新有礼',
  615. 'route' => 'invitegift/config',
  616. 'items' => array(
  617. array('title' => '邀新有礼', 'route' => 'invitegift/config', 'desc' => ''),
  618. array('title' => '邀新记录', 'route' => 'invitegift/record', 'desc' => ''),
  619. array('title' => '邀新海报', 'route' => 'invitegift/poster_background', 'desc' => '')
  620. )
  621. ),
  622. array(
  623. 'title' => '礼品卡',
  624. 'route' => 'virtualcard/index',
  625. 'items' => array(
  626. array('title' => '礼品卡管理', 'route' => 'virtualcard/index', 'desc' => ''),
  627. array('title' => '兑换码管理', 'route' => 'virtualcard/exchange_code', 'desc' => ''),
  628. array('title' => '线下兑换码', 'route' => 'virtualcard/exchange_offline', 'desc' => ''),
  629. array('title' => '订单管理', 'route' => 'virtualcard/orderlist', 'desc' => ''),
  630. array('title' => '兑换记录', 'route' => 'virtualcard/exchangerecord', 'desc' => ''),
  631. array('title' => '活动设置', 'route' => 'virtualcard/config', 'desc' => ''),
  632. )
  633. ),
  634. )
  635. ),
  636. 'application' => array(
  637. 'title' => '应用',
  638. 'subtitle' => '应用管理',
  639. 'icon' => 'application',
  640. 'route' => 'application/index',
  641. 'items' => array(
  642. array('title' => '应用管理', 'route' => 'application/index', 'desc' => ''),
  643. ),
  644. ),
  645. 'delivery' => array(
  646. 'title' => '配送',
  647. 'subtitle' => '配送单管理',
  648. 'icon' => 'delivery2',
  649. 'route' => 'delivery/delivery',
  650. 'items' => array(
  651. array('title' => '配送单管理', 'route' => 'delivery/index', 'desc' => ''),
  652. array('title' => '生成配送单', 'route' => 'delivery/get_list', 'desc' => ''),
  653. array('title' => '配送路线', 'route' => 'delivery/line', 'desc' => ''),
  654. array('title' => '配送司机', 'route' => 'delivery/clerk', 'desc' => ''),
  655. array('title' => '设置', 'route' => 'delivery/config', 'desc' => ''),
  656. ),
  657. ),
  658. 'reports' => array(
  659. 'title' => '数据',
  660. 'subtitle' => '数据统计',
  661. 'icon' => 'reports',
  662. 'route' => 'reports/index',
  663. 'items' => array(
  664. array('title' => '营业数据', 'route' => 'reports/index', 'desc' => ''),
  665. array('title' => '数据统计', 'route' => 'reports/datastatics', 'desc' => ''),
  666. array('title' => '毛利统计', 'route' => 'reports/goodstatics', 'desc' => ''),
  667. array('title' => '团长统计', 'route' => 'reports/communitystatics', 'desc' => ''),
  668. )
  669. ),
  670. 'perm' => array(
  671. 'title' => '权限',
  672. 'subtitle' => '权限管理',
  673. 'icon' => 'perm',
  674. 'route' => 'perm/index',
  675. 'items' => array(
  676. array('title' => '角色管理', 'route' => 'perm/index', 'desc' => ''),
  677. array('title' => '用户管理', 'route' => 'perm/user', 'desc' => ''),
  678. ),
  679. ),
  680. 'attachment' => array(
  681. 'title' => '附件',
  682. 'subtitle' => '附件管理',
  683. 'icon' => 'attachment',
  684. 'route' => 'attachment/index',
  685. 'items' => array(
  686. array('title' => '附件设置', 'route' => 'attachment/index', 'desc' => ''),
  687. ),
  688. ),
  689. 'config' => array(
  690. 'title' => '设置',
  691. 'subtitle' => '设置',
  692. 'icon' => 'setup',
  693. 'route' => 'config/index',
  694. 'items' => array(
  695. array('title' => '基本设置', 'route' => 'config/index', 'desc' => ''),
  696. array('title' => '图片设置', 'route' => 'config/picture', 'desc' => ''),
  697. array(
  698. 'title' => '小程序设置',
  699. 'route' => 'weprogram/index',
  700. 'items' => array(
  701. array('title' => '参数设置', 'route' => 'weprogram/index', 'desc' => ''),
  702. array('title' => '模板消息', 'route' => 'weprogram/templateconfig', 'desc' => ''),
  703. array('title' => '订阅消息', 'route' => 'weprogram/subscribetemplateconfig', 'desc' => ''),
  704. array('title' => '底部菜单', 'route' => 'weprogram/tabbar', 'desc' => ''),
  705. )
  706. ),
  707. // array('title' => '证书设置', 'route' => 'configpay/index', 'desc' => ''),
  708. array(
  709. 'title' => '首页设置',
  710. 'route' => 'configindex/slider',
  711. 'items' => array(
  712. array('title' => '幻灯片', 'route' => 'configindex/slider', 'desc' => ''),
  713. array('title' => '分类广告', 'route' => 'configindex/category', 'desc' => ''),
  714. array('title' => '公告', 'route' => 'configindex/notice', 'desc' => ''),
  715. array('title' => '导航图标', 'route' => 'configindex/navigat', 'desc' => ''),
  716. array('title' => '公告设置', 'route' => 'configindex/noticesetting', 'desc' => ''),
  717. array('title' => '抢购切换', 'route' => 'configindex/qgtab', 'desc' => ''),
  718. array('title' => '图片魔方', 'route' => 'configindex/cube', 'desc' => ''),
  719. array('title' => '视频', 'route' => 'configindex/video', 'desc' => ''),
  720. )
  721. ),
  722. array('title' => '小程序路径', 'route' => 'config/links', 'desc' => ''),
  723. array(
  724. 'title' => '物流设置',
  725. 'route' => 'shipping/templates',
  726. 'items' => array(
  727. array('title' => '运费模板', 'route' => 'shipping/templates', 'desc' => ''),
  728. array('title' => '物流接口', 'route' => 'logistics/inface', 'desc' => ''),
  729. //array('title' => '地区管理', 'route' => 'config/logistics.area', 'desc' => ''),
  730. array('title' => '快递方式', 'route' => 'express/config', 'desc' => ''),
  731. array('title' => '同城配送', 'route' => 'express/localtownconfig', 'desc' => ''),
  732. array('title' => '订单推送', 'route' => 'express/ordersendconfig', 'desc' => ''),
  733. array('title' => '配送方式', 'route' => 'express/deconfig', 'desc' => ''),
  734. )
  735. ),
  736. array(
  737. 'title' => '电子面单',
  738. 'route' => 'logistics/index',
  739. 'items' => array(
  740. array('title' => '面单列表', 'route' => 'logistics/index', 'desc' => ''),
  741. array('title' => '面单设置', 'route' => 'logistics/inface', 'desc' => ''),
  742. )
  743. ),
  744. array(
  745. 'title' => '个人中心',
  746. 'route' => 'copyright/index',
  747. 'is_hide_child' => 2,
  748. 'items' => array(
  749. array('title' => '版权说明', 'route' => 'copyright/index', 'desc' => ''),
  750. array('title' => '关于我们', 'route' => 'copyright/about', 'desc' => ''),
  751. array('title' => '图标设置', 'route' => 'copyright/icon', 'desc' => ''),
  752. )
  753. ),
  754. array(
  755. 'title' => '小程序直播',
  756. 'route' => 'wxlive/index',
  757. 'is_hide_child' => 2,
  758. 'items' => array(
  759. array('title' => '直播间管理', 'route' => 'wxlive/index', 'desc' => ''),
  760. array('title' => '设置', 'route' => 'wxlive/setting', 'desc' => ''),
  761. )
  762. ),
  763. //array('title' => '后台账户', 'route' => 'copyright/account', 'desc' => ''),
  764. array('title' => '系统日志', 'route' => 'operatelog/index', 'desc' => ''),
  765. )
  766. ),
  767. );
  768. if(SELLERUID != 1)
  769. {
  770. $seller_info = M('seller')->field('s_role_id')->where( array('s_id' => SELLERUID ) )->find();
  771. $perm_role = M('lionfish_comshop_perm_role')->where( array('id' => $seller_info['s_role_id']) )->find();
  772. //marketing,marketing.marketing.recharge_diary,marketing.vipcard.order
  773. $perms_str = $perm_role['perms2'];
  774. // marketing.explain
  775. $shopmenu3 = array();
  776. foreach($shopmenu_2 as $key => $val)
  777. {
  778. $j = 0;
  779. $is_in =false;
  780. $new_val = $val;
  781. $get_items = array();
  782. $first_route = '';
  783. foreach($val['items'] as $kk => $vv)
  784. {
  785. //route
  786. $new_rt = str_replace('/','.', $vv['route']);
  787. $is_in_child = false;
  788. if( isset($vv['items']) && !empty($vv['items']) )
  789. {
  790. $ij =0;
  791. $tp_items = array();
  792. foreach( $vv['items'] as $tk => $tv )
  793. {
  794. $new_rt_tk = str_replace('/','.', $tv['route']);
  795. if( strpos($perms_str, '.'.$new_rt_tk) !== false )
  796. {
  797. $tp_items[$tk] = $tv;
  798. $is_in_child = true;
  799. if( $ij == 0 )
  800. {
  801. $first_route = $tv['route'];
  802. }
  803. $ij++;
  804. }
  805. }
  806. if( !empty($tp_items) )
  807. {
  808. $vv['route'] = $first_route;
  809. $vv['items'] = $tp_items;
  810. }
  811. }
  812. if( strpos($perms_str, '.'.$new_rt) !== false )
  813. {
  814. $get_items[$kk] = $vv;
  815. $is_in = true;
  816. }else{
  817. if(isset($vv['items']) && !empty($vv['items']) && $is_in_child)
  818. {
  819. $get_items[$kk] = $vv;
  820. $is_in = true;
  821. }
  822. continue;
  823. }
  824. if( $j == 0 )
  825. {
  826. $first_route = $vv['route'];
  827. }
  828. $j++;
  829. }
  830. if( $is_in )
  831. {
  832. $new_val['route'] = $first_route;
  833. $new_val['items'] = $get_items;
  834. $shopmenu3[$key] = $new_val;
  835. }
  836. }
  837. $shopmenu_2 = $shopmenu3;
  838. }
  839. if (defined('ROLE') && ROLE == 'agenter' ) {
  840. $supper_info = get_agent_logininfo();
  841. $shopmenu_2 = array();
  842. $shopmenu_2['index'] = array(
  843. 'title' => '概况',
  844. 'icon' => 'index',
  845. 'subtitle' => '概况信息',
  846. 'route' => 'index/analys',
  847. 'items' => array(
  848. array('title' => '统计', 'route' => 'index/analys')
  849. )
  850. );
  851. $shopmenu_2['goods'] = array(
  852. 'title' => '商品',
  853. 'subtitle' => '商品管理',
  854. 'icon' => 'goods',
  855. 'route' => 'goods/index',
  856. 'items' => array(
  857. array('title' => '商品列表', 'route' => 'goods/index'),
  858. array(
  859. 'title' => '商品设置',
  860. 'route' => '',
  861. 'items' => array(
  862. array('title' => '统一时间', 'route' => 'goods/settime', 'desc' => '')
  863. ),
  864. ),
  865. )
  866. );
  867. if($supper_info['type'] == 1)
  868. {
  869. $is_open_supply_print= D('Home/Front')->get_config_by_name('is_open_supply_print' );
  870. if(!empty($is_open_supply_print)){
  871. $shopmenu_2['order'] = array(
  872. 'title' => '订单',
  873. 'subtitle' => '订单管理',
  874. 'icon' => 'order',
  875. 'route' => 'order/index',
  876. 'items' => array(
  877. array('title' => '订单列表', 'route' => 'order/index', 'desc' => ''),
  878. array('title' => '批量发货', 'route' => 'order/ordersendall', 'desc' => ''),
  879. array(
  880. 'title' => '售后管理',
  881. 'route' => '',
  882. 'items' => array(
  883. array('title' => '售后订单', 'route' => 'order/orderaftersales', 'desc' => ''),
  884. )
  885. ),
  886. array('title' => '打印机设置', 'route' => 'order/printconfig', 'desc' => ''),
  887. )
  888. );
  889. }else{
  890. $shopmenu_2['order'] = array(
  891. 'title' => '订单',
  892. 'subtitle' => '订单管理',
  893. 'icon' => 'order',
  894. 'route' => 'order/index',
  895. 'items' => array(
  896. array('title' => '订单列表', 'route' => 'order/index', 'desc' => ''),
  897. array('title' => '批量发货', 'route' => 'order/ordersendall', 'desc' => ''),
  898. array(
  899. 'title' => '售后管理',
  900. 'route' => '',
  901. 'items' => array(
  902. array('title' => '售后订单', 'route' => 'order/orderaftersales', 'desc' => ''),
  903. )
  904. ),
  905. )
  906. );
  907. }
  908. }else{
  909. $shopmenu_2['order'] = array(
  910. 'title' => '订单',
  911. 'subtitle' => '订单管理',
  912. 'route' => 'order/index',
  913. 'icon' => 'order',
  914. 'items' => array(
  915. array('title' => '订单列表', 'route' => 'order/index', 'desc' => ''),
  916. )
  917. );
  918. }
  919. $shopmenu_2['salesroom'] = array(
  920. 'title' => '门店',
  921. 'subtitle' => '门店管理',
  922. 'icon' => 'supply',
  923. 'route' => 'salesroom/index',
  924. 'items' => array(
  925. array('title' => '门店列表', 'route' => 'salesroom/index', 'desc' => ''),
  926. array('title' => '核销人员', 'route' => 'salesroom_member/index', 'desc' => ''),
  927. array('title' => '核销订单记录', 'route' => 'salesroom_order/index', 'desc' => ''),
  928. ),
  929. );
  930. $shopmenu_2['supply'] = array(
  931. 'title' => '财务',
  932. 'subtitle' => '资金流水',
  933. 'icon' => 'supply',
  934. 'route' => 'supply/floworder',
  935. 'items' => array(
  936. array('title' => '资金流水', 'route' => 'supply/floworder', 'desc' => ''),
  937. array('title' => '提现管理', 'route' => 'supply/tixianlist', 'desc' => ''),
  938. ),
  939. );
  940. $supply_is_open_localtown_distribution = D('Home/Front')->get_config_by_name('supply_is_open_localtown_distribution' );
  941. $isopen_localtown_delivery = D('Home/Front')->get_config_by_name('isopen_localtown_delivery' );
  942. if(!empty($supply_is_open_localtown_distribution) && !empty($isopen_localtown_delivery)){
  943. $shopmenu_2['modifypassword'] = array(
  944. 'title' => '设置',
  945. 'subtitle' => '登录信息',
  946. 'icon' => 'supply',
  947. 'route' => 'supply/modifypassword',
  948. 'items' => array(
  949. array('title' => '修改密码', 'route' => 'supply/modifypassword', 'desc' => ''),
  950. array('title' => '同城配送', 'route' => 'express/localtownconfig', 'desc' => '')
  951. ),
  952. );
  953. $shopmenu_2['order']['items'][] = array(
  954. 'title' => '配送管理',
  955. 'route' => 'orderdistribution/index',
  956. 'items' => array(
  957. array('title' => '配送员管理', 'route' => 'orderdistribution/index', 'desc' => ''),
  958. array('title' => '配送设置', 'route' => 'orderdistribution/distributionconfig', 'desc' => ''),
  959. )
  960. );
  961. $shopmenu_2['order']['items'][] = array(
  962. 'title' => '提现管理',
  963. 'route' => 'orderdistribution/withdrawallist',
  964. 'items' => array(
  965. array('title' => '提现列表', 'route' => 'orderdistribution/withdrawallist', 'desc' => ''),
  966. array('title' => '提现设置', 'route' => 'orderdistribution/withdrawalconfig', 'desc' => ''),
  967. )
  968. );
  969. }else{
  970. $shopmenu_2['modifypassword'] = array(
  971. 'title' => '设置',
  972. 'subtitle' => '登录信息',
  973. 'icon' => 'supply',
  974. 'route' => 'supply/modifypassword',
  975. 'items' => array(
  976. array('title' => '修改密码', 'route' => 'supply/modifypassword', 'desc' => '')
  977. ),
  978. );
  979. }
  980. }
  981. return $shopmenu_2;
  982. }
  983. public function check_seller_perm($route)
  984. {
  985. if(SELLERUID != 1)
  986. {
  987. $seller_info = M('seller')->field('s_role_id')->where( array('s_id' => SELLERUID ) )->find();
  988. $perm_role = M('lionfish_comshop_perm_role')->where( array('id' => $seller_info['s_role_id']) )->find();
  989. $perms_str = $perm_role['perms2'];
  990. $new_route = str_replace('/','.', $route);
  991. if( strpos($perms_str, $new_route) !== false )
  992. {
  993. return true;
  994. }else{
  995. return false;
  996. }
  997. }else{
  998. return true;
  999. }
  1000. }
  1001. }
  1002. ?>