Demand.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\model\PlatformDemand;
  4. use app\common\model\UserDemand;
  5. use app\common\model\UserSearch;
  6. use library\tools\Data;
  7. /**
  8. * @title 需求
  9. * @controller Demand
  10. * @group base
  11. */
  12. class Demand extends Base
  13. {
  14. // 需要登录的
  15. protected $need_login = [];
  16. public function initialize()
  17. {
  18. parent::initialize();
  19. parent::setUid();
  20. }
  21. /**
  22. * @title 需求接口说明
  23. * @desc 需求接口说明
  24. * @author qc
  25. * @url /api/Demand/classIntro
  26. * @method GET
  27. */
  28. public function classIntro(){}
  29. /**
  30. * @title 需求列表【平台】
  31. * @desc 需求列表【平台】
  32. * @author qc
  33. * @method GET
  34. * @url /api/Demand/getDemandList
  35. * @header name:Authorization require:1 desc:Token
  36. * @param name:title type:string default:-- desc:标题
  37. * @param name:is_tj type:int default:0 desc:是否推荐0否1是
  38. * @param name:is_over type:int default:-1 desc:是否推荐[-1全部0否1是]
  39. * @param name:page type:int default:0 desc:页数
  40. * @param name:page_num type:int default:20 desc:每页数
  41. * @return name:title type:string default:-- desc:标题
  42. * @return name:content type:string default:-- desc:需求
  43. * @return name:images type:string default:-- desc:图片【多张|隔开】
  44. * @return name:user_name type:string default:-- desc:名称
  45. * @return name:headimg type:string default:-- desc:头像
  46. * @return name:money type:float default:-- desc:金额
  47. * @return name:is_over type:int default:-- desc:是否解决【0否,1是】
  48. */
  49. public function getDemandList()
  50. {
  51. $title = input('get.title');
  52. $is_tj = input('get.is_tj',0);
  53. $is_over = input('get.is_over',-1);
  54. $sel_where =[];
  55. $sel_where[] = ['d.is_deleted','=',0];
  56. $sel_where[] = ['d.stats','=',1];
  57. if($title) $sel_where[] = ['d.title','like','%'.$title.'%'];
  58. if($is_over > -1) $sel_where[] = ['d.is_over','=',$is_over];
  59. if($title && $this->user_id) UserSearch::saveSearchTitle($this->user_id,$title,5);
  60. $where_str = '';
  61. if($is_tj) {
  62. $search_log = UserSearch::getSearchTitle($this->user_id,5);
  63. $search_arr = [];
  64. foreach ($search_log as $t){
  65. $search_arr[] = " d.title like '".'%'.$t."%'" .' ';
  66. }
  67. if(!empty($search_arr)) $where_str = implode(' OR ',$search_arr);
  68. }
  69. $app_name = sysconf('app_name');
  70. $app_log = sysconf('app_log');
  71. $list = PlatformDemand::where($sel_where)
  72. ->field('d.*,u.name user_name,u.headimg')
  73. ->alias('d')
  74. ->leftJoin('User u','u.id = d.user_id')
  75. ->when($where_str,function ($query)use ($where_str){if($where_str) $query->where($where_str);})
  76. ->order('d.sort desc ,d.id desc')
  77. ->limit($this->off_set,$this->page_num)->select()->toArray();
  78. array_walk($list,function (&$v)use ($app_name,$app_log){
  79. if(!$v['user_name']) $v['user_name'] = $app_name;
  80. if(!$v['headimg']) $v['headimg'] = $app_log;
  81. });
  82. $this->success('ok',['list'=>$list]);
  83. }
  84. /**
  85. * @title 需求详情【平台】
  86. * @desc 需求详情【平台】
  87. * @author qc
  88. * @method GET
  89. * @url /api/Demand/getDemandInfo
  90. * @header name:Authorization require:1 desc:Token
  91. * @param name:id type:int default:-- desc:平台发布需求id
  92. * @return name:title type:string default:-- desc:标题
  93. * @return name:content type:string default:-- desc:需求
  94. * @return name:images type:string default:-- desc:图片【多张|隔开】
  95. * @return name:user_name type:string default:-- desc:名称
  96. * @return name:headimg type:string default:-- desc:头像
  97. * @return name:money type:float default:-- desc:金额
  98. * @return name:is_over type:int default:-- desc:是否解决【0否,1是】
  99. */
  100. public function getDemandInfo()
  101. {
  102. $detail = PlatformDemand::where('id',input('get.id'))->find();
  103. if(!$detail || $detail->is_deleted == 1) $this->error('该需求已删除');
  104. $this->success('ok',['detail'=>$detail->toArray()]);
  105. }
  106. /**
  107. * @title 以下接口调用验证登录【需要header传Authorization】
  108. * @desc 转发成功后调用
  109. * @author qc
  110. * @method
  111. * @url /api/Demand/needLogin
  112. */
  113. public function needLogin(){}
  114. /**
  115. * @title 用户提交||修改需求【用户】
  116. * @desc 用户提交||修改需求
  117. * @author qc
  118. * @method POST
  119. * @url /api/Demand/commitDemand
  120. * @param name:id type:int default:-- desc:修改必传
  121. * @param name:title type:string default:-- desc:标题
  122. * @param name:content type:string default:1 desc:内容
  123. * @param name:money type:float default:0 desc:价格【设计图没有,可以不传】
  124. */
  125. public function commitDemand()
  126. {
  127. $title = input('post.title');
  128. $content = input('post.content');
  129. $money = input('post.money');
  130. $id = input('post.id');
  131. if(!$title ||$content) $this->error('标题和需求内容必填');
  132. Data::save('UserDemand',['title'=>$title,'content'=>$content,'user_id'=>$this->user_id,'money'=>$money,'id'=>$id],'user_id',['user_id'=>$this->user_id,'id'=>$id]);
  133. $this->success('提交成功,请等待审核');
  134. }
  135. /**
  136. * @title 获取我的需求列表【用户】
  137. * @desc 获取我的图文列表【用户】
  138. * @author qc
  139. * @method GET
  140. * @url /api/Demand/getMyDemandList
  141. * @header name:Authorization require:1 desc:Token
  142. * @param name:title type:string default:-- desc:标题
  143. * @param name:page type:int default:0 desc:页数
  144. * @param name:page_num type:int default:20 desc:每页数
  145. * @return name:title type:string default:-- desc:标题
  146. * @return name:content type:string default:-- desc:需求
  147. * @return name:status type:int default:-- desc:0待审核1审核通过2审核未通过
  148. * @return name:remark type:string default:-- desc:审核备注
  149. */
  150. public function getMyDemandList()
  151. {
  152. $sel_where = [];
  153. $sel_where[] = ['is_deleted','=',0];
  154. $sel_where[] = ['user_id','=',$this->user_id];
  155. $title = input('get.title');
  156. if($title) $sel_where[] = ['title','like','%'.$title.'%'];
  157. $list = UserDemand::where($sel_where)
  158. ->field('id,title,content,status,remark')
  159. ->order('id desc')
  160. ->limit($this->off_set,$this->page_num)
  161. ->select()->toArray();
  162. $this->success('ok',['list'=>$list]);
  163. }
  164. /**
  165. * @title 获取我的需求详情【用户】
  166. * @desc 获取我的需求详情【用户】
  167. * @author qc
  168. * @method GET
  169. * @url /api/Demand/getMyDemandDetail
  170. * @header name:Authorization require:1 desc:Token
  171. * @param name:id type:int default:0 desc:需求记录id
  172. * @return name:title type:string default:-- desc:标题
  173. * @return name:content type:string default:-- desc:需求
  174. * @return name:status type:int default:-- desc:0待审核1审核通过2审核未通过
  175. * @return name:remark type:string default:-- desc:审核备注
  176. * @return name:money type:float default:-- desc:金额
  177. */
  178. public function getMyDemandDetail()
  179. {
  180. $detail = UserDemand::where(['user_id'=>$this->user_id,'id'=>input('get.id')])->find();
  181. if(!$detail || $detail->is_deleted == 1) $this->error('该需求已删除');
  182. $this->success('ok',['detail'=>$detail->toArray()]);
  183. }
  184. /**
  185. * @title 删除我的需求【用户】
  186. * @desc 删除我的需求【用户】
  187. * @author qc
  188. * @method POST
  189. * @url /api/Demand/delMyDemand
  190. * @param name:id type:int default:-- desc:需求记录id
  191. */
  192. public function delMyDemand()
  193. {
  194. UserDemand::where(['id'=>input('post.id'),'user_id'=>$this->user_id])->delete();
  195. $this->success('删除成功');
  196. }
  197. }