diff --git a/app/Http/Controllers/MessageController.php b/app/Http/Controllers/MessageController.php index bf60f8b..4ef4aad 100644 --- a/app/Http/Controllers/MessageController.php +++ b/app/Http/Controllers/MessageController.php @@ -16,8 +16,8 @@ use App\Transaction; use App\TransactionLog; use App\Message; use App\User; +use App\MessageContact; use App\Http\Controllers\Controller; -use Storage; class MessageController extends Controller { @@ -25,8 +25,8 @@ class MessageController extends Controller { $data = []; $user_id = $request->session()->get('user_id'); - $data['informations'] = Message::with('receiver')->Orderby('id','desc')->where('receiver_id',$user_id)->paginate(15); - return view::make('message.message')->with($data); + $data['informations'] = Message::with('receiver')->Orderby('id', 'desc')->where('receiver_id', $user_id)->paginate(15); + return View::make('message.message')->with($data); } public function getUnreadMsgNum(Request $request) @@ -39,7 +39,7 @@ class MessageController extends Controller public function readMessage(Request $request, $id) { $data = Message::find($id); - if($request->session()->get('user_id') != $data->receiver_id) + if ($request->session()->get('user_id') != $data->receiver_id) return json_encode(['result' => false, 'msg' => 'Auth Failure.']); $data->is_read = true; $data->save(); @@ -49,7 +49,7 @@ class MessageController extends Controller public function deleteMessage(Request $request, $id) { $data = Message::find($id); - if($request->session()->get('user_id') != $data->receiver_id) + if ($request->session()->get('user_id') != $data->receiver_id) return json_encode(['result' => false, 'msg' => 'Auth Failure.']); $data->delete(); return json_encode(['result' => true, 'msg' => 'success']); @@ -58,22 +58,55 @@ class MessageController extends Controller public function sendMessage(SendMessageRequest $request) { $input = $request->all(); - if(!User::where('id', $input['receiver'])->count()) + if (!User::where('id', $input['receiver'])->count()) return json_encode(['result' => false, 'msg' => 'no such receiver']); + //Create Message $message = new Message; $user_id = $request->session()->get('user_id'); $message->title = $input['title']; $message->content = $input['content']; - $receiver = $input['receiver']; $message->sender_id = $user_id; - $user = User::where('id', $receiver)->first(); - $message->receiver_id = $user->id; + $message->receiver_id = $input['receiver']; $message->save(); + //Create or Update MessageContact + //A->B + $contact = MessageContact::firstOrNew([ + 'user_id' => $user_id, + 'contact_id' => $input['receiver'] + ]); + $contact->last_contact_time = time(); + $contact->save(); + //B->A + $contact = MessageContact::firstOrNew([ + 'user_id' => $input['receiver'], + 'contact_id' => $user_id + ]); + $contact->last_contact_time = time(); + $contact->save(); return json_encode(['result' => true, 'msg' => 'success']); } public function sendMessagepage(Request $request) { - return view::make('message.sendMessage'); + return View::make('message.sendMessage'); } + + public function getMessageContact(Request $request) + { + $user_id = $request->session()->get('user_id'); + $contacts = MessageContact::where('user_id', $user_id) + ->orderBy('last_contact_time', 'desc') + ->with(['contact' => function ($query) { + $query->select('id', 'nickname'); + }]) + ->paginate(10); + foreach ($contacts as $c) { + $c->unread_message = Message::where('receiver_id', $user_id) + ->where('sender_id', $c->contact_id) + ->where('is_read', false) + ->count(); + } + return json_encode($contacts); + } + } \ No newline at end of file diff --git a/app/Http/Controllers/TransactionController.php b/app/Http/Controllers/TransactionController.php index e0b6685..6a3c6b5 100644 --- a/app/Http/Controllers/TransactionController.php +++ b/app/Http/Controllers/TransactionController.php @@ -108,9 +108,7 @@ class TransactionController extends Controller $message = new Message(); $message->sender_id = 0; $message->receiver_id = $good->user_id; - if (!$buyer->nickname) - $buyer->nickname = "一位先锋市场用户"; - $message->content = '您好!' . $buyer->nickname . '购买了你的' . $good->good_name . ',请及时前往确认。'; + $message->content = '您好!' . $buyer->not_null_nickname . '购买了你的' . $good->good_name . ',请及时前往确认。'; $message->title = '您有一个新的交♂易订单'; $message->save(); return json_encode(['result' => true, 'msg' => 'success']); diff --git a/app/Http/routes.php b/app/Http/routes.php index 53a0bf9..906d10b 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -65,6 +65,7 @@ Route::group(['middleware' => ['web']],function () { Route::get('/user/fav/edit', "UserController@editFavlist"); Route::delete('/user/fav/del', "UserController@delFavlist"); + Route::get('/message/contacts', "MessageController@getMessageContact"); }); Route::get('/user/sell', "UserController@mygoods")->middleware('auth'); diff --git a/app/MessageContact.php b/app/MessageContact.php new file mode 100644 index 0000000..8506429 --- /dev/null +++ b/app/MessageContact.php @@ -0,0 +1,14 @@ +belongsTo('App\User', 'contact_id'); + } +} diff --git a/app/User.php b/app/User.php index b313887..870749b 100644 --- a/app/User.php +++ b/app/User.php @@ -29,4 +29,9 @@ class User extends Model return $this->hasManyThrough('App\Transaction', 'App\GoodInfo', 'user_id', 'good_id', 'id'); } + public function getNotNullNicknameAttribute() + { + return $this->nickname != "" ? $this->nickname : "一位先锋市场用户"; + } + } diff --git a/database/migrations/2017_06_09_230602_create_message_contacts_table.php b/database/migrations/2017_06_09_230602_create_message_contacts_table.php new file mode 100644 index 0000000..6f8acaa --- /dev/null +++ b/database/migrations/2017_06_09_230602_create_message_contacts_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->integer('user_id'); + $table->integer('contact_id'); + $table->integer('last_contact_time'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('message_contacts'); + } +}