Card.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace app\api\controller;
  3. use app\model\Employee;
  4. use app\model\EmployeeCard;
  5. use app\model\Footprints;
  6. use app\model\Miniprogram;
  7. use app\model\User;
  8. use think\facade\Cache;
  9. use think\facade\Request;
  10. use wx\miniprogram\Qrcode;
  11. class Card extends Base
  12. {
  13. /** 员工名片功能已经不存在,小程序审核时,名片不能有微信号 */
  14. public function info()
  15. {
  16. $token = $this->request->token;
  17. $employee = Employee::with(['company', 'companys', 'employeeCard'])->findOrEmpty($token['employee_id']);
  18. $data['employee_id'] = $employee['id'];
  19. $data['uid'] = $employee['uid'];
  20. $data['name'] = $employee['name'];
  21. $data['phone'] = $employee['phone'];
  22. $data['position'] = $employee['position'];
  23. $data['company_name'] = $employee['company_name'];
  24. $data['headimgurl'] = $employee['image_photo'] ? $employee['image_photo'] : '';
  25. $data['wx'] = $employee['wx'] ?? '';
  26. $data['qrcode'] = $employee['qrcode'];
  27. $data['likes'] = $employee['employeeCard']['likes'] ?? 0;
  28. if (isset($employee['companys'])) {
  29. $data['company_introduction'] = $employee['companys']['company_introduction'];
  30. $data['company_address'] = $employee['companys']['company_address'];
  31. $data['company_logo'] = $employee['companys']['logo'];
  32. $data['company_vr_address'] = $employee['companys']['vr_address'];
  33. } else {
  34. $data['company_introduction'] = '';
  35. $data['company_address'] = '';
  36. $data['company_logo'] = '';
  37. $data['company_vr_address'] = '';
  38. }
  39. $log_where[] = ['uid', '<>', $token['uid']];
  40. $log_where[] = ['employee_id', '=', $token['employee_id']];
  41. $log_where[] = ['pipe_type', '=', 'card'];
  42. $logUid = Footprints::where($log_where)->order('id desc')->group('uid')->column('uid');
  43. //$logUid = array_values(array_filter(array_unique($logUid))); // 去重
  44. $logUid_new = array_slice($logUid, 0, 4);
  45. $log = [];
  46. foreach ($logUid_new as $v) {
  47. $log[] = User::where([['id', '=', $v]])->value('headimgurl');
  48. }
  49. /*if (count($log) < 4) {
  50. $left_count = 4 - count($log);
  51. $left_log = User::where('headimgurl', '<>', '')->limit($left_count)->order('id desc')->column('headimgurl');
  52. $log = array_merge($log, $left_log);
  53. }*/
  54. $logCount = User::where([['id', 'in', $logUid]])->count();
  55. /*if ($logCount < 4) {
  56. $logCount = 4;
  57. }*/
  58. return json(['code' => self::success, 'data' => $data, 'log' => $log, 'logcount'=>$logCount]);
  59. }
  60. /**
  61. * 点赞
  62. */
  63. public function like(){
  64. $employee_id = $this->request->token['employee_id'];
  65. $res = EmployeeCard::where('employee_id', '=', $employee_id)->inc('likes')->update();
  66. if (!$res) EmployeeCard::insert(['employee_id'=>$employee_id,'likes'=>1]);
  67. return json(['code' => self::success, 'msg' => 'success']);
  68. }
  69. public function save()
  70. {
  71. $data = Request::only(['company_name', 'department', 'position', 'name', 'phone', 'wx', 'email', 'brief']);
  72. $card = EmployeeCard::where(['employee_id' => $this->request->token['employee_id']])->find();
  73. if (empty($card)) {
  74. $card = new EmployeeCard();
  75. $data['employee_id'] = $this->request->token['employee_id'];
  76. }
  77. $data['qrcode'] = $this->getQrPath();
  78. $card->save($data);
  79. return json(['code' => self::success, 'msg' => '保存成功']);
  80. }
  81. private function getQrPath()
  82. {
  83. // 生成二维码
  84. $rootOrgId = request()->token['root_org'];
  85. $mini = Miniprogram::where([['root_id', '=', $rootOrgId]])->find();
  86. $qrObj = new Qrcode;
  87. $param = [
  88. 'scene' => 'userCard_' . $this->request->token['employee_id'],
  89. 'page' => 'index/pages/namecard/namecard',
  90. 'width' => '280px',
  91. ];
  92. $qr = $qrObj->getUnlimited($mini->accesstoken, $param);
  93. $rs = json_decode($qr, true);
  94. if (!is_null($rs)) {
  95. trace('名片二维码生成失败' . ';error:' . $qr, 'error');
  96. }
  97. $path = 'userCard' . DIRECTORY_SEPARATOR . uniqid() . '.jpeg';
  98. ossContentUpload($path, $qr);
  99. return $path;
  100. }
  101. }