123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- <?php
-
- namespace App\Http\Controllers\brainstorming;
-
- use App\Common\Api;
- use App\Models\Departments;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Log;
-
- use App\Models\Users;
- use App\Models\Configs;
- use App\Services\ActivityService;
- use App\Services\UserService;
-
- use Illuminate\Support\Facades\Redis;
- use Excel;
-
- class UserController extends Controller
- {
- public function __construct(){
- //加载中间键
- // $this->middleware('CheckLogin');
- // $this->middleware('Logs');
- // $this->middleware('CacheClear');
- }
-
- const USER_UPLOAD = 1;
- const USER_UPLOAD_KEY = 'bsb_user_upload:';
-
- /**
- * 用户上传接口
- * @param Request $request
- * @return string
- */
- public function postUpload(Request $request){
- try{
- ini_set('memory_limit', '256M');
- set_time_limit(0);
-
- $params = $request->all();
- $keys = array('corp_id', 'activity_id');
- foreach($keys as $key){
- if(empty($params[$key])){
- return Api::json(config('code.params_error'), trans('params.'.$key).trans('msg.params_not_null'));
- }
- }
-
- if($request->isMethod('post')){
- //活动存在性判断
- $activity_info = ActivityService::getActivityInfo($params['activity_id'], $params['corp_id']);
- if(!$activity_info){
- return Api::json(config('code.activity_not_exist'), trans('msg.activity_not_exist'));
- }
-
- //表单校验
- if(empty($_FILES['user'])){
- return Api::json(config('code.fail'), trans('msg.excel_not_exist'));
- }
-
- //读取excel存入redis
- $filePath = $_FILES['user']['tmp_name'];
-
- Excel::load($filePath, function ($reader) {
- $reader = $reader->getSheet(0);
- $res = $reader->toArray();
-
- $is_hand = 0;
- foreach ($res as $k=>$v) {
- unset($res[$k]);
- if($v[0] == '姓名' && $v['1'] == '部门' && $v[2] == '手机号码/ID号'){
- $is_hand = 1;
- break;
- }
- }
-
- //去掉excel表格的空数据
- $res = collect($res)->filter(function($value){
- return !is_null($value[0]) || !is_null($value[1]) || !is_null($value[2]);
- });
- $res = collect($res)->toArray();
-
- //表单内容校验
- if(empty($res)){
- if($is_hand == 1) {
- print_r(Api::json(config('code.fail'), trans('msg.user_not_exist')));
- exit;
- } else {
- print_r(Api::json(config('code.fail'), trans('msg.fail_type_exist')));
- exit;
- }
- }
-
- //去除空格和不可见unicode编码
- $result = [];
- foreach($res as $key=>$val){
- // $result[$key][0] = Api::trimUnicode($val[0]);
- // $result[$key][1] = Api::trimUnicode($val[1]);
- // $result[$key][2] = Api::trimUnicode($val[2]);
-
- $result[$key][0] = $val[0];
- $result[$key][1] = $val[1];
- $result[$key][2] = Api::trimUnicode($val[2]);
- }
-
- $res = json_encode($result);
- Redis::set(self::USER_UPLOAD_KEY.$_REQUEST['activity_id'], $res, 'EX', 3600);
- });
-
- //数据处理入库
- $res = Redis::get(self::USER_UPLOAD_KEY.$params['activity_id']);
- $res = json_decode($res, true);
- $result = UserService::userUpload($res, $params['activity_id'], $params['corp_id']);
-
- //入库成功则保存文件
- if($result['code'] == 0){
- $newPath = base_path('storage/uploads/' . date('Ymd'));
- if (!is_dir($newPath)) {
- mkdir($newPath);
- }
- $file = $request->file('user');
- $file->move($newPath, date('His') . $_FILES['user']['name']);
-
- //修改人员上传状态
- Configs::where('corp_id', $params['corp_id'])->where('activity_id', $params['activity_id'])->update(['is_user_upload'=>1]);
- }
-
- return Api::json($result['code'], $result['msg'], $result['data']);
- } else {
- return Api::json(config('code.fail'), trans('msg.method_no'));
- }
- } catch(\Exception $e) {
- Log::info($e);
- return Api::json(config('code.service_error'), '上传失败,请检测文件格式或文件是否加密!!');
- }
- }
-
- /**
- * 获取活动人员列表
- * @param Request $request
- * @return string
- */
- public function getUserList(Request $request){
- try {
- $params = $request->all();
-
- $keys = array('activity_id', 'corp_id');
- foreach ($keys as $key) {
- if (empty($params[$key])) {
- return Api::json(config('code.params_error'), trans('params.'.$key) . trans('msg.params_not_null'));
- }
- }
-
- $pageSize = empty($params['page_size']) ? 10 : $params['page_size'];
-
- $keyword = $request->get("keyword");
-
- if (is_null($keyword)) {
- $userInfo = Users::where('activity_id', $params['activity_id'])
- ->where('corp_id', $params['corp_id'])
- ->where('status', 1) //人员状态 0 无效 1 有效
- ->orderByDesc("create_time")->paginate($pageSize);
- } else {
- $department_like = Departments::where('activity_id', $params['activity_id'])->where('corp_id', $params['corp_id'])->where('status', 1)->where("department_name", "like", "%" . $keyword . "%")->pluck('department_id');
-
- $userInfo = Users::where('activity_id', $params['activity_id'])
- ->where('corp_id', $params['corp_id'])
- ->where('status', 1) //人员状态 0 无效 1 有效
- ->where(function ($query) use ($keyword, $department_like){
- $query->where("name", "like", "%" . $keyword . "%")->orwhereIn("department_id", $department_like);
- })
- ->orderByDesc("create_time")->paginate($pageSize);
- }
-
- $data = Api::page($userInfo);
-
- //时间戳转换
- foreach ($data['data'] as $key => $val) {
- $data['data'][$key] = Api::dateFormat($val);
- $department_name = Departments::where('department_id', $val['department_id'])->value('department_name');
- $data['data'][$key]['department_name'] = $department_name?$department_name:'无部门';
- }
-
- //获取部门人员信息
- $data['department_info'] = ActivityService::getUsersCount($params['corp_id'], $params['activity_id']);
-
- return Api::json(config('code.success'), trans('msg.success'), $data);
- }catch(\Exception $e) {
- return Api::serviceError($e);
- }
- }
-
- /**
- * 删除人员(软删除)
- * 2018-06-20 18:00:00
- * @param Request $request
- * @return string
- */
- public function postDelete(Request $request){
- try{
- $params = $request->all();
-
- $keys = array('activity_id', 'corp_id', 'user_id');
- foreach ($keys as $key) {
- if (empty($params[$key])) {
- return Api::json(config('code.params_error'), trans('params.'.$key) . trans('msg.params_not_null'));
- }
- }
-
- $res = UserService::delUser($params);
-
- return Api::json($res['code'], $res['msg'], $res['data']);
- }catch(\Exception $e) {
- return Api::serviceError($e);
- }
- }
-
- /**
- * 新增单个人员
- * 部门字符串匹配
- * @param Request $request
- * @return string
- */
- public function postAdd(Request $request){
- try{
- $params = $request->all();
-
- $keys = array('activity_id', 'corp_id', 'phone', 'name');
- foreach ($keys as $key) {
- if (empty($params[$key])) {
- return Api::json(config('code.params_error'), trans('params.'.$key) . trans('msg.params_not_null'));
- }
- }
-
- $res = UserService::addUser($params);
-
- return Api::json($res['code'], $res['msg'], $res['data']);
- }catch(\Exception $e) {
- return Api::serviceError($e);
- }
- }
-
-
- /**
- * 用户信息修改(姓名、部门、电话)
- * @param Request $request
- * @return string
- */
- public function postModify(Request $request){
- try{
- $params = $request->all();
-
- $keys = array('activity_id', 'user_id', 'phone', 'name');
- foreach ($keys as $key) {
- if (empty($params[$key])) {
- return Api::json(config('code.params_error'), trans('msg.params_not_null'));
- }
- }
-
- $res = UserService::ModifyUser($params);
-
- return Api::json($res['code'], $res['msg'], $res['data']);
- }catch(\Exception $e) {
- return Api::serviceError($e);
- }
- }
- }
- ?>
|