Recruitment.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php namespace App\Http\Controllers\Api;
  2. use App\Http\Controllers\Api\Api;
  3. use App\Models\RecruitmentActive as Model;
  4. use App\Models\RecruitmentPrizeRecord;
  5. use App\Models\RecruitmentRecord;
  6. use App\Models\Custom;
  7. use App\Models\WeiBan\Tags;
  8. use Vinkla\Hashids\Facades\Hashids;
  9. /**
  10. * 拉新活动接口
  11. *
  12. * @author 刘相欣
  13. *
  14. * */
  15. class Recruitment extends Api{
  16. /**
  17. * 获取拉新活动 /api/recruitment/get_info
  18. *
  19. * */
  20. public function get_info(Model $Model,Custom $Custom,Tags $WeiBanTags){
  21. // 接口验签
  22. // $this->verify_sign();
  23. // 验证登录
  24. $uid = $this->checkLogin();
  25. // 获取客户城市ID
  26. $custom = $Custom->getOne($uid);
  27. //查询拉新活动
  28. if( !$custom['city_id'] ) return json_send(['code'=>'error','msg'=>'请选择所在城市后下单','data'=>['error'=>'请选择所在城市后下单']]);
  29. // 获取城市ID
  30. $cityId = $custom['city_id'];
  31. // 查询用户标签
  32. $tagsList = $WeiBanTags->getListByWeibanExtid($custom['weiban_extid']);
  33. $tagsList = array_column($tagsList,'name');
  34. // 查询数据
  35. $map = [['start_time','<=',time()], ['end_time','>',time()],['status','=',0]];
  36. // 查询数据
  37. $activeList = $Model->query()->where($map)->get(['id','name','banner_img','start_time','end_time','status','city_ids','tag_except','tag_scope','active_rule'])->toArray();
  38. // 获取参数
  39. $activeInfo = [];
  40. // 循环处理活动数据
  41. foreach ( $activeList as $active ) {
  42. // 如果城市限制并且不在在城市范围内,不允许参加
  43. if ( $active['city_ids'] && !in_array($cityId,explode(',',$active['city_ids'])) ) continue;
  44. // 判断标签限制并且不在标签限制范围内,不允许参加
  45. if( $active['tag_scope'] && !array_intersect(explode(',',$active['tag_scope']),$tagsList) ) continue;
  46. // 判断标签排除限制并且在标签排除范围内,不允许参加
  47. if( $active['tag_except'] && array_intersect(explode(',',$active['tag_except']),$tagsList) ) continue;
  48. // 获取活动信息
  49. $activeInfo = $active;
  50. }
  51. // 如果存在活动信息
  52. if ( $activeInfo ) {
  53. $activeInfo['start_time'] = date('Y-m-d H:i:s',$activeInfo['start_time']);
  54. $activeInfo['end_time'] = date('Y-m-d H:i:s',$activeInfo['end_time']);
  55. $activeInfo['banner_img'] = $activeInfo['banner_img'] ? path_compat($activeInfo['banner_img']) : '';
  56. }
  57. // 返回结果
  58. return json_send(['code'=>'success','msg'=>'获取成功','data'=>$activeInfo]);
  59. }
  60. /**
  61. * 获取奖励记录 /api/recruitment/get_record
  62. *
  63. * */
  64. public function get_record(RecruitmentPrizeRecord $recruitmentPrizeRecord){
  65. // 接口验签
  66. // $this->verify_sign();
  67. // 验证登录
  68. $uid = $this->checkLogin();
  69. // 接收参数
  70. $limit = request('limit',15);
  71. // 查询条件
  72. $map = [['recruitment_prize_record.custom_uid','=',$uid]];
  73. // 查询数据
  74. $Paginator = $recruitmentPrizeRecord->query()
  75. ->join('recruitment_record','recruitment_record.id','=','recruitment_prize_record.recruitment_record_id')
  76. ->join('custom','custom.uid','=','recruitment_record.new_uid')
  77. ->where($map)
  78. ->orderByDesc('id')
  79. ->paginate($limit,['recruitment_prize_record.id','recruitment_prize_record.prize_type','recruitment_prize_record.prize','recruitment_prize_record.type','recruitment_prize_record.custom_uid','recruitment_prize_record.insert_time','recruitment_prize_record.recruitment_record_id','custom.username']);
  80. // 重置数据
  81. $list = [];
  82. // 获取数据
  83. $list['total'] = $Paginator->total();
  84. $list['current_page'] = $Paginator->currentPage();
  85. $list['per_page'] = $Paginator->perPage();
  86. $list['last_page'] = $Paginator->lastPage();
  87. $list['data'] = $Paginator->items();
  88. // 循环数据
  89. foreach ($list['data'] as $key => $value) {
  90. // 处理时间
  91. $value['insert_time'] = date('Y-m-d H:i:s',$value['insert_time']);
  92. // 重组
  93. $list['data'][$key] = $value;
  94. }
  95. // 返回数据
  96. return json_send(['code'=>'success','msg'=>'获取成功','data'=>$list]);
  97. }
  98. }