MemberInfoService.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. <?php
  2. namespace App\Services\Person;
  3. use App\Exceptions\ResponseException;
  4. use App\Models\Company;
  5. use App\Models\Feedback;
  6. use App\Models\MemberInfo;
  7. use App\Models\Msg;
  8. use App\Models\Pms;
  9. use App\Models\Resume;
  10. use App\Models\Thirdlogin;
  11. use App\Repositories\CategoryDistrictRepository;
  12. use App\Repositories\MemberInfoRepository;
  13. use App\Repositories\CategoryRepository;
  14. use App\Repositories\CategoryMajorRepository;
  15. use App\Repositories\MemberLogRepository;
  16. use App\Repositories\MemberMsgtipRepository;
  17. use App\Repositories\MemberRepository;
  18. use App\Repositories\MsgRepository;
  19. use App\Repositories\OauthRepository;
  20. use App\Repositories\PmsRepository;
  21. use App\Repositories\ResumeRepository;
  22. use App\Repositories\ThirdloginRepository;
  23. use App\Services\Common\TaskService;
  24. use App\Services\Person\ResumeService;
  25. use Exception;
  26. use Illuminate\Support\Facades\Cache;
  27. use Illuminate\Support\Facades\DB;
  28. use Illuminate\Support\Facades\Hash;
  29. use Illuminate\Support\Facades\Storage;
  30. class MemberInfoService
  31. {
  32. /**
  33. * @var MemberInfoRepository
  34. */
  35. protected $MemberInfoRepository;
  36. protected $CategoryRepository;
  37. protected $CategoryMajorRepository;
  38. protected $MemberRepository;
  39. protected $CategoryDistrictRepository;
  40. protected $TaskService;
  41. protected $memberLogRepository;
  42. protected $pmsRepository;
  43. protected $memberMsgtipRepository;
  44. protected $msgRepository;
  45. protected $resumeRepository;
  46. protected $oauthRepository;
  47. protected $thirdloginRepository;
  48. protected $resumeService;
  49. /**
  50. * MemberInfoService constructor.
  51. * @param MemberInfoRepository $MemberInfoRepository
  52. * @param CategoryRepository $CategoryRepository
  53. * @param CategoryMajorRepository $CategoryMajorRepository
  54. * @param MemberRepository $MemberRepository
  55. * @param CategoryDistrictRepository $CategoryDistrictRepository
  56. * @param TaskService $TaskService
  57. * @param MemberLogRepository $memberLogRepository
  58. * @param PmsRepository $pmsRepository
  59. * @param MemberMsgtipRepository $memberMsgtipRepository
  60. * @param MsgRepository $msgRepository
  61. * @param resumeRepository $resumeRepository
  62. * @param oauthRepository $oauthRepository
  63. * @param thirdloginRepository $thirdloginRepository
  64. */
  65. public function __construct(MemberInfoRepository $MemberInfoRepository, CategoryRepository $CategoryRepository, CategoryMajorRepository $CategoryMajorRepository, MemberRepository $MemberRepository, CategoryDistrictRepository $CategoryDistrictRepository, TaskService $TaskService, MemberLogRepository $memberLogRepository, PmsRepository $pmsRepository, MemberMsgtipRepository $memberMsgtipRepository, MsgRepository $msgRepository, ResumeRepository $resumeRepository, OauthRepository $oauthRepository, ThirdloginRepository $thirdloginRepository, ResumeService $resumeService)
  66. {
  67. $this->MemberInfoRepository = $MemberInfoRepository;
  68. $this->CategoryRepository = $CategoryRepository;
  69. $this->CategoryMajorRepository = $CategoryMajorRepository;
  70. $this->MemberRepository = $MemberRepository;
  71. $this->CategoryDistrictRepository = $CategoryDistrictRepository;
  72. $this->TaskService = $TaskService;
  73. $this->memberLogRepository = $memberLogRepository;
  74. $this->pmsRepository = $pmsRepository;
  75. $this->memberMsgtipRepository = $memberMsgtipRepository;
  76. $this->msgRepository = $msgRepository;
  77. $this->resumeRepository = $resumeRepository;
  78. $this->oauthRepository = $oauthRepository;
  79. $this->thirdloginRepository = $thirdloginRepository;
  80. $this->resumeService = $resumeService;
  81. }
  82. public function memberInfo($user)
  83. {
  84. $content = $this->MemberInfoRepository->getMemberInfo($user->id);
  85. return ['content'=>$content];
  86. }
  87. public function updateInfo($date, $user)
  88. {
  89. if ($date['card_t_cn']==306) {
  90. if (!isCreditNo($date['id_card'])) {
  91. throw new ResponseException('身份证格式错误!');
  92. }
  93. }
  94. if (isset($date['qq']) && !empty($date['qq'])) {
  95. if (!preg_match('/^\d*$/', $date['qq'])) {
  96. throw new ResponseException('qq号只能是数字!');
  97. }
  98. }
  99. if (isset($date['weixin']) && !empty($date['weixin'])) {
  100. if (preg_match('/[\x7f-\xff]/', $date['weixin'])) {
  101. throw new ResponseException('微信号不能含有中文!');
  102. }
  103. }
  104. $memberInfo = $this->MemberInfoRepository->getMemberInfo($user->id);
  105. if ($date['sex']==1) {
  106. $date['sex_cn'] = '男';
  107. } else {
  108. $date['sex_cn'] = '女';
  109. }
  110. if ($date['marriage']==1) {
  111. $date['marriage_cn'] = '未婚';
  112. } elseif ($date['marriage']==2) {
  113. $date['marriage_cn'] = '已婚';
  114. } else {
  115. $date['marriage_cn'] = '保密';
  116. }
  117. $educationArr = $this->CategoryRepository->getCategory($date['education']);
  118. $date['education_cn'] = $educationArr['demand'];
  119. $experienceArr = $this->CategoryRepository->getCategory($date['experience']);
  120. $date['experience_cn'] = $experienceArr['demand'];
  121. if (!empty($date['major'])) {
  122. $majorArr = $this->CategoryMajorRepository->getCategoryMajor($date['major']);
  123. $date['major_cn'] = $majorArr['name'];
  124. }
  125. $residenseArr = explode(',', $date['residence']);
  126. $residenseArrId = [];
  127. foreach ($residenseArr as $key => $val) {
  128. $residenseArrId[] = explode('.', $val)[2] ? explode('.', $val)[2] : explode('.', $val)[1];
  129. }
  130. $residenseRes = $this->CategoryDistrictRepository->getManydistrict($residenseArrId);
  131. $date['residence_cn'] = '';
  132. foreach ($residenseRes as $key => $val) {
  133. $nm = $this->CategoryDistrictRepository->getCategoryDistrict($val->parent_id);
  134. $date['residence_cn'].=$nm->name.'-'.$val->name.'+';
  135. }
  136. $date['residence_cn'] = rtrim($date['residence_cn'], '+');
  137. $date['householdaddress_cn'] = '';
  138. if (!empty($date['householdaddress'])) {
  139. $houseArr = explode(',', $date['householdaddress']);
  140. $houseArrId = [];
  141. foreach ($houseArr as $key => $val) {
  142. $houseArrId[] = explode('.', $val)[2] ? explode('.', $val)[2] : explode('.', $val)[1];
  143. }
  144. $houseRes = $this->CategoryDistrictRepository->getManydistrict($houseArrId);
  145. foreach ($houseRes as $key => $val) {
  146. $nm = $this->CategoryDistrictRepository->getCategoryDistrict($val->parent_id);
  147. $date['householdaddress_cn'].=$nm->name.'-'.$val->name.'+';
  148. }
  149. $date['householdaddress_cn'] = rtrim($date['householdaddress_cn'], '+');
  150. }
  151. if ($date['card_t_cn']==306) {
  152. $card = strlen($date['id_card'])==15 ? ('19' . substr($date['id_card'], 6, 2)) : substr($date['id_card'], 6, 4);
  153. if ($date['birthday']!=$card) {
  154. throw new ResponseException('出生年月和身份证不符合!');
  155. }
  156. }
  157. $resume = $this->resumeRepository->getResumes(['uid'=>$user->id]);
  158. $resume_id = array_column($resume->toArray(), 'id');
  159. if(isset($date['display_name'])){
  160. $resume_arr['display_name'] = $date['display_name'];
  161. }
  162. $resume_arr['fullname'] = $date['realname'];
  163. $resume_arr['sex'] = $date['sex'];
  164. $resume_arr['sex_cn'] = $date['sex_cn'];
  165. $resume_arr['birthdate'] = $date['birthday'];
  166. $resume_arr['residence'] = $date['residence_cn'];
  167. $resume_arr['height'] = $date['height'];
  168. $resume_arr['marriage'] = $date['marriage'];
  169. $resume_arr['marriage_cn'] = $date['marriage_cn'];
  170. $resume_arr['experience'] = $date['experience'];
  171. $resume_arr['experience_cn'] = $date['experience_cn'];
  172. $resume_arr['householdaddress'] = $date['householdaddress_cn'];
  173. $resume_arr['education'] = $date['education'];
  174. $resume_arr['education_cn'] = $date['education_cn'];
  175. $resume_arr['major'] = $date['major'];
  176. $resume_arr['major_cn'] = isset($date['major_cn']) ? $date['major_cn'] : '';
  177. $resume_arr['telephone'] = $date['phone'];
  178. $resume_arr['email'] = $date['email'];
  179. $resume_arr['qq'] = $date['qq'];
  180. $resume_arr['weixin'] = $date['weixin'];
  181. $resume_arr['idcard'] = $date['id_card'];
  182. $member = $this->MemberRepository->getMemberById($user->id);
  183. $memData = [];
  184. if (!$member->mobile_audit) {
  185. $memData['mobile'] = $date['phone'];
  186. }
  187. if (!$member->email_audit) {
  188. $memData['email'] = $date['email'];
  189. }
  190. DB::beginTransaction();
  191. if ($memData) {
  192. $this->MemberRepository->updateInfo($user->id, $memData);
  193. }
  194. if (!$memberInfo) {
  195. $date['uid'] = $user->id;
  196. $this->MemberInfoRepository->createInfo($date);
  197. } else {
  198. $this->MemberInfoRepository->updateInfo($date, $user->id);
  199. }
  200. $this->resumeRepository->updateAllResume($resume_id, $resume_arr);
  201. //通过学历判断人才类别前置操作
  202. $this->resumeService->edu_mate($resume_arr['education'],$user->id);
  203. event_search_update(Resume::class, implode(',', $resume_id), 'update');
  204. DB::commit();
  205. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2043,"")){
  206. throw new \Exception("日志记失败!");
  207. }
  208. return ['code'=>1,'info'=>$date];
  209. }
  210. public function updateHead($image_data, $user)
  211. {
  212. $saveName = 'person/images/'.uniqid().'.jpg';
  213. $data= base64_decode($image_data);
  214. if (!empty($data)) {
  215. $res = Storage::disk('public')->put($saveName, $data);
  216. if ($res) {
  217. $this->TaskService->doTask(5);
  218. DB::beginTransaction();
  219. try {
  220. $info = MemberInfo::where(['uid'=>$user->id])->first();
  221. MemberInfo::where(['uid'=>$user->id])->update(['images'=>$saveName,'photo'=>1,'photo_audit'=>1]);
  222. if (!$info->images) {
  223. $resInfo = Resume::where(['uid'=>$user->id])->get();
  224. foreach ($resInfo as $key => $val) {
  225. if ($val->complete_percent+5<=100) {
  226. if ($val->complete_percent+5>=70 && $val->complete_percent+5<90) {
  227. Resume::where(['id'=>$val->id])->update(['complete_percent'=>$val->complete_percent+5,'level'=>2]);
  228. } elseif ($val->complete_percent+5>=90 && $val->complete_percent+5<=100) {
  229. Resume::where(['id'=>$val->id])->update(['complete_percent'=>$val->complete_percent+5,'level'=>1]);
  230. } else {
  231. Resume::where(['id'=>$val->id])->update(['complete_percent'=>$val->complete_percent+5,'level'=>0]);
  232. }
  233. }
  234. }
  235. }
  236. event_search_update(Resume::class, [['where','uid', $user->id]], 'update');
  237. DB::commit();
  238. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2044,"")){
  239. throw new \Exception("日志记失败!");
  240. }
  241. return ['status'=>1,'info'=>'success','data'=>$saveName];
  242. } catch (Exception $e) {
  243. DB::rollback();
  244. return ['status'=>0,'info'=>'error'];
  245. }
  246. } else {
  247. return ['status'=>0,'info'=>'error'];
  248. }
  249. } else {
  250. return '请上传图片 ';
  251. }
  252. }
  253. public function memberSafe($user)
  254. {
  255. return $this->MemberInfoRepository->getMemberInfo($user->id);
  256. }
  257. public function unbind($user, $type)
  258. {
  259. if ($type=='qq') {
  260. $type = [1];
  261. } elseif ($type=='weixin') {
  262. $type = [2,3,4];
  263. }else{
  264. throw new ResponseException('数据错误');
  265. }
  266. return $this->thirdloginRepository->unBind($type, $user);
  267. }
  268. public function oauths()
  269. {
  270. return $this->oauthRepository->getOauth();
  271. }
  272. public function qq($user, $type)
  273. {
  274. return $this->thirdloginRepository->checkBind($user, $type);
  275. }
  276. public function weixin($user, $type)
  277. {
  278. return $this->thirdloginRepository->checkBind($user, $type);
  279. }
  280. /**
  281. * 更新密码。
  282. */
  283. public function updatePassword($oldpassword, $password, $password1, $user)
  284. {
  285. $member = $this->MemberRepository->getMemberById($user->id);
  286. if (!Hash::check($oldpassword, $member->password)) {
  287. return ['status'=>0,'info'=>'原密码错误'];
  288. }
  289. if ($password!=$password1) {
  290. return ['status'=>0,'info'=>'俩次密码不一致'];
  291. }
  292. if (Hash::check($password, $member->password)) {
  293. return ['status'=>0,'info'=>'新密码不能与旧密码一致!'];
  294. }
  295. $res = $this->MemberRepository->updatePasswordById(bcrypt($password), $user->id);
  296. if ($res) {
  297. if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2045,"")){
  298. throw new \Exception("日志记失败!");
  299. }
  300. return ['status'=>1,'info'=>'修改成功'];
  301. } else {
  302. return ['status'=>0,'info'=>'修改失败'];
  303. }
  304. }
  305. public function mobileAuditCode($mobile)
  306. {
  307. $id = auth('web-member')->user()->id;
  308. DB::beginTransaction();
  309. try {
  310. $this->MemberRepository->updateInfo($id, ['mobile'=>$mobile,'mobile_audit'=>1]);
  311. $this->MemberInfoRepository->updateInfo(['phone'=>$mobile], $id);
  312. DB::commit();
  313. } catch (Exception $e) {
  314. DB::rollback();
  315. return ['code'=>0,'points'=>0];
  316. }
  317. $task = $this->TaskService->doTask(7);
  318. if ($task['code']==1) {
  319. return ['code'=>1,'points'=>$task['data']['points']];
  320. } else {
  321. return ['code'=>1,'points'=>0];
  322. }
  323. }
  324. public function updateUsername($username)
  325. {
  326. $id = auth('web-member')->user()->id;
  327. return $this->MemberRepository->updateInfo($id, ['username'=>$username]);
  328. }
  329. public function getMemberLog($user, $url)
  330. {
  331. $loginLog = $this->memberLogRepository->getMemberLog(
  332. $user->id,
  333. $user->utype,
  334. 1001
  335. );
  336. if(strpos($url->uri,'mobile')!==false){
  337. $loginLog = $loginLog->toArray();
  338. if ($loginLog['total']) {
  339. $list = [];
  340. foreach ($loginLog['data'] as $key => $val) {
  341. $t = strtotime(date('Y-m-d', strtotime($val['created_at'])));
  342. $list[$t][] = $val;
  343. }
  344. $loginLog['data'] = $list;
  345. }
  346. }
  347. return $loginLog;
  348. }
  349. public function pms($user)
  350. {
  351. $data[] = ['msgtouid','=',$user->id];
  352. $data[] = ['utype','=',$user->utype];
  353. if (request()->status) {
  354. switch (request()->status) {
  355. case 1:
  356. $data[] = ['new','=',1];
  357. break;
  358. case 2:
  359. $data[] = ['new','=',2];
  360. break;
  361. default:
  362. $data[] = ['new','=',1];
  363. break;
  364. }
  365. }
  366. if (request()->settr) {
  367. switch (request()->settr) {
  368. case '3':
  369. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-3 day"))];
  370. break;
  371. case '7':
  372. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-7 day"))];
  373. break;
  374. case '15':
  375. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-15 day"))];
  376. break;
  377. default:
  378. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-3 day"))];
  379. break;
  380. }
  381. }
  382. $res = $this->pmsRepository->getPms($data);
  383. return $res;
  384. }
  385. public function checkPms($id,$user)
  386. {
  387. $res_m = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) {
  388. $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]);
  389. })->get()->toArray();
  390. $array_id = array_column($res_m,'id');
  391. if(!in_array($id,$array_id)){
  392. return ['code'=>0,'info'=>(object)['message'=>'消息不存在']];
  393. }
  394. $res = $this->pmsRepository->updateNewById($id, ['new'=>2]);
  395. if ($res) {
  396. return ['code'=>1,'info'=>$this->pmsRepository->getPmsById($id)];
  397. } else {
  398. return ['code'=>0,'info'=>(object)['message'=>'数据异常,稍后再试!']];
  399. }
  400. }
  401. public function sendAuthEmailHook($newEmail, $personal)
  402. {
  403. Cache::put($newEmail, $personal, 24*60);
  404. }
  405. /**
  406. * 邮箱验证
  407. * @param $newEmail
  408. * @return bool
  409. */
  410. public function verifyEmail($newEmail)
  411. {
  412. $personal=Cache::pull($newEmail, null);
  413. if ($personal) {
  414. DB::beginTransaction();
  415. try {
  416. $this->MemberRepository->updateInfo($personal->id, ['email'=>$newEmail,'email_audit'=>1]);
  417. $this->MemberInfoRepository->updateInfo(['email'=>$newEmail], $personal->id);
  418. DB::commit();
  419. } catch (Exception $e) {
  420. DB::rollback();
  421. return false;
  422. }
  423. return true;
  424. }
  425. return false;
  426. }
  427. public function deletePms($arrId,$user)
  428. {
  429. if (empty($arrId)) {
  430. throw new ResponseException('请选择消息!');
  431. }
  432. $res = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) {
  433. $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]);
  434. })->get()->toArray();
  435. $array_id = array_column($res,'id');
  436. $res_k = string_to_array(',',$arrId);
  437. foreach ($res_k as $key=>$val){
  438. if(!in_array($val,$array_id)){
  439. throw new ResponseException('消息不存在!', '', '400');
  440. }
  441. }
  442. return $this->pmsRepository->deleteAll(string_to_array(',', $arrId));
  443. }
  444. public function newPms($arrId, $user)
  445. {
  446. if (empty($arrId)) {
  447. throw new ResponseException('请选择消息!');
  448. }
  449. $id = explode(',', $arrId);
  450. $res_m = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) {
  451. $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]);
  452. })->get()->toArray();
  453. $array_id = array_column($res_m,'id');
  454. foreach ($id as $key=>$val){
  455. if(!in_array($val,$array_id)){
  456. throw new ResponseException('消息不存在!');
  457. }
  458. }
  459. $condition['uid'] = $user->id;
  460. $condition['utype'] = $user->utype;
  461. $count = $this->memberMsgtipRepository->getTipCount($condition);
  462. DB::beginTransaction();
  463. try {
  464. $result = $this->pmsRepository->updateNew($id, ['msgtouid'=>$user->id, 'utype'=>$user->utype], ['new'=>2]);
  465. if ($count>=$result) {
  466. $this->memberMsgtipRepository->updateTip($condition, $result);
  467. }
  468. DB::commit();
  469. return true;
  470. } catch (\Exception $e) {
  471. DB::rollback();
  472. return false;
  473. }
  474. }
  475. public function msg($user)
  476. {
  477. $res = $this->msgRepository->msg($user->utype, $user->id);
  478. if ($res->total()) {
  479. foreach ($res as $key => $val) {
  480. $utype = explode(',', $val->result);
  481. foreach ($utype as $key1 => $val1) {
  482. $utype1 = explode(':', $val1);
  483. if ($utype1[0]==1) {
  484. $company = Company::where(['id'=>$utype1[1]])->select('companyname')->first();
  485. $member = MemberInfo::where(['uid'=>$utype1[2]])->select('images')->first();
  486. if ($company) {
  487. $res[$key]->companyName = $company->companyname;
  488. } else {
  489. $res[$key]->companyName = '';
  490. }
  491. if ($member) {
  492. $res[$key]->images = $member->images;
  493. } else {
  494. $res[$key]->images = '';
  495. }
  496. break;
  497. } else {
  498. $company = Company::where(['id'=>$utype1[2]])->select('companyname')->first();
  499. $member = MemberInfo::where(['uid'=>$utype1[1]])->select('images')->first();
  500. if ($company) {
  501. $res[$key]->companyName = $company->companyname;
  502. } else {
  503. $res[$key]->companyName = '';
  504. }
  505. if ($member) {
  506. $res[$key]->images = $member->images;
  507. } else {
  508. $res[$key]->images = '';
  509. }
  510. break;
  511. }
  512. }
  513. }
  514. }
  515. return $res;
  516. }
  517. public function mobileMsg($user)
  518. {
  519. return $this->msgRepository->mobileMsg($user->utype, $user->id);
  520. }
  521. public function mobileMsgShow($user, $parent_id)
  522. {
  523. $company = [];
  524. if ($user->utype == 1) {
  525. $res = $this->msgRepository->mobileMsgShows($parent_id);
  526. $msg = Msg::where(['parent_id'=>$parent_id, 'utype'=>2])->first();
  527. if ($msg) {
  528. $company = MemberInfo::where('uid', $msg->from_uid)->first();
  529. $company->to_uid = $msg->from_uid;
  530. $company->parent_id = $msg->parent_id;
  531. $company->resumes = Resume::where(['uid'=> $msg->from_uid,'def'=>1])->first();
  532. }
  533. } else {
  534. $res = $this->msgRepository->mobileMsgShow($parent_id);
  535. $msg = Msg::where(['parent_id'=>$parent_id, 'utype'=>1])->first();
  536. if ($msg) {
  537. $company = Company::findOrFail($msg->from_uid);
  538. $company->to_uid = $msg->from_uid;
  539. $company->parent_id = $msg->parent_id;
  540. }
  541. }
  542. foreach ($res as $key => $val){
  543. if ($val->utype==1) {
  544. $res[$key]->company = Company::findOrFail($val->from_uid);
  545. } else {
  546. $res[$key]->memberInfo = MemberInfo::where('uid', $val->from_uid)->first();
  547. }
  548. }
  549. return ['res'=>$res,'company'=>$company];
  550. }
  551. public function msgSend($user, $input)
  552. {
  553. $data = [];
  554. $input['parent_id'] = array_get($input,'parent_id');
  555. if (empty($input['parent_id'])) {
  556. throw new ResponseException('数据异常!');
  557. }
  558. if (empty($input['to_uid'])) {
  559. throw new ResponseException('企业信息不存在!');
  560. }
  561. if (empty($input['message'])) {
  562. throw new ResponseException('回复信息不能为空!');
  563. }
  564. if (mb_strlen($input['message'], 'utf-8')>200) {
  565. throw new ResponseException('回复信息不能超过200个字。');
  566. }
  567. $res_k = Msg::where(function ($query) use($user) {
  568. $query->where('from_uid',$user->id)->orWhere('to_uid',$user->id);
  569. })->get()->toArray();
  570. $array_id = array_column($res_k,'parent_id');
  571. if(!in_array($input['parent_id'],$array_id)){
  572. throw new ResponseException('消息不存在!');
  573. }
  574. $data['parent_id'] = $input['parent_id'];
  575. $data['utype'] = $user->utype;
  576. $data['from_uid'] = $user->id;
  577. $data['to_uid'] = $input['to_uid'];
  578. $data['message'] = $input['message'];
  579. $res = $this->msgRepository->msgSend($data);
  580. if ($res) {
  581. $company = Company::where(['id'=>$data['to_uid']])->select('companyname')->first();
  582. if ($company) {
  583. $res->companyName = $company->companyname;
  584. } else {
  585. $res->companyName = '';
  586. }
  587. }
  588. return $res;
  589. }
  590. public function msgDelete($input)
  591. {
  592. if (empty($input['parent_id'])) {
  593. throw new ResponseException('请选择要删除的咨询消息!');
  594. }
  595. return $this->msgRepository->msgDelete($input['parent_id']);
  596. }
  597. public function feedbackCreate($input)
  598. {
  599. if(!$input['type'] || !$input['content'] || !$input['contact']){
  600. throw new ResponseException('请把资料信息填写完整!');
  601. }
  602. $input['audit'] = 0;
  603. $input['subsite_id'] = get_subsite_id();
  604. return Feedback::create($input);
  605. }
  606. /**
  607. * 根据条件获取信息
  608. * @param $where
  609. * @return mixed
  610. */
  611. public function getInfo($where){
  612. return $MemberInfo = $this->MemberInfoRepository->findMemberInfo($where);
  613. }
  614. public function isOwn($id,$user)
  615. {
  616. $info = $this->MemberInfoRepository->find($id);
  617. if(!$info)
  618. {
  619. throw new ResponseException('参数错误!');
  620. }
  621. if($info->uid != $user->id) {
  622. throw new ResponseException('对不起,您只能操作自己的信息!');
  623. }
  624. }
  625. }