<?php /** * Created by PhpStorm. * User: zhonglei * Date: 17/6/12 * Time: 19:31 */ namespace Frontend\Controller\Callback; use Common\Model\CommonRecommenderModel; use Common\Service\CommonRecommenderService; use Common\Service\CommonSettingService; use VcySDK\Attach; use VcySDK\Service; class InstallController extends AbstractController { /** * 应用默认数据安装接口 * @author zhonglei */ public function Index() { // 插入默认数据 $CommonSettingServ = new CommonSettingService(); $CommonSettingServ->setDefaultData(); // 默认栏目数据 $this->setDefaultRecommender(); // 通知员圈其他应用进行数据初始化 $pluginList = [ // 注意: 下面四个的顺序 和 首页推荐顺序有关 'Activity', 'News', 'Exam', 'Course', 'Questionnaire', 'Sign', 'Workmate', 'Assistant', 'Answer', 'Doc', 'Integral', 'Train', 'Task', 'Teacher', // 存在安装员圈 但没安装通讯录 再点击邀请人员 通讯录相关时 会报错的问题 // 所以这里也去通知通讯录安装 'Contact', // 新增直播应用数据初始化 'Live' ]; foreach ($pluginList as $plugin) { try { $rpc = \Com\Rpc::phprpc(rpcUrl('/' . $plugin . '/Rpc/Common/Install')); call_user_func([$rpc, 'index']); } catch (\Exception $e) { \Think\Log::record('企业 Domain:' . QY_DOMAIN . '应用初始化失败:' . var_export($e, true)); } } exit('SUCCESS'); } /** * 默认栏目数据 * @return bool */ private function setDefaultRecommender() { $recommenderServ = new CommonRecommenderService(); $count = $recommenderServ->count_by_conds(['type' => 2]); if ($count > 0) { return true; } // 需要上传 图标的栏目 $attach = new Attach(Service::instance()); $needUploadLogo = ['Train', 'Questionnaire', 'Activity', 'Workmate', 'News', 'Sign', 'Task', 'Live']; foreach ( [ [ 'name' => '线下培训', 'url' => 'Train/Frontend/Index/List ', 'app_dir' => 'Train', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:25:"Train/Frontend/Index/List";s:9:"$$hashKey";s:11:"object:1615";}}}', ], [ 'name' => '员圈任务', 'url' => 'Task/Frontend/Index/TaskIndex/Index', 'app_dir' => 'Task', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"0";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:35:"Task/Frontend/Index/TaskIndex/Index";s:9:"$$hashKey";s:10:"object:458";}}}', ], [ 'name' => '培训调研', 'url' => 'Questionnaire/Frontend/Index/List', 'app_dir' => 'Questionnaire', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:33:"Questionnaire/Frontend/Index/List";s:9:"$$hashKey";s:11:"object:1844";}}}', ], [ 'name' => '员圈活动', 'url' => 'Activity/Frontend/Index/Index', 'app_dir' => 'Activity', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:29:"Activity/Frontend/Index/Index";s:9:"$$hashKey";s:11:"object:2073";}}}', ], [ 'name' => '积分排行', 'url' => 'Integral/Frontend/Index/IntegralRank/Index', 'app_dir' => 'Integral', 'attch_id' => 'integral', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:4:{s:2:"id";i:0;s:4:"name";s:6:"全部";s:4:"upId";i:0;s:3:"url";s:42:"Integral/Frontend/Index/IntegralRank/Index";}}}', ], [ 'name' => '签到', 'url' => 'Task/Frontend/Index/SignIndex', 'app_dir' => 'Sign', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";i:1;s:4:"name";s:6:"全部";s:4:"upId";i:0;s:3:"url";s:26:"Task/Frontend/Index/SIndex";s:9:"$$hashKey";s:11:"object:5052";}}}', ], [ 'name' => '员圈', 'url' => 'Workmate/Frontend/Index/Index ', 'app_dir' => 'Workmate', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:4:{s:2:"id";i:0;s:4:"name";s:6:"全部";s:4:"upId";i:0;s:3:"url";s:42:"Integral/Frontend/Index/IntegralRank/Index";}}}', ], [ 'name' => '员圈头条', 'url' => 'News/Frontend/Index/NewsList/Index?class_id=0', 'app_dir' => 'News', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"0";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:45:"News/Frontend/Index/NewsList/Index?class_id=0";s:9:"$$hashKey";s:11:"object:1576";}}}', ], [ 'name' => '员圈直播', 'url' => 'Live/Frontend/Index/RoomList/Index', 'app_dir' => 'Live', 'attch_id' => '', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:4:{s:2:"id";i:0;s:4:"name";s:6:"全部";s:4:"upId";i:0;s:3:"url";s:34:"Live/Frontend/Index/RoomList/Index";}}}', ], [ 'name' => '资料库', 'url' => 'Doc/Frontend/Index/DocIndex/Index', 'app_dir' => 'Doc', 'attch_id' => 'bank', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"0";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:33:"Doc/Frontend/Index/DocIndex/Index";s:9:"$$hashKey";s:10:"object:404";}}}', ], [ 'name' => '问答中心', 'url' => 'Answer/Frontend/Index/QuestionList/Index', 'app_dir' => 'Answer', 'attch_id' => 'answer', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"0";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:49:"Course/Frontend/Index/CourseList/Index?class_id=0";s:9:"$$hashKey";s:11:"object:1777";}}}', ], [ 'name' => '考试中心', 'url' => 'Exam/Frontend/Index/List', 'app_dir' => 'Exam', 'attch_id' => 'exam', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:24:"Exam/Frontend/Index/List";s:9:"$$hashKey";s:11:"object:1040";}}}', ], [ 'name' => '课程中心', 'url' => 'Course/Frontend/Index/CourseList/Index?class_id=0', 'app_dir' => 'Course', 'attch_id' => 'course', 'data' => 'a:1:{s:8:"category";a:1:{i:0;a:5:{s:2:"id";s:1:"0";s:4:"name";s:6:"全部";s:4:"upId";s:1:"0";s:3:"url";s:49:"Course/Frontend/Index/CourseList/Index?class_id=0";s:9:"$$hashKey";s:10:"object:742";}}}', ], ] as $item ) { // 上传默认图片 (如果需要) $result = []; if (in_array($item['app_dir'], $needUploadLogo)) { try { $picFile = CODE_ROOT . DIRECTORY_SEPARATOR . "www/static/img/public/{$item['app_dir']}.png"; $fileData = [ 'file' => [ 'name' => QY_DOMAIN . "_{$item['app_dir']}.png", 'type' => mime_content_type($picFile), 'size' => filesize($picFile), 'tmp_name' => $picFile, ], ]; $result = $attach->upload([ 'atMediatype' => Attach::TYPE_IMG, ], $fileData); } catch (\Exception $e) { \Think\Log::record('setDefaultMedal 方法内错误:::' . $e->getMessage()); continue; } } $insertData = [ 'type' => CommonRecommenderModel::TYPE_ICON, 'displayorder' => CommonRecommenderModel::VALUE_DISPLAYORDER_MIN, 'hide' => CommonRecommenderModel::HIDE_NO, 'system' => CommonRecommenderModel::SYSTEM_NO, 'title' => $item['name'], 'attach_id' => empty($item['attch_id']) ? $result['atId'] : $item['attch_id'], 'pic' => empty($item['attch_id']) ? $result['atAttachment'] : $item['attch_id'], 'url' => $item['url'], 'description' => '', 'app_dir' => $item['app_dir'], // TODO 2017-10-24 20:13:17 zhoutao 这里写死以后要注意到 如果应用标识变了 这里做好做成动态的 'app_identifier' => 'yuanquan', 'data_id' => '', 'data_category_id' => 0, 'data' => $item['data'], 'dateline' => MILLI_TIME, 'adminer_id' => '', 'adminer' => '', ]; // 特殊要求: displayorder 字段更新为主键 ID 值 try { $id = $recommenderServ->insert($insertData); $recommenderServ->update($id, ['displayorder' => $id]); } catch (\Exception $e) { \Think\Log::record('写入栏目默认数据出错:::' . var_export($e, true)); } } return true; } }