IndexController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: 思维定制
  5. * Date: 2018/7/12
  6. * Time: 16:03
  7. */
  8. namespace App\Http\Controllers\Api\V1;
  9. use App\Models\MessagesFollowerModel;
  10. use App\Models\MessagesInfoModel;
  11. use App\Models\MessagesTagModel;
  12. use App\Models\PaymentInfoModel;
  13. use App\Models\SeenModel;
  14. use App\Models\UserInfoModel;
  15. use Illuminate\Http\Request;
  16. use Illuminate\Support\Facades\DB;
  17. use Validator;
  18. use App\Services\Base\ErrorCode;
  19. class IndexController extends Controller
  20. {
  21. /**
  22. * @api {get} /api/index/tag 筛选标签(indexTag)
  23. * @apiDescription 筛选标签(indexTag)indexTag
  24. * @apiGroup Index
  25. * @apiPermission none
  26. * @apiVersion 0.1.0
  27. * @apiParam {string} keywords 关键词
  28. * @apiSuccessExample {json} Success-Response:
  29. * HTTP/1.1 200 OK
  30. * {
  31. * "status": true,
  32. * "status_code": 0,
  33. * "message": "",
  34. * "data": [
  35. * {
  36. * "id": 1,
  37. * "name": "标签1",
  38. * "sort": 1,
  39. * "deleted_at": null,
  40. * "created_at": "2018-07-12 17:03:07",
  41. * "updated_at": "2018-07-12 17:03:11"
  42. * }
  43. * ]
  44. * }
  45. * @apiErrorExample {json} Error-Response:
  46. * HTTP/1.1 400 Bad Request
  47. * {
  48. * "state": false,
  49. * "code": 1000,
  50. * "message": "传入参数不正确",
  51. * "data": null or []
  52. * }
  53. */
  54. public function indexTag(Request $request)
  55. {
  56. $keywords = $request->input('keywords');
  57. $keywords = '%'.$keywords.'%';
  58. $data = MessagesTagModel::where([['name','like',$keywords]])->get();
  59. return $this->api($data);
  60. }
  61. /**
  62. * @api {get} /api/index/menu 知识列表(indexMenu)
  63. * @apiDescription 知识列表(indexMenu)indexMenu
  64. * @apiGroup Index
  65. * @apiPermission none
  66. * @apiVersion 0.1.0
  67. * @apiParam {string} tag_id 标签ID
  68. * @apiSuccessExample {json} Success-Response:
  69. * HTTP/1.1 200 OK
  70. * {
  71. * "status": true,
  72. * "status_code": 0,
  73. * "message": "",
  74. * "data": {
  75. * "menu": [
  76. * {
  77. * "id": 4,
  78. * "name": "标签4",
  79. * "sort": 4,
  80. * "deleted_at": null,
  81. * "created_at": "2018-07-12 17:04:31",
  82. * "updated_at": "2018-07-12 17:04:34"
  83. * }
  84. * ],
  85. * "message": {
  86. * "current_page": 1,
  87. * "data": [
  88. * {
  89. * "id": 1,
  90. * "title": "爱我的",
  91. * "type": 0,
  92. * "owner": "Richod"
  93. * }
  94. * ],
  95. * "first_page_url": "http://zsff.xcx.com/api/index/menu?page=1",
  96. * "from": 1,
  97. * "last_page": 1,
  98. * "last_page_url": "http://zsff.xcx.com/api/index/menu?page=1",
  99. * "next_page_url": null,
  100. * "path": "http://zsff.xcx.com/api/index/menu",
  101. * "per_page": 1,
  102. * "prev_page_url": null,
  103. * "to": 1,
  104. * "total": 1
  105. * }
  106. * }
  107. *}
  108. * @apiErrorExample {json} Error-Response:
  109. * HTTP/1.1 400 Bad Request
  110. * {
  111. * "state": false,
  112. * "code": 1000,
  113. * "message": "传入参数不正确",
  114. * "data": null or []
  115. * }
  116. */
  117. public function indexMenu(Request $request)
  118. {
  119. $validator = Validator::make($request->all(),
  120. [
  121. 'tag_id' => 'integer'
  122. ],
  123. [
  124. 'tag_id.integer' => '标签参数格式不对!'
  125. ]
  126. );
  127. if ($validator->fails()) {
  128. return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
  129. }
  130. $data = $request->input();
  131. $menu = MessagesTagModel::orderBy('sort','Desc')->take(3)->get();
  132. if(!isset($data['tag_id']) || $data['tag_id'] == 0){
  133. $message = MessagesInfoModel::where('state',0)->select('id','title','type')->orderBy('id','Desc')->paginate(1);
  134. } else {;
  135. $message = MessagesTagModel::find($data['tag_id'])->messgaes()->where('state',0)->select('id','title','type')->orderBy('id','Desc')->paginate(1);
  136. //dd($message);
  137. }
  138. foreach ($message as $item){
  139. $user = UserInfoModel::find($item->user_id);
  140. if($user){
  141. $item->owner = $user->nickname;
  142. }
  143. }
  144. return $this->api(compact('menu','message'));
  145. }
  146. /**
  147. * @api {get} /api/index/message 知识详情(indexMessage)
  148. * @apiDescription 知识详情(indexMenu)indexMessage
  149. * @apiGroup Index
  150. * @apiPermission none
  151. * @apiVersion 0.1.0
  152. * @apiParam {int} id 知识ID
  153. * @apiSuccessExample {json} Success-Response:
  154. * HTTP/1.1 200 OK
  155. * {
  156. * "status": true,
  157. * "status_code": 0,
  158. * "message": "",
  159. * "data": {
  160. * "message": {
  161. * "id": 1,
  162. * "title": "爱我的",
  163. * "content": "爱我的",
  164. * "user_id": 1,
  165. * "price": 0,
  166. * "phone": "18228068397",
  167. * "comment": "瓦坎达入口",
  168. * "type": 0,
  169. * "sort": 1,
  170. * "deleted_at": null,
  171. * "created_at": "2018-07-12 17:06:23",
  172. * "updated_at": "2018-07-12 17:06:26",
  173. * "state": 0,
  174. * "is_pay": "是否需要付费 0 需要付费 1 不需要"
  175. * }
  176. * }
  177. *}
  178. * @apiErrorExample {json} Error-Response:
  179. * HTTP/1.1 400 Bad Request
  180. * {
  181. * "state": false,
  182. * "code": 1000,
  183. * "message": "传入参数不正确",
  184. * "data": null or []
  185. * }
  186. */
  187. public function indexMessage(Request $request)
  188. {
  189. $validator = Validator::make($request->all(),
  190. [
  191. 'id' => 'required'
  192. ],
  193. [
  194. 'id.required' => 'id不能为空!'
  195. ]
  196. );
  197. if ($validator->fails()) {
  198. return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
  199. }
  200. $id = $request->input('id');
  201. $message = MessagesInfoModel::where([['state',0],['id',$id]])->first();
  202. if(!$message){
  203. $data = [
  204. 'msg' => '该信息不存在或者已完成'
  205. ];
  206. return $this->api($data);
  207. }
  208. if($message->type ==0) {
  209. $user = UserInfoModel::find($this->getUserId());
  210. $followers['messages_id'] = $message->id;
  211. $followers['user_id'] = $user->id;
  212. $followers['username'] = $user->nickname;
  213. $followers['mobile'] = $user->mobile;
  214. $followers['state'] = 2;
  215. MessagesFollowerModel::create($followers);
  216. }
  217. if($message->type == 2){
  218. if($message->user_id != $this->getUserId()) {
  219. $check_message = MessagesFollowerModel::where([['message_id',$message->id],['user_id',$this->getUserId()],['type',1]])->first();
  220. if(!$check_message){
  221. $message->is_pay = 0;
  222. } else {
  223. $message->is_pay = 1;
  224. }
  225. } else {
  226. $message->is_pay = 1;
  227. }
  228. } else {
  229. $message->is_pay = '';
  230. }
  231. return $this->api(compact('message'));
  232. }
  233. /**
  234. * @api {get} /api/index/get_message 获取知识(indexGetMessage)
  235. * @apiDescription 获取知识(indexMenu)indexGetMessage
  236. * @apiGroup Index
  237. * @apiPermission none
  238. * @apiVersion 0.1.0
  239. * @apiParam {int} id 知识ID
  240. * @apiParam {int} type 知识类型 1 悬赏 2 付费
  241. * @apiSuccessExample {json} Success-Response:
  242. * HTTP/1.1 200 OK
  243. * {
  244. * "status": true,
  245. * "status_code": 0,
  246. * "message": "",
  247. * "data": {
  248. * "msg": "获取成功"
  249. * }
  250. *}
  251. * @apiErrorExample {json} Error-Response:
  252. * HTTP/1.1 400 Bad Request
  253. * {
  254. * "state": false,
  255. * "code": 1000,
  256. * "message": "传入参数不正确",
  257. * "data": null or []
  258. * }
  259. */
  260. public function indexGetMessage(Request $request)
  261. {
  262. $validator = Validator::make($request->all(),
  263. [
  264. 'id' => 'required',
  265. 'type' => 'required',
  266. ],
  267. [
  268. 'id.required' => 'id不能为空!',
  269. 'type.required' => 'type不能为空!'
  270. ]
  271. );
  272. if ($validator->fails()) {
  273. return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
  274. }
  275. $id = $request->input('id');
  276. $type = $request->input('type');
  277. $message = MessagesInfoModel::where([['id',$id],['type',$type],['state',0]])->first();
  278. if(!$message){
  279. $msg = '该信息不存在或者已完成';
  280. return $this->api(compact('msg'));
  281. }
  282. $check_is_buy = MessagesFollowerModel::where([['user_id',$this->getUserId()],['messages_id',$message->id]])->first();
  283. if($check_is_buy){
  284. $msg = '您已获取该知识,请勿重复操作';
  285. return $this->api(compact('msg'));
  286. }
  287. $user = UserInfoModel::find($this->getUserId());
  288. if($type == 2) {
  289. DB::beginTransaction();
  290. $out_trade_no = 'We'.date('YmdHis').rand(1000,9999);
  291. $user->money -= $message->price;
  292. if($user->money<0){
  293. $msg = '您的余额已不足,请先充值';
  294. return $this->api(compact('msg'));
  295. }
  296. if(!$user->save()){
  297. $msg = '购买失败';
  298. DB::rollback();
  299. return $this->api(compact('msg'));
  300. }
  301. //dd(111);
  302. $save['openid'] = $user->openid;
  303. $save['out_trade_no'] = $out_trade_no;
  304. $save['user_id'] = $this->getUserId();
  305. $save['to_user'] = $message->user_id;
  306. $save['price'] = $message->price;
  307. $save['type'] = 2;
  308. $res = PaymentInfoModel::create($save);
  309. if(!$res) {
  310. $msg = '购买失败';
  311. DB::rollback();
  312. return $this->api(compact('msg'));
  313. }
  314. }
  315. $followers['messages_id'] = $message->id;
  316. $followers['user_id'] = $user->id;
  317. $followers['username'] = $user->nickname;
  318. $followers['mobile'] = $user->mobile;
  319. $followers['state'] = $type == 1?0:1;
  320. if(MessagesFollowerModel::create($followers)){
  321. $msg = '获取成功';
  322. DB::commit();
  323. } else {
  324. $msg = '购买失败';
  325. DB::rollback();
  326. }
  327. return $this->api(compact('msg'));
  328. }
  329. }