User.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zilongs
  5. * Date: 20-9-23
  6. * Time: 上午11:04
  7. */
  8. namespace App\Models;
  9. use DB;
  10. class User extends BaseModel
  11. {
  12. public function getCouponNumAttribute()
  13. {
  14. return UserCoupon::where('user_id', $this->id)->where('status', 1)->where('expire_time', '>', time())->count();
  15. }
  16. //通过token获取用户信息
  17. public static function getUserByToken($is_exit = true)
  18. {
  19. $auth = request()->header('token');
  20. if (empty($auth)) {
  21. if (!$is_exit) {
  22. return '';
  23. }
  24. exit_out(null, 401, '认证失效,请重新登录');
  25. }
  26. $arr = aes_decrypt($auth);
  27. if (empty($arr['id'])) {
  28. if (!$is_exit) {
  29. return '';
  30. }
  31. exit_out(null, 401, '认证失效,请重新登录');
  32. }
  33. $user = User::where('id', $arr['id'])->first();
  34. if (empty($user)){
  35. if (!$is_exit) {
  36. return '';
  37. }
  38. exit_out(null, 601, '该账号已被删除');
  39. }
  40. $user = $user->toArray();
  41. if ($user['status'] == 0){
  42. exit_out(null, 602, '该账号已被冻结');
  43. }
  44. return $user;
  45. }
  46. //改变用户余额
  47. public static function changeBalance($user_id, $change_balance, $type, $relation_id, $remark, $admin_user_id = 0)
  48. {
  49. $user = User::select(['balance'])->where('id', $user_id)->first();
  50. if ($type == 2) {
  51. User::where('id', $user_id)->update([
  52. 'balance' => DB::raw('balance + '.$change_balance),
  53. 'topup_balance' => DB::raw('topup_balance + '.$change_balance),
  54. ]);
  55. }
  56. elseif ($type == 3) {
  57. User::where('id', $user_id)->update([
  58. 'balance' => DB::raw('balance + '.$change_balance),
  59. 'giving_balance' => DB::raw('giving_balance + '.$change_balance),
  60. ]);
  61. }
  62. else {
  63. User::where('id', $user_id)->increment('balance', $change_balance);
  64. }
  65. UserBalanceLog::create([
  66. 'user_id' => $user_id,
  67. 'admin_user_id' => $admin_user_id,
  68. 'type' => $type,
  69. 'relation_id' => $relation_id,
  70. 'before_balance' => $user['balance'],
  71. 'change_balance' => $change_balance,
  72. 'after_balance' => $user['balance'] + $change_balance,
  73. 'remark' => $remark,
  74. ]);
  75. return true;
  76. }
  77. }