MemberInfoService.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  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. return ['status'=>1,'info'=>'修改成功'];
  298. } else {
  299. return ['status'=>0,'info'=>'修改失败'];
  300. }
  301. }
  302. public function mobileAuditCode($mobile)
  303. {
  304. $id = auth('web-member')->user()->id;
  305. DB::beginTransaction();
  306. try {
  307. $this->MemberRepository->updateInfo($id, ['mobile'=>$mobile,'mobile_audit'=>1]);
  308. $this->MemberInfoRepository->updateInfo(['phone'=>$mobile], $id);
  309. DB::commit();
  310. } catch (Exception $e) {
  311. DB::rollback();
  312. return ['code'=>0,'points'=>0];
  313. }
  314. $task = $this->TaskService->doTask(7);
  315. if ($task['code']==1) {
  316. return ['code'=>1,'points'=>$task['data']['points']];
  317. } else {
  318. return ['code'=>1,'points'=>0];
  319. }
  320. }
  321. public function updateUsername($username)
  322. {
  323. $id = auth('web-member')->user()->id;
  324. return $this->MemberRepository->updateInfo($id, ['username'=>$username]);
  325. }
  326. public function getMemberLog($user, $url)
  327. {
  328. $loginLog = $this->memberLogRepository->getMemberLog(
  329. $user->id,
  330. $user->utype,
  331. 1001
  332. );
  333. if(strpos($url->uri,'mobile')!==false){
  334. $loginLog = $loginLog->toArray();
  335. if ($loginLog['total']) {
  336. $list = [];
  337. foreach ($loginLog['data'] as $key => $val) {
  338. $t = strtotime(date('Y-m-d', strtotime($val['created_at'])));
  339. $list[$t][] = $val;
  340. }
  341. $loginLog['data'] = $list;
  342. }
  343. }
  344. return $loginLog;
  345. }
  346. public function pms($user)
  347. {
  348. $data[] = ['msgtouid','=',$user->id];
  349. $data[] = ['utype','=',$user->utype];
  350. if (request()->status) {
  351. switch (request()->status) {
  352. case 1:
  353. $data[] = ['new','=',1];
  354. break;
  355. case 2:
  356. $data[] = ['new','=',2];
  357. break;
  358. default:
  359. $data[] = ['new','=',1];
  360. break;
  361. }
  362. }
  363. if (request()->settr) {
  364. switch (request()->settr) {
  365. case '3':
  366. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-3 day"))];
  367. break;
  368. case '7':
  369. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-7 day"))];
  370. break;
  371. case '15':
  372. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-15 day"))];
  373. break;
  374. default:
  375. $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-3 day"))];
  376. break;
  377. }
  378. }
  379. $res = $this->pmsRepository->getPms($data);
  380. return $res;
  381. }
  382. public function checkPms($id,$user)
  383. {
  384. $res_m = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) {
  385. $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]);
  386. })->get()->toArray();
  387. $array_id = array_column($res_m,'id');
  388. if(!in_array($id,$array_id)){
  389. return ['code'=>0,'info'=>(object)['message'=>'消息不存在']];
  390. }
  391. $res = $this->pmsRepository->updateNewById($id, ['new'=>2]);
  392. if ($res) {
  393. return ['code'=>1,'info'=>$this->pmsRepository->getPmsById($id)];
  394. } else {
  395. return ['code'=>0,'info'=>(object)['message'=>'数据异常,稍后再试!']];
  396. }
  397. }
  398. public function sendAuthEmailHook($newEmail, $personal)
  399. {
  400. Cache::put($newEmail, $personal, 24*60);
  401. }
  402. /**
  403. * 邮箱验证
  404. * @param $newEmail
  405. * @return bool
  406. */
  407. public function verifyEmail($newEmail)
  408. {
  409. $personal=Cache::pull($newEmail, null);
  410. if ($personal) {
  411. DB::beginTransaction();
  412. try {
  413. $this->MemberRepository->updateInfo($personal->id, ['email'=>$newEmail,'email_audit'=>1]);
  414. $this->MemberInfoRepository->updateInfo(['email'=>$newEmail], $personal->id);
  415. DB::commit();
  416. } catch (Exception $e) {
  417. DB::rollback();
  418. return false;
  419. }
  420. return true;
  421. }
  422. return false;
  423. }
  424. public function deletePms($arrId,$user)
  425. {
  426. if (empty($arrId)) {
  427. throw new ResponseException('请选择消息!');
  428. }
  429. $res = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) {
  430. $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]);
  431. })->get()->toArray();
  432. $array_id = array_column($res,'id');
  433. $res_k = string_to_array(',',$arrId);
  434. foreach ($res_k as $key=>$val){
  435. if(!in_array($val,$array_id)){
  436. throw new ResponseException('消息不存在!', '', '400');
  437. }
  438. }
  439. return $this->pmsRepository->deleteAll(string_to_array(',', $arrId));
  440. }
  441. public function newPms($arrId, $user)
  442. {
  443. if (empty($arrId)) {
  444. throw new ResponseException('请选择消息!');
  445. }
  446. $id = explode(',', $arrId);
  447. $res_m = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) {
  448. $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]);
  449. })->get()->toArray();
  450. $array_id = array_column($res_m,'id');
  451. foreach ($id as $key=>$val){
  452. if(!in_array($val,$array_id)){
  453. throw new ResponseException('消息不存在!');
  454. }
  455. }
  456. $condition['uid'] = $user->id;
  457. $condition['utype'] = $user->utype;
  458. $count = $this->memberMsgtipRepository->getTipCount($condition);
  459. DB::beginTransaction();
  460. try {
  461. $result = $this->pmsRepository->updateNew($id, ['msgtouid'=>$user->id, 'utype'=>$user->utype], ['new'=>2]);
  462. if ($count>=$result) {
  463. $this->memberMsgtipRepository->updateTip($condition, $result);
  464. }
  465. DB::commit();
  466. return true;
  467. } catch (\Exception $e) {
  468. DB::rollback();
  469. return false;
  470. }
  471. }
  472. public function msg($user)
  473. {
  474. $res = $this->msgRepository->msg($user->utype, $user->id);
  475. if ($res->total()) {
  476. foreach ($res as $key => $val) {
  477. $utype = explode(',', $val->result);
  478. foreach ($utype as $key1 => $val1) {
  479. $utype1 = explode(':', $val1);
  480. if ($utype1[0]==1) {
  481. $company = Company::where(['id'=>$utype1[1]])->select('companyname')->first();
  482. $member = MemberInfo::where(['uid'=>$utype1[2]])->select('images')->first();
  483. if ($company) {
  484. $res[$key]->companyName = $company->companyname;
  485. } else {
  486. $res[$key]->companyName = '';
  487. }
  488. if ($member) {
  489. $res[$key]->images = $member->images;
  490. } else {
  491. $res[$key]->images = '';
  492. }
  493. break;
  494. } else {
  495. $company = Company::where(['id'=>$utype1[2]])->select('companyname')->first();
  496. $member = MemberInfo::where(['uid'=>$utype1[1]])->select('images')->first();
  497. if ($company) {
  498. $res[$key]->companyName = $company->companyname;
  499. } else {
  500. $res[$key]->companyName = '';
  501. }
  502. if ($member) {
  503. $res[$key]->images = $member->images;
  504. } else {
  505. $res[$key]->images = '';
  506. }
  507. break;
  508. }
  509. }
  510. }
  511. }
  512. return $res;
  513. }
  514. public function mobileMsg($user)
  515. {
  516. return $this->msgRepository->mobileMsg($user->utype, $user->id);
  517. }
  518. public function mobileMsgShow($user, $parent_id)
  519. {
  520. $company = [];
  521. if ($user->utype == 1) {
  522. $res = $this->msgRepository->mobileMsgShows($parent_id);
  523. $msg = Msg::where(['parent_id'=>$parent_id, 'utype'=>2])->first();
  524. if ($msg) {
  525. $company = MemberInfo::where('uid', $msg->from_uid)->first();
  526. $company->to_uid = $msg->from_uid;
  527. $company->parent_id = $msg->parent_id;
  528. $company->resumes = Resume::where(['uid'=> $msg->from_uid,'def'=>1])->first();
  529. }
  530. } else {
  531. $res = $this->msgRepository->mobileMsgShow($parent_id);
  532. $msg = Msg::where(['parent_id'=>$parent_id, 'utype'=>1])->first();
  533. if ($msg) {
  534. $company = Company::findOrFail($msg->from_uid);
  535. $company->to_uid = $msg->from_uid;
  536. $company->parent_id = $msg->parent_id;
  537. }
  538. }
  539. foreach ($res as $key => $val){
  540. if ($val->utype==1) {
  541. $res[$key]->company = Company::findOrFail($val->from_uid);
  542. } else {
  543. $res[$key]->memberInfo = MemberInfo::where('uid', $val->from_uid)->first();
  544. }
  545. }
  546. return ['res'=>$res,'company'=>$company];
  547. }
  548. public function msgSend($user, $input)
  549. {
  550. $data = [];
  551. $input['parent_id'] = array_get($input,'parent_id');
  552. if (empty($input['parent_id'])) {
  553. throw new ResponseException('数据异常!');
  554. }
  555. if (empty($input['to_uid'])) {
  556. throw new ResponseException('企业信息不存在!');
  557. }
  558. if (empty($input['message'])) {
  559. throw new ResponseException('回复信息不能为空!');
  560. }
  561. if (mb_strlen($input['message'], 'utf-8')>200) {
  562. throw new ResponseException('回复信息不能超过200个字。');
  563. }
  564. $res_k = Msg::where(function ($query) use($user) {
  565. $query->where('from_uid',$user->id)->orWhere('to_uid',$user->id);
  566. })->get()->toArray();
  567. $array_id = array_column($res_k,'parent_id');
  568. if(!in_array($input['parent_id'],$array_id)){
  569. throw new ResponseException('消息不存在!');
  570. }
  571. $data['parent_id'] = $input['parent_id'];
  572. $data['utype'] = $user->utype;
  573. $data['from_uid'] = $user->id;
  574. $data['to_uid'] = $input['to_uid'];
  575. $data['message'] = $input['message'];
  576. $res = $this->msgRepository->msgSend($data);
  577. if ($res) {
  578. $company = Company::where(['id'=>$data['to_uid']])->select('companyname')->first();
  579. if ($company) {
  580. $res->companyName = $company->companyname;
  581. } else {
  582. $res->companyName = '';
  583. }
  584. }
  585. return $res;
  586. }
  587. public function msgDelete($input)
  588. {
  589. if (empty($input['parent_id'])) {
  590. throw new ResponseException('请选择要删除的咨询消息!');
  591. }
  592. return $this->msgRepository->msgDelete($input['parent_id']);
  593. }
  594. public function feedbackCreate($input)
  595. {
  596. if(!$input['type'] || !$input['content'] || !$input['contact']){
  597. throw new ResponseException('请把资料信息填写完整!');
  598. }
  599. $input['audit'] = 0;
  600. $input['subsite_id'] = get_subsite_id();
  601. return Feedback::create($input);
  602. }
  603. /**
  604. * 根据条件获取信息
  605. * @param $where
  606. * @return mixed
  607. */
  608. public function getInfo($where){
  609. return $MemberInfo = $this->MemberInfoRepository->findMemberInfo($where);
  610. }
  611. public function isOwn($id,$user)
  612. {
  613. $info = $this->MemberInfoRepository->find($id);
  614. if(!$info)
  615. {
  616. throw new ResponseException('参数错误!');
  617. }
  618. if($info->uid != $user->id) {
  619. throw new ResponseException('对不起,您只能操作自己的信息!');
  620. }
  621. }
  622. }