123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524 |
- <?php
- /**
- * Created by PhpStorm.
- * User: 思维定制
- * Date: 2018/7/13
- * Time: 15:08
- */
- namespace App\Http\Controllers\Api\V1;
- use App\Models\FavoriteModel;
- use App\Models\MessagesFollowerModel;
- use App\Models\MessagesInfoModel;
- use App\Models\MessagesTagModel;
- use App\Models\PaymentInfoModel;
- use App\Models\SeenModel;
- use App\Models\UserInfoModel;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Validator;
- use App\Services\Base\ErrorCode;
- class UserController extends Controller
- {
- /**
- * @api {post} /api/user/release 发布知识(userRelease)
- * @apiDescription 发布知识(userRelease)userRelease
- * @apiGroup User
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiParam {text} content 内容
- * @apiParam {string} title 标题
- * @apiParam {number} price 价格
- * @apiParam {int} type 知识类型 1 悬赏 2 付费 0免费
- * @apiParam {text} pic_url 图片
- * @apiParam {array} tag['id'] 标签ID tag['name'] 标签内容
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": {
- * "msg": "添加成功"
- * }
- *}
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- */
- public function userRelease(Request $request)
- {
- $validator = Validator::make($request->all(),
- [
- 'content' => 'required',
- 'type' => 'required',
- 'title' => 'required',
- ],
- [
- 'content.required' => '内容不能为空!',
- 'type.required' => 'type不能为空!',
- 'title.required' => '标题不能为空!'
- ]
- );
- if ($validator->fails()) {
- return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
- }
- DB::beginTransaction();
- $data = $request->input();
- $tag = $data['tag'];
- /*$tag[0]['name'] = 'asd';
- $tag[0]['id'] = 0;
- $tag[1]['id'] = 0;
- $tag[1]['name'] = 'dfse';*/
- $content['content'] = $data['content'];
- $content['title'] = $data['title'];
- $content['price'] = $data['price'];
- $content['type'] = $data['type'];
- $content['pic_url'] = $data['pic_url'];
- $content['sort'] = 1;
- $content['state'] = 0;
- $user = UserInfoModel::find($this->getUserId());
- $content['phone'] = $user->mobile;
- $content['user_id'] = $user->id;
- $create_res = MessagesInfoModel::create($content);
- if($data['type'] == 1){
- $out_trade_no = 'We'.date('YmdHis').rand(1000,9999);
- $user->money -= $data['price'];
- if($user->money<0){
- $msg = '您的余额已不足,请先充值';
- DB::rollback();
- return $this->api(compact('msg'));
- }
- if(!$user->save()){
- $msg = '购买失败';
- DB::rollback();
- return $this->api(compact('msg'));
- }
- $save['openid'] = $user->openid;
- $save['out_trade_no'] = $out_trade_no;
- $save['to_user'] = 0;
- $save['msg_id'] = $create_res->id;
- $save['user_id'] = $this->getUserId();
- $save['price'] = $data['price'];
- $save['type'] = 3;
- $res = PaymentInfoModel::create($save);
- if(!$res) {
- $msg = '购买失败';
- DB::rollback();
- return $this->api(compact('msg'));
- }
- }
- foreach($tag as $key=>$val) {
- if($val['id'] == 0){
- $save['name'] = $val['name'];
- $save['sort'] = 0;
- $res = MessagesTagModel::create($save);
- $id = $res->id;
- } else {
- $id = $val['id'];
- }
- $relation['messages_id'] = $create_res->id;
- $relation['tag_id'] = $id;
- DB::table('messages_tag_relation')->insert($relation);
- }
- $msg = '添加成功';
- DB::commit();
- return $this->api(compact('msg'));
- }
- /**
- * @api {get} /api/user/edit_favorite 添加/删除收藏(userEditFavorite)
- * @apiDescription 添加/删除收藏(userEditFavorite)userEditFavorite
- * @apiGroup User
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiParam {int} message_id 知识id
- * @apiParam {int} type 操作类型 1 添加 0 删除
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": {
- * "msg": "添加成功"
- * }
- *}
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- */
- public function userEditFavorite(Request $request)
- {
- $validator = Validator::make($request->all(),
- [
- 'messages_id' => 'required',
- 'type' => 'required',
- ],
- [
- 'messages_id.required' => '信息id不能为空!',
- 'type.required' => 'type不能为空!',
- ]
- );
- if ($validator->fails()) {
- return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
- }
- $data = $request->input();
- //dd($data);
- $check = FavoriteModel::where([['user_id',$this->getUserId()],['messages_id',$data['messages_id']]])->first();
- if($data['type'] == 1) {
- if($check){
- $msg = '已添加收藏,请勿重复操作';
- return $this->api(compact('msg'));
- }
- $save['user_id'] = $this->getUserId();
- $save['messages_id'] = $data['messages_id'];
- $res = FavoriteModel::create($save);
- if($res){
- $msg = '添加成功';
- } else {
- $msg = '添加失败';
- }
- return $this->api(compact('msg'));
- } else {
- if(!$check){
- $msg = '已移除收藏,请勿重复操作';
- return $this->api(compact('msg'));
- }
- $favorite = FavoriteModel::find($check->id);
- $res = $favorite->delete();
- if($res){
- $msg = '删除成功';
- } else {
- $msg = '删除失败';
- }
- return $this->api(compact('msg'));
- }
- }
- /**
- * @api {get} /api/user/favorite 添加/删除收藏(userFavorite)
- * @apiDescription 添加/删除收藏(userFavorite)userFavorite
- * @apiGroup User
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": {
- * "messages": {
- * "id": 1,
- * "title": "爱我的",
- * "type": 0,
- * }
- * }
- *}
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- */
- public function userFavorite(Request $request)
- {
- $data = FavoriteModel::where('user_id',$this->getUserId())->paginate(5);
- $messages = array();
- foreach ($data as $key=>$val){
- $messages[] = MessagesInfoModel::where('id',$val['messages_id'])->select('id','title','type')->first();
- }
- return $this->api(compact('messages'));
- }
- /**
- * @api {get} /api/user/my_message 我的发布(userMyMessage)
- * @apiDescription 我的发布(userMyMessage)userMyMessage
- * @apiGroup User
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiParam {int} state 类型 -1 全部 0 免费 1 悬赏 2 付费
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": {
- * "messages": {
- * "id": 1,
- * "title": "爱我的",
- * "type": 0,
- * }
- * }
- *}
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- */
- public function userMyMessage(Request $request)
- {
- $validator = Validator::make($request->all(),
- [
- 'state' => 'integer',
- ],
- [
- 'state.integer' => 'state参数错误!',
- ]
- );
- if ($validator->fails()) {
- return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
- }
- $state = $request->input('state');
- if(!empty($state)){
- $messages = MessagesInfoModel::where([['user_id',$this->getUserId()],['type',$state]])->select('id','title','type')->paginate(5);
- } else {
- $messages = MessagesInfoModel::where([['user_id',$this->getUserId()]])->select('id','title','type')->paginate(5);
- }
- return $this->api(compact('messages'));
- }
- /**
- * @api {get} /api/user/get_message 我的参与(userGetMessages)
- * @apiDescription 我的参与(userGetMessages)userGetMessages
- * @apiGroup User
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiParam {int} state 类型 -1 全部 0 免费 1 悬赏 2 付费
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": {
- * "messages": {
- * "id": 1,
- * "title": "爱我的",
- * "type": 0,
- * }
- * }
- *}
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- */
- public function userGetMessages(Request $request)
- {
- $validator = Validator::make($request->all(),
- [
- 'state' => 'integer',
- ],
- [
- 'state.integer' => 'state参数错误!',
- ]
- );
- if ($validator->fails()) {
- return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
- }
- $state = $request->input('state');
- if(!empty($state)){
- $messages = MessagesFollowerModel::where([['user_id',$this->getUserId()]])->infos()->where('type',$state)->paginate(5);
- } else {
- $messages = MessagesFollowerModel::where([['user_id',$this->getUserId()]])->infos()->paginate(5);
- }
- return $this->api(compact('messages'));
- }
- /**
- * @api {get} /api/user/message_detail 我的发布详情(userMessageDetail)
- * @apiDescription 我的发布详情(userMessageDetail)userMessageDetail
- * @apiGroup User
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiParam {int} id 信息id
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": {
- * "messages": {
- * "id": 1,
- * "title": "爱我的",
- * "content": "爱我的",
- * "user_id": 1,
- * "price": 1,
- * "phone": "18228068397",
- * "comment": "瓦坎达入口",
- * "type": 1,
- * "sort": 1,
- * "deleted_at": null,
- * "created_at": "2018-07-12 17:06:23",
- * "updated_at": "2018-07-12 17:06:26",
- * "state": 0,
- * "pic_url": "",
- * "followers_num": 1,
- * "followers": [
- * {
- * "id": 5,
- * "messages_id": 1,
- * "user_id": 1,
- * "username": "Richod",
- * "mobile": "1111",
- * "deleted_at": null,
- * "created_at": "2018-07-17 09:21:18",
- * "updated_at": "2018-07-17 09:21:18",
- * "state": 0
- * }
- * ],
- * "income": ""
- * }
- * }
- *}
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- */
- public function userMessageDetail(Request $request)
- {
- $id = $request->input('id');
- $messages = MessagesInfoModel::find($id);
- $messages->followers_num = MessagesFollowerModel::where([['messages_id',$messages->id]])->count();
- $messages->followers = array();
- if($messages->type == 1){
- $followers = MessagesFollowerModel::where([['messages_id',$messages->id]])->get();
- $messages->followers = $followers;
- $messages->income = '';
- }
- if($messages->type == 2){
- $followers = MessagesFollowerModel::where([['messages_id',$messages->id]])->get();
- $messages->followers = $followers;
- $messages->income = $messages->followers_num * $messages->price;
- }
- if($messages->type == 0) {
- $messages->followers = '';
- $messages->income = '';
- }
- return $this->api(compact('messages'));
- }
- /**
- * @api {get} /api/user/complete_message 结束悬赏(userCompleteMessages)
- * @apiDescription 结束悬赏(userCompleteMessages)userCompleteMessages
- * @apiGroup User
- * @apiPermission none
- * @apiVersion 0.1.0
- * @apiParam {int} message_id 知识id
- * @apiParam {int} follower_id 悬赏者信息id
- * @apiParam {int} type 操作类型 1 添加 0 删除
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": {
- * "msg": "添加成功"
- * }
- *}
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- */
- public function userCompleteMessages(Request $request)
- {
- $validator = Validator::make($request->all(),
- [
- 'message_id' => 'require|integer',
- 'follower_id' => 'require|integer',
- ],
- [
- 'message_id.require|integer' => 'message_id参数错误!',
- 'follower_id.require|integer' => 'follower_id参数错误!',
- ]
- );
- if ($validator->fails()) {
- return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '传入参数不正确!', $validator->messages());
- }
- $followers_id = $request->input('follower_id');
- $message_id = $request->input('message_id');
- $messages_followers = MessagesFollowerModel::find($followers_id);
- $messages = MessagesInfoModel::where([['id'=>$messages_followers->messages_id],['type',1],['state',0]])->first();
- if(!$messages||$message_id!=$messages->id){
- $msg = '该知识不存在,或者已完成';
- return $this->api(compact('msg'));
- }
- $user = UserInfoModel::find($messages_followers->user_id);
- $out_trade_no = 'We'.date('YmdHis').rand(1000,9999);
- $user->money += $messages->price;
- if(!$user->save()){
- $msg = '确认失败';
- return $this->api(compact('msg'));
- }
- $save['openid'] = $user->openid;
- $save['out_trade_no'] = $out_trade_no;
- $save['to_user'] = $messages_followers->user_id;
- $save['user_id'] = 0;
- $save['msg_id'] = $messages->id;
- $save['price'] = $messages->price;
- $save['type'] = 3;
- $res = PaymentInfoModel::create($save);
- if(!$res) {
- $msg = '确认失败';
- } else {
- $msg = '确认成功';
- }
- $messages->state = 1;
- $messages->save();
- $messages_followers->state = 1;
- $messages_followers->save();
- return $this->api(compact('msg'));
- }
- }
|