Cert.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. * @Created by PhpStorm
  4. * @author: Kirin
  5. * @day: 2023/8/23
  6. * @time: 17:04
  7. */
  8. namespace app\models\user;
  9. use app\admin\model\system\SystemAttachment;
  10. use crmeb\basic\BaseModel;
  11. use crmeb\services\FormBuilder;
  12. use crmeb\services\UtilService;
  13. use crmeb\traits\ModelTrait;
  14. use think\facade\Route;
  15. class Cert extends BaseModel
  16. {
  17. /**
  18. * 数据表主键
  19. * @var string
  20. */
  21. protected $pk = 'id';
  22. /**
  23. * 模型名称
  24. * @var string
  25. */
  26. protected $name = 'cert';
  27. public static $level = [
  28. 0 => '无',
  29. 1 => '低级',
  30. 2 => '中级',
  31. 3 => '高级',
  32. 4 => '特级',
  33. ];
  34. public static $gender = [
  35. 0 => '男',
  36. 1 => '女',
  37. ];
  38. protected $append = [
  39. 'level_name',
  40. 'gender_name',
  41. ];
  42. use ModelTrait;
  43. public function getLevelNameAttr($value, $data)
  44. {
  45. return self::$level[$data['level'] ?: 0];
  46. }
  47. public function getAddTimeAttr($value)
  48. {
  49. return date('Y-m-d H:i:s', $value);
  50. }
  51. public function getGenderNameAttr($value, $data)
  52. {
  53. return self::$gender[$data['gender'] ?: 0];
  54. }
  55. public static function getList($where)
  56. {
  57. if (isset($where['status']) && $where['status'] != '') {
  58. $model = self::where('status', $where['status']);
  59. } else {
  60. $model = new self();
  61. }
  62. if (isset($where['uid']) && $where['uid'] != '') {
  63. $model = $model->where('uid', $where['uid']);
  64. }
  65. $count = $model->count();
  66. $data = $model->page((int)$where['page'], (int)$where['limit'])->order('id desc')->select();
  67. return compact('count', 'data');
  68. }
  69. public static function add_cert($uid, $name, $gender, $idcard, $job, $photo, $level = '')
  70. {
  71. if (self::be(['idcard' => $idcard, 'status' => [0, 1]])) {
  72. return self::setErrorInfo('已有身份证号码相同的记录存在');
  73. }
  74. $add_time = time();
  75. return self::create(compact('uid', 'name', 'gender', 'idcard', 'job', 'photo', 'level', 'add_time'));
  76. }
  77. public static function search($name)
  78. {
  79. return self::where('name|iscard|code', 'like', "%$name%")->where('status', 1)->find();
  80. }
  81. public static function check_cert($id, $data)
  82. {
  83. $info = self::get($id);
  84. // if ($info['status'] != 0) return self::setErrorInfo('记录已处理');
  85. if (!$info['code'] && $data['status'] == 1) {
  86. $date = date('Y-m-d');
  87. $code = self::createNewCode($id);
  88. $data['date'] = $date;
  89. $data['code'] = $code;
  90. if (!$info['qrcode']) {
  91. $name = 'cert_' . $info['uid'] . '_' . $code . '.jpg';
  92. $imageInfo = SystemAttachment::getInfo($name, 'name');
  93. if (!$imageInfo) {
  94. $codeUrl = UtilService::setHttpType(sys_config('site_url') . '/index/pages/certificate/showCertificate?id=' . $id, 1);//二维码链接
  95. $imageInfo = UtilService::getQRCodePath($codeUrl, $name);
  96. if (!$imageInfo) return self::setErrorInfo('二维码生成失败');
  97. SystemAttachment::attachmentAdd($imageInfo['name'], $imageInfo['size'], $imageInfo['type'], $imageInfo['dir'], $imageInfo['thumb_path'], 1, $imageInfo['image_type'], $imageInfo['time'], 2);
  98. $url = $imageInfo['dir'];
  99. } else $url = $imageInfo['att_dir'];
  100. $data['qrcode'] = $url;
  101. if ($imageInfo['image_type'] == 1) $data['qrcode'] = sys_config('site_url') . $url;
  102. }
  103. $res = self::where('id', $id)->update($data);
  104. } else {
  105. $res = self::where('id', $id)->update($data);
  106. }
  107. return $res;
  108. }
  109. public static function createNewCode($id)
  110. {
  111. do {
  112. $str = date('ymd') . strtoupper(substr(md5($id . rand(100000, 999999)), 3, 8));
  113. } while (self::be(['code' => $str]));
  114. return $str;
  115. }
  116. }