Hire.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 任务大厅
  7. */
  8. class Hire extends Api
  9. {
  10. protected $noNeedLogin = [];
  11. protected $noNeedRight = ['*'];
  12. //发布任务
  13. public function add_one(){
  14. $title = input('title','','trim');
  15. $info = input('info','','trim');
  16. $type = input('type',1,'intval');
  17. $goldprice = input('goldprice',0,'intval');
  18. if(!$title || !$type || !$goldprice){
  19. $this->error(__('Invalid parameters'));
  20. }
  21. $data = [
  22. 'user_id' => $this->auth->id,
  23. 'title' => $title,
  24. 'info' => $info,
  25. 'type' => $type,
  26. 'goldprice' => $goldprice,
  27. 'createtime' => time(),
  28. 'status' => 1,
  29. ];
  30. $id = Db::name('hire')->insertGetId($data);
  31. $this->success('发布成功',$id);
  32. }
  33. //需求市场,个人服务,两个列表
  34. public function hire_list(){
  35. $type = input('type',1);
  36. $list = Db::name('hire')
  37. ->alias('hire')
  38. ->join('user','hire.user_id = user.id','LEFT')
  39. ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,hire.id,hire.title,hire.info,hire.type,hire.goldprice,hire.status')
  40. ->where('hire.type',$type)
  41. ->where('hire.status',1)
  42. ->order('hire.id desc')
  43. ->autopage()->select();
  44. $list = list_domain_image($list,['avatar']);
  45. if(!empty($list)){
  46. $my_lingqu = Db::name('user_hire')->where('user_id',$this->auth->id)->where('hire_id','IN',array_column($list,'id'))->column('hire_id');
  47. foreach($list as $key => &$val){
  48. //是否领取
  49. $val['is_lingqu'] = in_array($val['id'],$my_lingqu) ? 1 : 0;
  50. //是否是我发布
  51. $val['is_my'] = $val['user_id'] == $this->auth->id ? 1 : 0;
  52. }
  53. }
  54. $this->success('success',$list);
  55. }
  56. //我领取的列表
  57. public function my_join_list(){
  58. $list = Db::name('user_hire')->alias('uh')
  59. ->join('hire','uh.hire_id = hire.id','LEFT')
  60. ->join('user','hire.user_id = user.id','LEFT')
  61. ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,hire.id,hire.title,hire.info,hire.type,hire.goldprice,hire.status')
  62. ->where('uh.user_id',$this->auth->id)
  63. ->order('uh.id desc')
  64. ->autopage()->select();
  65. $list = list_domain_image($list,['avatar']);
  66. $this->success('success',$list);
  67. }
  68. //我发布的列表
  69. public function my_own_list(){
  70. $list = Db::name('hire')
  71. ->alias('hire')
  72. ->join('user','hire.user_id = user.id','LEFT')
  73. ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,hire.id,hire.title,hire.info,hire.type,hire.goldprice,hire.status')
  74. ->where('hire.user_id',$this->auth->id)
  75. ->order('hire.id desc')
  76. ->autopage()->select();
  77. $list = list_domain_image($list,['avatar']);
  78. $this->success('success',$list);
  79. }
  80. //某任务,参与人员
  81. public function hire_joinuser_list(){
  82. $hire_id = input('hire_id',0);
  83. $list = Db::name('user_hire')->alias('uh')
  84. ->join('user','uh.user_id = user.id','LEFT')
  85. ->field('user.id as user_id,user.u_id,user.username,user.nickname,user.avatar,user.gender,user.desc')
  86. ->where('uh.hire_id',$hire_id)
  87. ->select();
  88. $list = list_domain_image($list,['avatar']);
  89. $this->success('success',$list);
  90. }
  91. //领取一个任务
  92. public function join_hire(){
  93. //$this->apiLimit();
  94. $hire_id = input('hire_id',0);
  95. $hire_info = Db::name('hire')->where('id',$hire_id)->find();
  96. if($hire_info['status'] != 1){
  97. $this->error('任务已关闭,请刷新重试');
  98. }
  99. if($hire_info['user_id'] == $this->auth->id){
  100. $this->error('不能领取自己发布的任务');
  101. }
  102. //去重
  103. $map = [
  104. 'user_id' => $this->auth->id,
  105. 'hire_id' => $hire_id
  106. ];
  107. $check = Db::name('user_hire')->where($map)->find();
  108. if(!empty($check)){
  109. $this->error('已经领取该任务,无需重复领取');
  110. }
  111. $map['createtime'] = time();
  112. Db::name('user_hire')->insertGetId($map);
  113. $this->success('领取成功');
  114. }
  115. //关闭我的任务
  116. public function close_one(){
  117. $hire_id = input('hire_id',0);
  118. if(!$hire_id){
  119. $this->error(__('Invalid parameters'));
  120. }
  121. $map = [
  122. 'user_id' => $this->auth->id,
  123. 'id' => $hire_id,
  124. ];
  125. $rs = Db::name('hire')->where($map)->update(['status'=>0]);
  126. $this->success('操作成功');
  127. }
  128. }