www_fpvone_cn/application/index/service/CertificateService.php

164 lines
4.9 KiB
PHP

<?php
/**
* @Created by PhpStorm.
* @Author:Soar
* @Time:2023/12/27 10:42
*/
namespace app\index\service;
use app\admin\model\cms\Archives;
use app\common\model\PlayerCertificate;
use app\common\model\Players;
use app\admin\model\Club;
class CertificateService extends Service
{
public function __construct()
{
$this->playerCertificateModel = new PlayerCertificate();
}
/**
* 获取用户证书,如果不存在则创建
* @Author:Soar
* @Time:2023/12/27 10:58
* @param array $param
* @return object|int
*/
public function getCertificate(array $param)
{
$match_id = $param['match_id'] ? $param['match_id'] : 0;
$player_id = $param['player_id'] ? $param['player_id'] : 0;
$member_id = $param['member_id'] ? $param['member_id'] : 0;
$club_id = $param['club_id'] ? $param['club_id'] : 0;
$certificate_res = $this->playerCertificateModel
->where("match_id", $match_id)
->where("player_id", $player_id)
->where("member_id", $member_id)
->where("club_id", $club_id)
->find();
if (empty($certificate_res)) {
$data['certificate_number'] = CertificateService::generateUUID();
$data['match_id'] = $match_id;
$data['player_id'] = $player_id;
$data['member_id'] = $member_id;
$data['club_id'] = $club_id;
return $this->addCertificate($data) ? $data['certificate_number'] : 0;
}
return $certificate_res->certificate_number ? $certificate_res->certificate_number : 0;
}
/**
* 根据证书编号 获取详细信息
* @Author:Soar
* @Time:2023/12/27 13:17
* @param string $certificate_number
* @return array
*/
public function getCertificateToNumber(string $certificate_number)
{
$info = $this->playerCertificateModel
->where("certificate_number", $certificate_number)
->find()->toArray();
$archives = new Archives();
$match_info = $archives->where("id", $info['match_id'])->find();
if(!empty($info['player_id'])){
$players_info = Players::get($info['player_id'])->toArray();
$res['name'] = $players_info['real_name'];
$res['match_title'] = @$match_info->title ? @$match_info->title : "赛事已被删除";
$res['certificate_number'] = $info['certificate_number'];
}else{
$club = new Club();
$club_info = $club->where('id',$info['club_id'])->find();
$res['name'] = $club_info['name_short'];
$res['match_title'] = @$match_info->title ? @$match_info->title : "赛事已被删除";
$res['certificate_number'] = $info['certificate_number'];
}
return $res;
}
/**
* 添加证书
* @Author:Soar
* @Time:2023/12/27 11:01
* @param array $param
* @return int|string
*/
public function addCertificate(array $param)
{
$data['match_id'] = $param['match_id'] ? $param['match_id'] : 0;
$data['player_id'] = $param['player_id'] ? $param['player_id'] : 0;
$data['member_id'] = $param['member_id'] ? $param['member_id'] : 0;
$data['club_id'] = $param['club_id'] ? $param['club_id'] : 0;
$data['certificate_number'] = $param["certificate_number"] ? $param["certificate_number"] : CertificateService::generateUUID();
$data['look_num'] = 0;
return $this->playerCertificateModel->insert($data);
}
/**
* 验证证书编号
* @Author:Soar
* @Time:2023/12/27 11:02
* @param string $certificate_number
* @return bool
*/
public function checkCertificate($certificate_number)
{
$certificate_res = $this->playerCertificateModel
->where("certificate_number", $certificate_number)
->field("certificate_number")
->find();
if ($certificate_res ? true : false) {
$this->updateCertificate($certificate_number);
}
return $certificate_res ? true : false;
}
/**
* 更新验证次数
* @Author:Soar
* @Time:2023/12/27 11:05
* @param string $certificate_number
* @return bool
*/
public function updateCertificate(string $certificate_number)
{
$res = $this->playerCertificateModel
->where("certificate_number", $certificate_number)
->setInc("look_num");
return $res ? true : false;
}
/**
* 生成UUID
* @Author:Soar
* @Time:2023/12/27 10:59
* @return string
*/
public static function generateUUID()
{
$chars = md5(uniqid(mt_rand(), true));
$uuid = substr ( $chars, 0, 8 ) . '-'
. substr ( $chars, 8, 4 ) . '-'
. substr ( $chars, 12, 4 ) . '-'
. substr ( $chars, 16, 4 ) . '-'
. substr ( $chars, 20, 12 );
return $uuid ;
}
}