User.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace App\Models;
  3. use App\Traits\ModelHelpers;
  4. use Carbon\Carbon;
  5. use Illuminate\Database\Eloquent\Model;
  6. class User extends Model
  7. {
  8. //
  9. use ModelHelpers;
  10. protected $table = "users";
  11. // protected $fillable = ['status', 'mobile', 'is_bind_mobile', 'is_card_certified', 'is_match_ride_age', 'card_id', 'remark'];
  12. protected $guarded = [];
  13. // 注册来源
  14. const REGISTER_SOURCE_WEAPP = 'weapp';
  15. const REGISTER_SOURCE_MOBILE = 'mobile';
  16. const REGISTER_SOURCE_ALIPAYMINI = 'alipaymini';
  17. public static $registerSourceMaps = [
  18. self::REGISTER_SOURCE_WEAPP => '微信小程序',
  19. self::REGISTER_SOURCE_MOBILE => '手机号',
  20. self::REGISTER_SOURCE_ALIPAYMINI=>'支付宝小程序',
  21. ];
  22. //账号状态
  23. const STATUS_OK = 1;
  24. const STATUS_PAUSE = 0;
  25. public static $statusMaps = [
  26. self::STATUS_PAUSE => '暂停使用',
  27. self::STATUS_OK => '正常'
  28. ];
  29. // 认证状态
  30. const CARD_OK = 1;
  31. const CARD_NO = 0;
  32. public static $cardMaps = [
  33. self::CARD_OK => '已实名认证',
  34. self::CARD_NO => '未实名认证'
  35. ];
  36. // 押金状态
  37. const DEPOSIT_OK = 1;
  38. const DEPOSIT_NO = 0;
  39. public static $depositMaps = [
  40. self::DEPOSIT_OK => '已缴纳押金',
  41. self::DEPOSIT_NO => '未缴纳押金'
  42. ];
  43. const IS_COUPON_DEPOSIT_FREE_OK = 1;
  44. const IS_COUPON_DEPOSIT_FREE_NO = 0;
  45. public static $isCouponDepositFreeMaps = [
  46. self::IS_COUPON_DEPOSIT_FREE_OK => '有免押金劵',
  47. self::IS_COUPON_DEPOSIT_FREE_NO => '没有免押金劵',
  48. ];
  49. const DEPOSIT_MONEY = 1;
  50. const DEPOSIT_CARD = 2;
  51. const DEPOSIT_COUPON = 3;
  52. const DEPOSIT_STUDENT = 4;
  53. const DEPOSIT_TYPE_NO = 0;
  54. public static $depositTypeMaps = [
  55. self::DEPOSIT_TYPE_NO => '没有缴纳押金',
  56. self::DEPOSIT_MONEY => '缴纳押金',
  57. self::DEPOSIT_CARD => '免押金卡',
  58. self::DEPOSIT_COUPON => '免押金劵',
  59. self::DEPOSIT_STUDENT => '师生认证',
  60. ];
  61. // 是否到了骑车年龄的状态
  62. const RIDE_BIKE_AGE_OK = 1;
  63. const RIDE_BIKE_AGE_NO = 0;
  64. public static $rideBikeAgeMaps = [
  65. self::RIDE_BIKE_AGE_OK => '已到骑车的年龄',
  66. self::RIDE_BIKE_AGE_NO => '未到骑车的年龄'
  67. ];
  68. // 手机号绑定状态
  69. const BIND_MOBILE_OK = 1;
  70. const BIND_MOBILE_NO = 0;
  71. public static $bingMobileMaps = [
  72. self::BIND_MOBILE_OK => '已绑定收手机号',
  73. self::BIND_MOBILE_NO => '未绑定手机号'
  74. ];
  75. // 用户授权状态
  76. const REGISTER_OK = 1;
  77. const REGISTER_NO = 0;
  78. public static $registerMaps = [
  79. self::REGISTER_OK => '已授权',
  80. self::REGISTER_NO => '未授权'
  81. ];
  82. // 用户授权状态
  83. const IS_STUDENT_OK = 1;
  84. const IS_STUDENT_NO = 0;
  85. public static $isStudentMaps = [
  86. self::IS_STUDENT_OK => '学生',
  87. self::IS_STUDENT_NO => '不是'
  88. ];
  89. public function areas()
  90. {
  91. return $this->belongsTo(Area::class, 'register_area_id', 'id');
  92. }
  93. public function auth()
  94. {
  95. return $this->hasOne(Auth::class)->where('type', Auth::TYPE_WEAPP);
  96. }
  97. public function userPhone()
  98. {
  99. return $this->hasOne(UserPhoneDetail::class);
  100. }
  101. public function getIsDepositAttribute($value)
  102. {
  103. if ((int)$this->deposit_type === self::DEPOSIT_CARD && (int)$value === self::DEPOSIT_OK) {
  104. $deposit_expire_time = Carbon::parse($this->deposit_expire_time);
  105. if (Carbon::now()->gt($deposit_expire_time)) {
  106. //判断第一个日期是否比第二个日期大
  107. $this->updateDeposit($this->id);
  108. $this->save();
  109. return self::DEPOSIT_NO;
  110. }
  111. }
  112. return $value;
  113. }
  114. public function updateDeposit($user_id)
  115. {
  116. self::query()->where('id', $user_id)->update(['is_deposit' => User::DEPOSIT_NO, 'is_student' => self::IS_STUDENT_NO, 'deposit_type' => User::DEPOSIT_TYPE_NO]);
  117. }
  118. }