UserVipForm.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Admin\Actions\Users;
  3. use App\Models\User;
  4. use App\Models\UserVipLogModel;
  5. use App\Models\VipModel;
  6. use Dcat\Admin\Contracts\LazyRenderable;
  7. use Dcat\Admin\Traits\LazyWidget;
  8. use Dcat\Admin\Widgets\Form;
  9. use Illuminate\Support\Facades\DB;
  10. use PHPUnit\Util\Exception;
  11. class UserVipForm extends Form implements LazyRenderable
  12. {
  13. use LazyWidget;
  14. public function __construct($data = [], $key = null)
  15. {
  16. parent::__construct($data, $key);
  17. }
  18. public function handle(array $input)
  19. {
  20. DB::beginTransaction();
  21. try {
  22. $user = User::query()->find($input['id']);
  23. if(!$user){
  24. throw new Exception("请刷新后重试");
  25. }
  26. if($input['vip']>0){
  27. $vip_info = VipModel::query()->find($input['vip']);
  28. $user_vip_log = UserVipLogModel::query()->where(['user_id'=>$user->id])->first();
  29. if(!$user_vip_log){
  30. UserVipLogModel::query()->create([
  31. 'user_id'=>$user->id,
  32. 'status'=>1,
  33. 'day'=>$vip_info['day'],
  34. 'end_day'=> date("Y-m-d H:i:s",strtotime("+".$vip_info['day']." day")),
  35. ]);
  36. }elseif($user_vip_log->status==1){
  37. $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime($user_vip_log->end_day."+".$vip_info['day']." day"));
  38. $user_vip_log->save();
  39. }elseif ($user_vip_log->status==0){
  40. $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime("+".$vip_info['day']." day"));
  41. $user_vip_log->status = 1;
  42. $user_vip_log->save();
  43. }
  44. $user->is_vip = 1;
  45. $user->save();
  46. }else{
  47. if($user_vip_log = UserVipLogModel::query()->where(['user_id'=>$user->id])->first()){
  48. $user_vip_log->status = 0;
  49. $user_vip_log->save();
  50. }
  51. $user->is_vip = 0;
  52. $user->save();
  53. }
  54. DB::commit();
  55. }catch (\Exception $exception){
  56. DB::rollBack();
  57. return $this->response()->error($exception->getMessage());
  58. }
  59. return $this->response()->success('保存成功')->refresh();
  60. }
  61. public function form()
  62. {
  63. $vip = VipModel::query()->orderBy('id','asc')->get();
  64. $vip_arr = array('0'=>'无');
  65. $vip = $vip->toArray();
  66. foreach ($vip as $k=>$v){
  67. $vip_arr[$v['id']] = $v['title'];
  68. }
  69. $this->hidden('id')->value($this->payload['id']);
  70. $this->select('vip', 'VIP')->options($vip_arr);
  71. }
  72. }