all(); $password = md5($params['password']); $res = Admin::where('username', $params['username']) ->where('password', $password) ->where('status', 1) //1 正常 0 冻结 ->first(); if($res){ //用户信息缓存 $request->session()->put('userInfo', $res); $user_admin = collect($res)->toArray(); return Api::json(config('code.success'), trans('msg.login_success'), $user_admin['is_admin']); } else { return Api::json(config('code.fail'), trans('msg.login_error')); } } /** * 活动看板 */ public function getBoard(Request $request){ $params = $request->all(); if(empty($params['activity_id'])){ return '没参数'; } $data = []; $activity_id = $params['activity_id']; $activityConfigs = Configs::where('activity_id', $activity_id)->first(); //奖品设置 $data['prizes']['data'] = Prizes::where('activity_id', $activity_id)->get()->toArray(); $data['prizes']['is_open_prize'] = $activityConfigs['is_open_prize']; //人员情况 $user_all = Users::where('activity_id', $activity_id)->count(); //总人数 $user_binding = Users::where('activity_id', $activity_id)->where('open_id', '!=', null)->where('open_id', '!=', '')->count(); //绑定人数 $user_blockade = Users::where('activity_id', $activity_id)->where('is_blockade_success', '1')->count(); //必答成功人数 $data['users']['user_all'] = $user_all; $data['users']['user_binding'] = $user_binding; $data['users']['user_blockade'] = $user_blockade; $data['users']['user_online'] = intval(Redis::get('bs_online:'.$activity_id)); //活动数据 $activity_info = Configs::where('activity_id', $activity_id)->first()->toArray(); $data['activity_info'] = $activity_info; //抽奖情况 $copper_complete = Users::where('activity_id', $activity_id)->where('knowledge_money', '>=', $activity_info['copper_box_km'])->count(); $silver_complete = Users::where('activity_id', $activity_id)->where('knowledge_money', '>=', $activity_info['silver_box_km'])->count(); $gold_complete = Users::where('activity_id', $activity_id)->where('knowledge_money', '>=', $activity_info['gold_box_km'])->count(); $copper_use = Lotterys::where('activity_id', $activity_id)->where('lottery_level', 1)->count(); $silver_use = Lotterys::where('activity_id', $activity_id)->where('lottery_level', 2)->count(); $gold_use = Lotterys::where('activity_id', $activity_id)->where('lottery_level', 3)->count(); $data['completes']['copper']['complete'] = $copper_complete; $data['completes']['copper']['use'] = $copper_use; $data['completes']['copper']['unuse'] = $copper_complete - $copper_use; $data['completes']['silver']['complete'] = $silver_complete; $data['completes']['silver']['use'] = $silver_use; $data['completes']['silver']['unuse'] = $silver_complete - $silver_use; $data['completes']['gold']['complete'] = $gold_complete; $data['completes']['gold']['use'] = $gold_use; $data['completes']['gold']['unuse'] = $gold_complete - $gold_use; //单位参与率排行 $department_user_info = DB::select("select count(*) as user_num,sum(is_blockade_success) as sum_join,avg(knowledge_money) as avg_km,department_id from bs_users where activity_id={$activity_id} and department_id>0 and status=1 group by department_id"); $department_user_info = json_decode(json_encode($department_user_info), true); $joins = []; $user_nums = []; $avg_kms = []; foreach($department_user_info as $k=>$v){ $department_user_info[$k]['department_name'] = Departments::where('department_id', $v['department_id'])->value('department_name'); $department_user_info[$k]['join'] = $v['user_num'] != 0 ? $v['sum_join']/$v['user_num']*100 : 0; $joins[] = $v['sum_join']/$v['user_num']; $user_nums[] = $v['user_num']; $avg_kms[] = $v['avg_km']; } $kms = $department_user_info; array_multisort($joins,SORT_DESC,$user_nums,SORT_DESC,$department_user_info); $data['departments']['data'] = $department_user_info; $data['departments']['open_department_top'] = $activityConfigs['open_department_top']; //单位知识币排行 array_multisort($avg_kms,SORT_DESC,$user_nums,SORT_DESC,$kms); $data['avg_km'] = $kms; //个人知识币排行 $user_km = Users::where('activity_id', $activity_id)->where('status', 1)->where('is_blockade_success', 1)->orderBy('knowledge_money', 'desc')->limit(100)->get()->toArray(); foreach ($user_km as $k=>$v) { $user_km[$k]['department_name'] = Departments::where('department_id', $v['department_id'])->value('department_name'); } $data['user_km'] = $user_km; return view('board', ['data'=>$data]); } /** * 看板下载 */ public function getDownload(Request $request){ $params = $request->all(); if(empty($params['activity_id']) || empty($params['type'])){ return Api::json(config('code.params_error'), trans('msg.params_error')); } if($params['type'] == 'join') { $joins_info = Users::where('activity_id', $params['activity_id'])->where('status', 1)->where('is_blockade_success', 1)->orderBy('blockade_success_time', 'desc')->get()->toArray(); $data = []; $res = []; $joins_info = json_decode(json_encode($joins_info), true); foreach ($joins_info as $k => $v) { $res['name'] = $v['name']; $res['department_name'] = Departments::where('department_id', $v['department_id'])->value('department_name'); $res['knowledge_money'] = $v['knowledge_money']; $res['blockade_success_time'] = date('Y-m-d H:i:s', $v['blockade_success_time']); $data[] = $res; } $hands = array('姓名', '部门', '知识币', '必答完成时间'); array_unshift($data, $hands); Excel::create('参与情况', function ($excel) use ($data) { $excel->sheet('join', function ($sheet) use ($data) { $sheet->rows($data); }); })->export('xlsx'); } elseif($params['type'] == 'lottery') { $lotterys = Lotterys::where('activity_id', $params['activity_id'])->orderBy('lottery_time', 'desc')->get()->toArray(); $data = []; $res = []; $lotterys = json_decode(json_encode($lotterys), true); foreach ($lotterys as $k => $v) { $userInfo = Users::where('user_id', $v['user_id'])->first()->toArray(); $res['name'] = $userInfo['name']; $res['department_name'] = Departments::where('department_id', $userInfo['department_id'])->value('department_name'); $res['knowledge_money'] = $v['prize_name']; $res['blockade_success_time'] = $v['lottery_time']; $data[] = $res; } $hands = array('姓名', '部门', '获得奖品', '抽奖时间'); array_unshift($data, $hands); Excel::create('抽奖情况', function ($excel) use ($data) { $excel->sheet('lottery', function ($sheet) use ($data) { $sheet->rows($data); }); })->export('xlsx'); } else { return Api::json(config('code.params_error'), trans('msg.params_error')); } } /** * 下载模板 */ public function getDownloadModel(Request $request){ $params = $request->all(); if(empty($params['type'])){ return Api::json(config('code.params_error'), trans('params.type').trans('msg.params_not_null')); } else { if($params['type'] == 'user'){ $url = '/model/人员模板.xlsx'; //人员导入模板 } else { $url = '/model/题库模板.xlsx'; //题库导入模板 } header('location:/manage'.$url); } } /** * 获取用户信息 * @param Request $request * @return string */ public function getBaseAdmin(Request $request){ $user_info = $request->session()->get('userInfo'); if($user_info['corp_id'] != 0){ $user_info['corp_short_name'] = Corps::where('corp_id', $user_info['corp_id'])->value('corp_short_name'); } return Api::json(config('code.success'), trans('msg.success'), $user_info); } /** * 退出登录 */ public function loginOut(Request $request){ $request->session()->forget('userInfo'); return redirect('manage'); // return Api::json(config('code.success'), trans('msg.success')); } /** * 下载上传失败的数据(优化) * 2018-07-02 15;00:00 * @param Request $request * @return string */ public function getErrorUpload(Request $request){ try { $params = $request->all(); $keys = array('corp_id', 'activity_id', 'type'); foreach ($keys as $key) { if (empty($params[$key])) { return Api::json(config('code.params_error'), trans('params.'.$key) . trans('msg.params_not_null')); } } $actInfo = ActivityService::getActivityInfo($params['activity_id'], $params['corp_id']); if (!$actInfo) { return Api::json(config('code.activity_not_exist'), trans('msg.activity_not_exist')); } $data = []; if($params['type'] == 'user'){ $data = Redis::get(self::USER_UPLOAD_FAIL.$params['activity_id']); $data = json_decode($data, true); if(empty($data)) return Api::json(config('code.fail'), '无错误上传数据'); UserService::downloadUserExcel($data); } elseif($params['type'] == 'question') { $data = Redis::get(self::QUESTION_UPLOAD_FAIL.$params['activity_id']); $data = json_decode($data, true); if(empty($data)) return Api::json(config('code.fail'), '无错误上传数据'); QuestionService::downloadQuestionExcel($data); } }catch(\Exception $e) { return Api::serviceError($e); } } /** * 获取七牛上传头token */ public function getUploadToken(Request $request){ try { $accessKey = env("QINIU_ACCESS_KEY"); $secretKey = env("QINIU_SECRET_KEY"); $auth = new Auth($accessKey, $secretKey); $bucket = env("QINIU_BUCKET"); // 生成上传Token $token = $auth->uploadToken($bucket); $data['token'] = $token; return Api::json(config('code.success'), trans('msg.success'), $data); }catch(\Exception $e) { return Api::serviceError($e); } } /** * 测试方法 * @param Request $request * @return string */ public function test(Request $request){ $str = '韩\u202e乐1552\u202d8333321\u202ccc'; $str = Api::unicode_decode($str); // $pattern = "/[\x{007f}-\x{009f}]|\x{00ad}|[\x{0483}-\x{0489}]|[\x{0559}-\x{055a}]|\x{058a}|[\x{0591}-\x{05bd}]|\x{05bf}|[\x{05c1}-\x{05c2}]|[\x{05c4}-\x{05c7}]|[\x{0606}-\x{060a}]|[\x{063b}-\x{063f}]|\x{0674}|[\x{06e5}-\x{06e6}]|\x{070f}|[\x{076e}-\x{077f}]|\x{0a51}|\x{0a75}|\x{0b44}|[\x{0b62}-\x{0b63}]|[\x{0c62}-\x{0c63}]|[\x{0ce2}-\x{0ce3}]|[\x{0d62}-\x{0d63}]|\x{135f}|[\x{200b}-\x{200f}]|[\x{2028}-\x{202e}]|\x{2044}|\x{2071}|[\x{f701}-\x{f70e}]|[\x{f710}-\x{f71a}]|\x{fb1e}|[\x{fc5e}-\x{fc62}]|\x{feff}|\x{fffc}/u"; // $str = preg_replace($pattern, '', $str); // return $str; // $str_arr = preg_split('/(?