123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace app\api\controller;
- use app\model\Employee;
- use app\model\EmployeeCard;
- use app\model\Footprints;
- use app\model\Miniprogram;
- use app\model\User;
- use think\facade\Cache;
- use think\facade\Request;
- use wx\miniprogram\Qrcode;
- class Card extends Base
- {
- /** 员工名片功能已经不存在,小程序审核时,名片不能有微信号 */
- public function info()
- {
- $token = $this->request->token;
- $employee = Employee::with(['company', 'companys', 'employeeCard'])->findOrEmpty($token['employee_id']);
- $data['employee_id'] = $employee['id'];
- $data['uid'] = $employee['uid'];
- $data['name'] = $employee['name'];
- $data['phone'] = $employee['phone'];
- $data['position'] = $employee['position'];
- $data['company_name'] = $employee['company_name'];
- $data['headimgurl'] = $employee['image_photo'] ? $employee['image_photo'] : '';
- $data['wx'] = $employee['wx'] ?? '';
- $data['qrcode'] = $employee['qrcode'];
- $data['likes'] = $employee['employeeCard']['likes'] ?? 0;
- if (isset($employee['companys'])) {
- $data['company_introduction'] = $employee['companys']['company_introduction'];
- $data['company_address'] = $employee['companys']['company_address'];
- $data['company_logo'] = $employee['companys']['logo'];
- $data['company_vr_address'] = $employee['companys']['vr_address'];
- } else {
- $data['company_introduction'] = '';
- $data['company_address'] = '';
- $data['company_logo'] = '';
- $data['company_vr_address'] = '';
- }
- $log_where[] = ['uid', '<>', $token['uid']];
- $log_where[] = ['employee_id', '=', $token['employee_id']];
- $log_where[] = ['pipe_type', '=', 'card'];
- $logUid = Footprints::where($log_where)->order('id desc')->group('uid')->column('uid');
- //$logUid = array_values(array_filter(array_unique($logUid))); // 去重
- $logUid_new = array_slice($logUid, 0, 4);
- $log = [];
- foreach ($logUid_new as $v) {
- $log[] = User::where([['id', '=', $v]])->value('headimgurl');
- }
- /*if (count($log) < 4) {
- $left_count = 4 - count($log);
- $left_log = User::where('headimgurl', '<>', '')->limit($left_count)->order('id desc')->column('headimgurl');
- $log = array_merge($log, $left_log);
- }*/
- $logCount = User::where([['id', 'in', $logUid]])->count();
- /*if ($logCount < 4) {
- $logCount = 4;
- }*/
- return json(['code' => self::success, 'data' => $data, 'log' => $log, 'logcount'=>$logCount]);
- }
- /**
- * 点赞
- */
- public function like(){
- $employee_id = $this->request->token['employee_id'];
- $res = EmployeeCard::where('employee_id', '=', $employee_id)->inc('likes')->update();
- if (!$res) EmployeeCard::insert(['employee_id'=>$employee_id,'likes'=>1]);
- return json(['code' => self::success, 'msg' => 'success']);
- }
- public function save()
- {
- $data = Request::only(['company_name', 'department', 'position', 'name', 'phone', 'wx', 'email', 'brief']);
- $card = EmployeeCard::where(['employee_id' => $this->request->token['employee_id']])->find();
- if (empty($card)) {
- $card = new EmployeeCard();
- $data['employee_id'] = $this->request->token['employee_id'];
- }
- $data['qrcode'] = $this->getQrPath();
- $card->save($data);
- return json(['code' => self::success, 'msg' => '保存成功']);
- }
- private function getQrPath()
- {
- // 生成二维码
- $rootOrgId = request()->token['root_org'];
- $mini = Miniprogram::where([['root_id', '=', $rootOrgId]])->find();
- $qrObj = new Qrcode;
- $param = [
- 'scene' => 'userCard_' . $this->request->token['employee_id'],
- 'page' => 'index/pages/namecard/namecard',
- 'width' => '280px',
- ];
- $qr = $qrObj->getUnlimited($mini->accesstoken, $param);
- $rs = json_decode($qr, true);
- if (!is_null($rs)) {
- trace('名片二维码生成失败' . ';error:' . $qr, 'error');
- }
- $path = 'userCard' . DIRECTORY_SEPARATOR . uniqid() . '.jpeg';
- ossContentUpload($path, $qr);
- return $path;
- }
- }
|