ActiveShare.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php namespace App\Http\Controllers\Api\Riddle;
  2. use App\Http\Controllers\Api\Api;
  3. use App\Models\Riddle\Active;
  4. use App\Models\Riddle\ActiveShare as Model;
  5. /**
  6. * 活动分享记录
  7. *
  8. * @author 刘相欣
  9. *
  10. * */
  11. class ActiveShare extends Api{
  12. /**
  13. * 获取题目 /api/riddle_active_share/add
  14. *
  15. * */
  16. public function add(Model $Model,Active $Active){
  17. // 接口验签
  18. // $this->verify_sign();
  19. // 检查登录
  20. $uid = $this->checkLogin();
  21. // 获取参数
  22. $activeId = request('active_id',0);
  23. // 获取客户城市的数据
  24. $data = $Active->getOne($activeId);
  25. // 如果存在的话
  26. if( !$data ) return json_send(['code'=>'error','msg'=>'活动已下线或不存在','data'=>'']);
  27. // 查询条件
  28. $map = [];
  29. // 判断周期
  30. if( !empty($data['freq']) ) {
  31. if( $data['freq'] == 1 ) $map = [['insert_time','>=',now()->startOfDay()->getTimestamp()],['insert_time','<=',now()->endOfDay()->getTimestamp()]];
  32. if( $data['freq'] == 2 ) $map = [['insert_time','>=',now()->startOfWeek()->getTimestamp()],['insert_time','<=',now()->endOfWeek()->getTimestamp()]];
  33. if( $data['freq'] == 3 ) $map = [['insert_time','>=',now()->startOfMonth()->getTimestamp()],['insert_time','<=',now()->endOfMonth()->getTimestamp()]];
  34. }
  35. // 获取已分享次数
  36. $shareTotal = $Model->query()->where([['active_id','=',$activeId],['custom_uid','=',$uid]])->where($map)->count();
  37. // 计算剩余分享次数
  38. $data['share_last'] = ($data['join_share'] - $shareTotal <= 0 ? 0 : $data['join_share'] - $shareTotal);
  39. // 如果次数不够
  40. if( $data['share_last'] <= 0 ) return json_send(['code'=>'error','msg'=>'您已经没有分享次数了','data'=>'']);
  41. // 记录分享
  42. $id = $Model->add(['active_id'=>$activeId,'custom_uid'=>$uid]);
  43. // 分享成功
  44. if( !$id ) return json_send(['code'=>'error','msg'=>'记录失败','data'=>'']);
  45. // 返回结果
  46. return json_send(['code'=>'success','msg'=>'记录成功','data'=>['id'=>$id]]);
  47. }
  48. }