MemberSign.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\model\member;
  12. use app\dict\member\MemberSignDict;
  13. use core\base\BaseModel;
  14. use think\db\Query;
  15. use think\model\relation\HasOne;
  16. /**
  17. * 会员签到模型
  18. * Class MemberSign
  19. * @package app\model\member
  20. */
  21. class MemberSign extends BaseModel
  22. {
  23. /**
  24. * 数据表主键
  25. * @var string
  26. */
  27. protected $pk = 'sign_id';
  28. /**
  29. * 模型名称
  30. * @var string
  31. */
  32. protected $name = 'member_sign';
  33. // 设置json类型字段
  34. protected $json = ['day_award', 'continue_award'];
  35. // 设置JSON数据返回数组
  36. protected $jsonAssoc = true;
  37. /**
  38. * 会员模型关联
  39. * @return HasOne
  40. */
  41. public function member()
  42. {
  43. return $this->hasOne(Member::class, 'member_id', 'member_id')->joinType('left');
  44. }
  45. /**
  46. * 是否签到名称
  47. * @param $value
  48. * @param $data
  49. * @return mixed|string
  50. */
  51. public function getIsSignNameAttr($value, $data)
  52. {
  53. if (empty($data['is_sign']))
  54. return '';
  55. return MemberSignDict::getStatus()[$data['is_sign']] ?? '';
  56. }
  57. /**
  58. * 创建时间搜索器
  59. * @param Query $query
  60. * @param $value
  61. * @param $data
  62. */
  63. public function searchCreateTimeAttr(Query $query, $value, $data)
  64. {
  65. $start_time = empty($value[0]) ? 0 : strtotime($value[0]);
  66. $end_time = empty($value[1]) ? 0 : strtotime($value[1]);
  67. if ($start_time > 0 && $end_time > 0) {
  68. $query->whereBetweenTime('member_sign.create_time', $start_time, $end_time);
  69. } else if ($start_time > 0 && $end_time == 0) {
  70. $query->where([['member_sign.create_time', '>=', $start_time]]);
  71. } else if ($start_time == 0 && $end_time > 0) {
  72. $query->where([['member_sign.create_time', '<=', $end_time]]);
  73. }
  74. }
  75. }