UserController.php 9.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php
  2. namespace App\Http\Controllers\brainstorming;
  3. use App\Common\Api;
  4. use App\Models\Departments;
  5. use Illuminate\Http\Request;
  6. use App\Http\Controllers\Controller;
  7. use Illuminate\Support\Facades\Log;
  8. use App\Models\Users;
  9. use App\Models\Configs;
  10. use App\Services\ActivityService;
  11. use App\Services\UserService;
  12. use Illuminate\Support\Facades\Redis;
  13. use Excel;
  14. class UserController extends Controller
  15. {
  16. public function __construct(){
  17. //加载中间键
  18. // $this->middleware('CheckLogin');
  19. // $this->middleware('Logs');
  20. // $this->middleware('CacheClear');
  21. }
  22. const USER_UPLOAD = 1;
  23. const USER_UPLOAD_KEY = 'bsb_user_upload:';
  24. /**
  25. * 用户上传接口
  26. * @param Request $request
  27. * @return string
  28. */
  29. public function postUpload(Request $request){
  30. try{
  31. ini_set('memory_limit', '256M');
  32. set_time_limit(0);
  33. $params = $request->all();
  34. $keys = array('corp_id', 'activity_id');
  35. foreach($keys as $key){
  36. if(empty($params[$key])){
  37. return Api::json(config('code.params_error'), trans('params.'.$key).trans('msg.params_not_null'));
  38. }
  39. }
  40. if($request->isMethod('post')){
  41. //活动存在性判断
  42. $activity_info = ActivityService::getActivityInfo($params['activity_id'], $params['corp_id']);
  43. if(!$activity_info){
  44. return Api::json(config('code.activity_not_exist'), trans('msg.activity_not_exist'));
  45. }
  46. //表单校验
  47. if(empty($_FILES['user'])){
  48. return Api::json(config('code.fail'), trans('msg.excel_not_exist'));
  49. }
  50. //读取excel存入redis
  51. $filePath = $_FILES['user']['tmp_name'];
  52. Excel::load($filePath, function ($reader) {
  53. $reader = $reader->getSheet(0);
  54. $res = $reader->toArray();
  55. $is_hand = 0;
  56. foreach ($res as $k=>$v) {
  57. unset($res[$k]);
  58. if($v[0] == '姓名' && $v['1'] == '部门' && $v[2] == '手机号码/ID号'){
  59. $is_hand = 1;
  60. break;
  61. }
  62. }
  63. //去掉excel表格的空数据
  64. $res = collect($res)->filter(function($value){
  65. return !is_null($value[0]) || !is_null($value[1]) || !is_null($value[2]);
  66. });
  67. $res = collect($res)->toArray();
  68. //表单内容校验
  69. if(empty($res)){
  70. if($is_hand == 1) {
  71. print_r(Api::json(config('code.fail'), trans('msg.user_not_exist')));
  72. exit;
  73. } else {
  74. print_r(Api::json(config('code.fail'), trans('msg.fail_type_exist')));
  75. exit;
  76. }
  77. }
  78. //去除空格和不可见unicode编码
  79. $result = [];
  80. foreach($res as $key=>$val){
  81. // $result[$key][0] = Api::trimUnicode($val[0]);
  82. // $result[$key][1] = Api::trimUnicode($val[1]);
  83. // $result[$key][2] = Api::trimUnicode($val[2]);
  84. $result[$key][0] = $val[0];
  85. $result[$key][1] = $val[1];
  86. $result[$key][2] = Api::trimUnicode($val[2]);
  87. }
  88. $res = json_encode($result);
  89. Redis::set(self::USER_UPLOAD_KEY.$_REQUEST['activity_id'], $res, 'EX', 3600);
  90. });
  91. //数据处理入库
  92. $res = Redis::get(self::USER_UPLOAD_KEY.$params['activity_id']);
  93. $res = json_decode($res, true);
  94. $result = UserService::userUpload($res, $params['activity_id'], $params['corp_id']);
  95. //入库成功则保存文件
  96. if($result['code'] == 0){
  97. $newPath = base_path('storage/uploads/' . date('Ymd'));
  98. if (!is_dir($newPath)) {
  99. mkdir($newPath);
  100. }
  101. $file = $request->file('user');
  102. $file->move($newPath, date('His') . $_FILES['user']['name']);
  103. //修改人员上传状态
  104. Configs::where('corp_id', $params['corp_id'])->where('activity_id', $params['activity_id'])->update(['is_user_upload'=>1]);
  105. }
  106. return Api::json($result['code'], $result['msg'], $result['data']);
  107. } else {
  108. return Api::json(config('code.fail'), trans('msg.method_no'));
  109. }
  110. } catch(\Exception $e) {
  111. Log::info($e);
  112. return Api::json(config('code.service_error'), '上传失败,请检测文件格式或文件是否加密!!');
  113. }
  114. }
  115. /**
  116. * 获取活动人员列表
  117. * @param Request $request
  118. * @return string
  119. */
  120. public function getUserList(Request $request){
  121. try {
  122. $params = $request->all();
  123. $keys = array('activity_id', 'corp_id');
  124. foreach ($keys as $key) {
  125. if (empty($params[$key])) {
  126. return Api::json(config('code.params_error'), trans('params.'.$key) . trans('msg.params_not_null'));
  127. }
  128. }
  129. $pageSize = empty($params['page_size']) ? 10 : $params['page_size'];
  130. $keyword = $request->get("keyword");
  131. if (is_null($keyword)) {
  132. $userInfo = Users::where('activity_id', $params['activity_id'])
  133. ->where('corp_id', $params['corp_id'])
  134. ->where('status', 1) //人员状态 0 无效 1 有效
  135. ->orderByDesc("create_time")->paginate($pageSize);
  136. } else {
  137. $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');
  138. $userInfo = Users::where('activity_id', $params['activity_id'])
  139. ->where('corp_id', $params['corp_id'])
  140. ->where('status', 1) //人员状态 0 无效 1 有效
  141. ->where(function ($query) use ($keyword, $department_like){
  142. $query->where("name", "like", "%" . $keyword . "%")->orwhereIn("department_id", $department_like);
  143. })
  144. ->orderByDesc("create_time")->paginate($pageSize);
  145. }
  146. $data = Api::page($userInfo);
  147. //时间戳转换
  148. foreach ($data['data'] as $key => $val) {
  149. $data['data'][$key] = Api::dateFormat($val);
  150. $department_name = Departments::where('department_id', $val['department_id'])->value('department_name');
  151. $data['data'][$key]['department_name'] = $department_name?$department_name:'无部门';
  152. }
  153. //获取部门人员信息
  154. $data['department_info'] = ActivityService::getUsersCount($params['corp_id'], $params['activity_id']);
  155. return Api::json(config('code.success'), trans('msg.success'), $data);
  156. }catch(\Exception $e) {
  157. return Api::serviceError($e);
  158. }
  159. }
  160. /**
  161. * 删除人员(软删除)
  162. * 2018-06-20 18:00:00
  163. * @param Request $request
  164. * @return string
  165. */
  166. public function postDelete(Request $request){
  167. try{
  168. $params = $request->all();
  169. $keys = array('activity_id', 'corp_id', 'user_id');
  170. foreach ($keys as $key) {
  171. if (empty($params[$key])) {
  172. return Api::json(config('code.params_error'), trans('params.'.$key) . trans('msg.params_not_null'));
  173. }
  174. }
  175. $res = UserService::delUser($params);
  176. return Api::json($res['code'], $res['msg'], $res['data']);
  177. }catch(\Exception $e) {
  178. return Api::serviceError($e);
  179. }
  180. }
  181. /**
  182. * 新增单个人员
  183. * 部门字符串匹配
  184. * @param Request $request
  185. * @return string
  186. */
  187. public function postAdd(Request $request){
  188. try{
  189. $params = $request->all();
  190. $keys = array('activity_id', 'corp_id', 'phone', 'name');
  191. foreach ($keys as $key) {
  192. if (empty($params[$key])) {
  193. return Api::json(config('code.params_error'), trans('params.'.$key) . trans('msg.params_not_null'));
  194. }
  195. }
  196. $res = UserService::addUser($params);
  197. return Api::json($res['code'], $res['msg'], $res['data']);
  198. }catch(\Exception $e) {
  199. return Api::serviceError($e);
  200. }
  201. }
  202. /**
  203. * 用户信息修改(姓名、部门、电话)
  204. * @param Request $request
  205. * @return string
  206. */
  207. public function postModify(Request $request){
  208. try{
  209. $params = $request->all();
  210. $keys = array('activity_id', 'user_id', 'phone', 'name');
  211. foreach ($keys as $key) {
  212. if (empty($params[$key])) {
  213. return Api::json(config('code.params_error'), trans('msg.params_not_null'));
  214. }
  215. }
  216. $res = UserService::ModifyUser($params);
  217. return Api::json($res['code'], $res['msg'], $res['data']);
  218. }catch(\Exception $e) {
  219. return Api::serviceError($e);
  220. }
  221. }
  222. }
  223. ?>