public function create()
 {
     $list = D('Menu')->lists(array(), 'pid asc');
     //构造自定义菜单数据
     foreach ($list as $_k => $_v) {
         if ($_v['pid'] == 0) {
             $_list[$_v['id']]['name'] = $_v['name'];
             switch ($_v['type']) {
                 case 1:
                     $_list[$_v['id']]['type'] = 'click';
                     $_list[$_v['id']]['key'] = $_v['key'];
                     break;
                 case 2:
                     $_list[$_v['id']]['type'] = 'view';
                     $_list[$_v['id']]['url'] = $_v['url'];
                     break;
             }
         } else {
             $_list[$_v['pid']]['sub_button'][$_v['id']]['name'] = $_v['name'];
             switch ($_v['type']) {
                 case 1:
                     $_list[$_v['pid']]['sub_button'][$_v['id']]['type'] = 'click';
                     $_list[$_v['pid']]['sub_button'][$_v['id']]['key'] = $_v['key'];
                     break;
                 case 2:
                     $_list[$_v['pid']]['sub_button'][$_v['id']]['type'] = 'view';
                     $_list[$_v['pid']]['sub_button'][$_v['id']]['url'] = htmlspecialchars_decode($_v['url']);
                     break;
             }
         }
     }
     $list = ArrayHelper::array_number_key($_list);
     foreach ($list as $_k => $_v) {
         if (isset($_v['sub_button'])) {
             $_temp = ArrayHelper::array_number_key($_v['sub_button']);
             $list[$_k]['sub_button'] = $_temp;
         }
     }
     //创建自定义菜单
     $options = array('token' => C('TOKEN'), 'encodingaeskey' => C('ENCODINGAESKEY'), 'appid' => C('APPID'), 'appsecret' => C('APPSECRET'));
     $wechat = new Wechat($options);
     $wechat->valid(true);
     $lists['button'] = $list;
     $create_result = $wechat->createMenu($lists);
     if ($create_result) {
         $this->success('创建成功,24小时内生效');
     } else {
         $this->error($wechat->errMsg);
     }
 }
 /**
  * 权限管理
  */
 public function permission()
 {
     $map['is_show'] = 1;
     $node_list = D('Node')->lists($map, 'pid asc,id asc');
     $node_list = ArrayHelper::array2_filter($node_list, 'is_show', 0);
     $node_list = array_column($node_list, null, 'id');
     $list = array();
     foreach ($node_list as $_k => $_v) {
         if (intval($_v['pid']) === 0) {
             $list[$_k] = $_v;
         } else {
             $list[$_v['pid']]['child_list'][] = $_v;
         }
     }
     $list = ArrayHelper::array_number_key($list);
     // dump($list);exit();
     // 查询拥有的权限
     $has_map['group_id'] = I('id');
     $has_node_list = D('GroupNodeMap')->_list($has_map, 'node_id');
     $has_node_list = array_column($has_node_list, 'node_id');
     $this->assign('node_list', $list);
     $this->assign('has_node_list', $has_node_list);
     $this->display();
 }
 public function match()
 {
     $AssistModel = D('Assist');
     $EarnModel = D('Earn');
     //舍列表
     $assist_map['surplus_money'] = array('neq', 0);
     $assist = $AssistModel->_list($assist_map, '', 'id asc');
     //得列表
     $earn_map['surplus_money'] = array('neq', 0);
     $earn = $EarnModel->_list($earn_map, '', 'id asc');
     if (empty($assist) || empty($earn)) {
         $this->success('匹配完成');
     }
     $assist_list = array();
     $earn_list = array();
     //拆分舍和得列表为100
     foreach ($assist as $_k => $_v) {
         $_count = $_v['surplus_money'] / 100;
         for ($i = 0; $i < $_count; $i++) {
             $_assist_list = $_v;
             $_assist_list['surplus_money'] = 100;
             array_push($assist_list, $_assist_list);
         }
     }
     foreach ($earn as $_k => $_v) {
         $_count = $_v['surplus_money'] / 100;
         for ($i = 0; $i < $_count; $i++) {
             $_earn_list = $_v;
             $_earn_list['surplus_money'] = 100;
             array_push($earn_list, $_earn_list);
         }
     }
     //舍和得开始匹配
     foreach ($earn_list as $_k => $_v) {
         //取出提供帮助列表中和获取收益不是同一个用户的数据
         $assist_id = false;
         foreach ($assist_list as $_i => $_j) {
             if ($_j['user_id'] != $_v['user_id']) {
                 $assist_id = $_j['id'];
                 unset($assist_list[$_i]);
                 break;
             }
         }
         if ($assist_id === false) {
             break;
         }
         $earn_list[$_k]['assist_id'] = $assist_id;
     }
     //匹配成订单
     $order_list = array();
     foreach ($earn_list as $_k => $_v) {
         $key = $_v['id'] . '+' . $_v['assist_id'];
         if (isset($order_list[$key])) {
             $order_list[$key]['money'] += $_v['surplus_money'];
         } else {
             $order_list[$key]['assist_id'] = $_v['assist_id'];
             $order_list[$key]['earn_id'] = $_v['id'];
             $order_list[$key]['money'] = $_v['surplus_money'];
         }
     }
     $assist = array_column($assist, null, 'id');
     $earn = array_column($earn, null, 'id');
     foreach ($order_list as $_k => $_v) {
         $assist[$_v['assist_id']]['surplus_money'] -= $_v['money'];
         if ($assist[$_v['assist_id']]['surplus_money'] == 0) {
             $assist[$_v['assist_id']]['status'] = 1;
         }
         $earn[$_v['earn_id']]['surplus_money'] -= $_v['money'];
         if ($earn[$_v['earn_id']]['surplus_money'] == 0) {
             $earn[$_v['earn_id']]['status'] = 1;
         }
     }
     $assist = ArrayHelper::array_number_key($assist);
     $earn = ArrayHelper::array_number_key($earn);
     $order_list = ArrayHelper::array_number_key($order_list);
     $OrderModel = D('Order');
     $OrderModel->startTrans();
     $save_assist_result = $AssistModel->addAll($assist, array(), true);
     $save_earn_result = $EarnModel->addAll($earn, array(), true);
     $save_order_result = $OrderModel->insertAll($order_list);
     if ($save_assist_result && $save_earn_result && $save_order_result) {
         $OrderModel->commit();
         $this->success('匹配成功');
     } else {
         $OrderModel->rollback();
         $this->error('匹配失败');
     }
 }
 /**
  * 获取左侧菜单列表
  * @method menu
  * @return array 菜单列表
  */
 private function menu()
 {
     $node_list = session('node_list');
     $node_list = ArrayHelper::array2_filter($node_list, 'is_show', 0);
     $node_list = array_column($node_list, null, 'id');
     $list = array();
     foreach ($node_list as $_k => $_v) {
         if (intval($_v['pid']) === 0) {
             $list[$_k] = $_v;
         } else {
             $list[$_v['pid']]['child_list'][] = $_v;
         }
     }
     $list = ArrayHelper::array_number_key($list);
     return $list;
 }