CertificateRelated.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\wap\model\topic;
  12. use traits\ModelTrait;
  13. use basic\ModelBasic;
  14. use app\wap\model\topic\ExaminationRecord;
  15. use app\wap\model\special\Special as SpecialModel;
  16. use app\wap\model\special\SpecialSource;
  17. use app\wap\model\special\SpecialWatch;
  18. /**
  19. * 证书关联记录 Model
  20. */
  21. class CertificateRelated extends ModelBasic
  22. {
  23. use ModelTrait;
  24. /**检查是否存在关联
  25. * @param $id
  26. * @param $obtain
  27. */
  28. public static function checkAssociation($id, $obtain)
  29. {
  30. return self::where(['related' => $id, 'obtain' => $obtain])->count() > 0 ? true : false;
  31. }
  32. /**检查是否达到获得证书要求
  33. * @param $id 专题ID
  34. * @param $is_light 是否为轻专题
  35. * @param $obtain
  36. */
  37. public static function getCertificateRelated($id, $is_light, $obtain, $uid)
  38. {
  39. $related = self::where(['related' => $id, 'obtain' => $obtain, 'is_show' => 1])->find();
  40. if (!$related) return false;
  41. $record = CertificateRecord::setWhere($uid)->where(['source_id' => $id, 'obtain' => $obtain])->find();
  42. if ($record) return false;
  43. if ($obtain == 1) {
  44. $count = $is_light == 1 ? 1 : SpecialSource::where(['special_id' => $id])->count();
  45. $watchCount = SpecialWatch::where(['special_id' => $id, 'uid' => $uid])->where('percentage', '>=', (int)$related['condition'])->count();
  46. return $count == $watchCount ? true : false;
  47. } else if ($obtain == 2) {
  48. $record = ExaminationRecord::where(['test_id' => $id, 'uid' => $uid, 'type' => 2, 'is_submit' => 1])->order('id desc')->find();
  49. if (!$record) return false;
  50. return $record['score'] >= $related['condition'] ? true : false;
  51. }
  52. }
  53. }