Add send message frontend.
1. Add send message frontend 2. Split getMessage into getHistoryMessage and getNewMessage
This commit is contained in:
@@ -26,14 +26,35 @@ class MessageController extends Controller
|
||||
return View::make('message.message');
|
||||
}
|
||||
|
||||
public function getMessage(Request $request)
|
||||
public function getHistoryMessage(Request $request)
|
||||
{
|
||||
$user_id = $request->session()->get('user_id');
|
||||
$contact_id = $request->contact_id;
|
||||
Message::where('receiver_id', $user_id)->where('sender_id', $contact_id)
|
||||
->orWhere('receiver_id', $contact_id)->where('sender_id', $user_id)
|
||||
->update(['is_read' => true]);
|
||||
$messages = Message::where('receiver_id', $user_id)->where('sender_id', $contact_id)
|
||||
->orWhere('receiver_id', $contact_id)->where('sender_id', $user_id)
|
||||
->orderBy('id', 'desc')
|
||||
->paginate(20);
|
||||
|
||||
return json_encode($messages);
|
||||
}
|
||||
|
||||
public function getNewMessage(Request $request)
|
||||
{
|
||||
$user_id = $request->session()->get('user_id');
|
||||
$contact_id = $request->contact_id;
|
||||
$messages = Message::where('is_read', false)
|
||||
->where('receiver_id', $user_id)->where('sender_id', $contact_id)
|
||||
->orWhere('receiver_id', $contact_id)->where('sender_id', $user_id)
|
||||
->where('is_read', false)
|
||||
->get();
|
||||
Message::where('is_read', false)
|
||||
->where('receiver_id', $user_id)->where('sender_id', $contact_id)
|
||||
->orWhere('receiver_id', $contact_id)->where('sender_id', $user_id)
|
||||
->where('is_read', false)
|
||||
->update(['is_read' => true]);
|
||||
return json_encode($messages);
|
||||
}
|
||||
|
||||
@@ -71,7 +92,6 @@ class MessageController extends Controller
|
||||
//Create Message
|
||||
$message = new Message;
|
||||
$user_id = $request->session()->get('user_id');
|
||||
$message->title = $input['title'];
|
||||
$message->content = $input['content'];
|
||||
$message->sender_id = $user_id;
|
||||
$message->receiver_id = $input['receiver'];
|
||||
@@ -91,7 +111,7 @@ class MessageController extends Controller
|
||||
]);
|
||||
$contact->last_contact_time = time();
|
||||
$contact->save();
|
||||
return json_encode(['result' => true, 'msg' => 'success']);
|
||||
return json_encode(['result' => true, 'msg' => $message]);
|
||||
}
|
||||
|
||||
public function sendMessagepage(Request $request)
|
||||
|
||||
@@ -109,7 +109,6 @@ class TransactionController extends Controller
|
||||
$message->sender_id = 0;
|
||||
$message->receiver_id = $good->user_id;
|
||||
$message->content = '您好!' . $buyer->not_null_nickname . '购买了你的' . $good->good_name . ',请及时前往确认。';
|
||||
$message->title = '您有一个新的交♂易订单';
|
||||
$message->save();
|
||||
return json_encode(['result' => true, 'msg' => 'success']);
|
||||
}
|
||||
@@ -134,7 +133,6 @@ class TransactionController extends Controller
|
||||
$good = $trans->good;
|
||||
$message->receiver_id = $good->user_id;
|
||||
$message->content = '您好!您的' . $good->good_name . '的一个订单被买家取消,你可以前往查看。';
|
||||
$message->title = '您有一个订单被取消';
|
||||
$message->save();
|
||||
return json_encode(['result' => true, 'character' => 'buyer', 'msg' => 'success']);
|
||||
break;
|
||||
@@ -155,7 +153,6 @@ class TransactionController extends Controller
|
||||
$good = $trans->good;
|
||||
$message->receiver_id = $trans->buyer_id;
|
||||
$message->content = '您好!您购买的' . $good->good_name . '的一个订单被卖家驳回,你可以前往查看。';
|
||||
$message->title = '您有一个订单被驳回';
|
||||
$message->save();
|
||||
return json_encode(['result' => true, 'character' => 'seller', 'msg' => 'success']);
|
||||
break;
|
||||
@@ -187,7 +184,6 @@ class TransactionController extends Controller
|
||||
$message->sender_id = 0;
|
||||
$message->receiver_id = $trans->buyer_id;
|
||||
$message->content = '您好!你订购的' . $good->good_name . '已被卖家确认,你们现在可以去看对方的联系方式并且交♂易啦。';
|
||||
$message->title = '您有一个交♂易订单被确认';
|
||||
$message->save();
|
||||
return json_encode(['result' => true, 'msg' => 'success']);
|
||||
}
|
||||
@@ -245,7 +241,6 @@ class TransactionController extends Controller
|
||||
$message->content = '您好!你订购的' . $good->good_name . '的订单已被卖家标记为交易成功,你现在可以去评价此单交易啦。';
|
||||
else
|
||||
$message->content = '您好!你订购的' . $good->good_name . '的订单已被卖家标记为交易失败。';
|
||||
$message->title = '您有一个交♂易订单被完成';
|
||||
$message->save();
|
||||
return json_encode(['result' => true, 'msg' => 'success']);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ class SendMessageRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'title'=>'required|max:128',
|
||||
'content'=>'max:65535',
|
||||
'receiver'=>'required|integer',
|
||||
];
|
||||
@@ -32,8 +31,6 @@ class SendMessageRequest extends FormRequest
|
||||
|
||||
public function messages() {
|
||||
return [
|
||||
'title.required' => '标题不能为空!',
|
||||
'title.max' => '标题长度不能超过128个字符!',
|
||||
'content.max' => '内容长度不能超过65535个字符',
|
||||
'receiver.required' => '收件人不可为空',
|
||||
'receiver.integer' => '收件人格式不正确!'
|
||||
|
||||
+2
-1
@@ -66,7 +66,8 @@ Route::group(['middleware' => ['web']],function () {
|
||||
Route::delete('/user/fav/del', "UserController@delFavlist");
|
||||
|
||||
Route::get('/message/contacts', "MessageController@getMessageContact");
|
||||
Route::get('/message/getMessage', "MessageController@getMessage");
|
||||
Route::get('/message/getHistoryMessage', "MessageController@getHistoryMessage");
|
||||
Route::get('/message/getNewMessage', "MessageController@getNewMessage");
|
||||
});
|
||||
|
||||
Route::get('/user/sell', "UserController@mygoods")->middleware('auth');
|
||||
|
||||
@@ -14,7 +14,6 @@ class CreateMessageTable extends Migration
|
||||
{
|
||||
Schema::create('message', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('title');
|
||||
$table->integer('sender_id');
|
||||
$table->integer('receiver_id');
|
||||
$table->text('content')->nullable();
|
||||
|
||||
@@ -11,13 +11,18 @@ class MessageSeeder extends Seeder
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
$faker = Faker\Factory::create();
|
||||
for ($i = 0; $i < 50; $i++)
|
||||
DB::table('message')->insert([
|
||||
'title' => str_random(8),
|
||||
'sender_id' => 1,
|
||||
'receiver_id' => 1,
|
||||
'content' => str_random(256),
|
||||
'content' => $faker->text,
|
||||
'is_read' => rand(0, 1)
|
||||
]);
|
||||
DB::table('message_contacts')->insert([
|
||||
'user_id' => 1,
|
||||
'contact_id' => 1,
|
||||
'last_contact_time' => $faker->unixTime
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
+48
-6
@@ -21,11 +21,17 @@ Vue.component('contact-list', {
|
||||
mounted: function () {
|
||||
this.$nextTick(function () {
|
||||
this.$on('getContactEvent', function () {
|
||||
this.clearContact();
|
||||
this.getContact();
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
clearContact: function () {
|
||||
this.current_page = 0;
|
||||
this.last_page = null;
|
||||
this.contacts = [];
|
||||
},
|
||||
getContact: function () {
|
||||
var vm = this;
|
||||
axios.get('/message/contacts?page=' + (this.current_page + 1).toString())
|
||||
@@ -39,8 +45,12 @@ Vue.component('contact-list', {
|
||||
vm.errorMessage = error;
|
||||
})
|
||||
},
|
||||
loadDialog: function (id) {
|
||||
loadDialog: function (id, index) {
|
||||
var vm = this;
|
||||
this.$emit('load-dialog', id);
|
||||
var c = vm.contacts[index];
|
||||
c.unread_count = 0;
|
||||
Vue.set(vm.contacts, index, c);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -55,7 +65,9 @@ Vue.component('message-dialog', {
|
||||
current_page: 0,
|
||||
last_page: null,
|
||||
contact_id: null,
|
||||
isHidden: true
|
||||
isHidden: true,
|
||||
inputMessage: '',
|
||||
token: ''
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
@@ -63,21 +75,28 @@ Vue.component('message-dialog', {
|
||||
this.$on('loadDialogHandler', function (id) {
|
||||
this.current_page = 0;
|
||||
this.last_page = null;
|
||||
this.getMessage(id);
|
||||
this.getHistoryMessage(id);
|
||||
})
|
||||
})
|
||||
},
|
||||
computed: {
|
||||
hasMore: function () {
|
||||
return this.current_page < this.last_page;
|
||||
},
|
||||
postData: function () {
|
||||
return {
|
||||
content: this.inputMessage,
|
||||
receiver: this.contact_id,
|
||||
_token: this.token
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getMessage: function (contact_id) {
|
||||
getHistoryMessage: function (contact_id) {
|
||||
var vm = this;
|
||||
if (contact_id === 0 || this.contact_id === contact_id) {
|
||||
contact_id = this.contact_id;
|
||||
axios.get('/message/getMessage?contact_id=' + contact_id.toString() + '&page=' + (this.current_page + 1).toString())
|
||||
axios.get('/message/getHistoryMessage?contact_id=' + contact_id.toString() + '&page=' + (this.current_page + 1).toString())
|
||||
.then(function (response) {
|
||||
vm.current_page = response.data.current_page;
|
||||
vm.last_page = response.data.last_page;
|
||||
@@ -90,7 +109,7 @@ Vue.component('message-dialog', {
|
||||
})
|
||||
}
|
||||
else {
|
||||
axios.get('/message/getMessage?contact_id=' + contact_id.toString())
|
||||
axios.get('/message/getHistoryMessage?contact_id=' + contact_id.toString())
|
||||
.then(function (response) {
|
||||
vm.current_page = response.data.current_page;
|
||||
vm.last_page = response.data.last_page;
|
||||
@@ -102,6 +121,29 @@ Vue.component('message-dialog', {
|
||||
})
|
||||
this.contact_id = contact_id;
|
||||
}
|
||||
},
|
||||
sendMessage: function () {
|
||||
var vm = this;
|
||||
vm.token = $('#token').val();
|
||||
axios.post('/message', this.postData)
|
||||
.then(function (response) {
|
||||
vm.messages.push(response.data.msg);
|
||||
vm.inputMessage = '';
|
||||
})
|
||||
.catch(function (error) {
|
||||
vm.errorMessage = error;
|
||||
})
|
||||
},
|
||||
getNewMessage: function () {
|
||||
var vm = this;
|
||||
axios.get('/message/getNewMessage?contact_id=' + vm.contact_id.toString())
|
||||
.then(function (response) {
|
||||
for (var i in response.data)
|
||||
vm.messages.push(response.data[i]);
|
||||
})
|
||||
.catch(function (error) {
|
||||
vm.errorMessage = error;
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<div>
|
||||
<p v-if="errorMessage">@{{ errorMessage }}</p>
|
||||
<ul>
|
||||
<li v-for="contact in contacts" v-on:click="loadDialog(contact.contact_id)">
|
||||
<li v-for="(contact, index) in contacts" v-on:click="loadDialog(contact.contact_id, index)">
|
||||
<img :src="'/avatar/' + contact.contact_id + '/64/64'"/>
|
||||
@{{ contact.contact.nickname }} @{{ contact.unread_count }}
|
||||
</li>
|
||||
@@ -46,17 +46,22 @@
|
||||
|
||||
<script type="text/x-template" id="message_dialog">
|
||||
<div :class="{ hide: isHidden }">
|
||||
<a v-if="hasMore" v-on:click="getMessage(0)">加载更多</a>
|
||||
<a v-if="hasMore" v-on:click="getHistoryMessage(0)">加载更多</a>
|
||||
<p v-else>没有更多了</p>
|
||||
<p v-if="errorMessage">@{{ errorMessage }}</p>
|
||||
<ul>
|
||||
<li v-for="message in messages">
|
||||
<img :src="'/avatar/' + message.sender_id + '/64/64'"/>
|
||||
@{{ message.content }}
|
||||
</li>
|
||||
</ul>
|
||||
<p v-if="errorMessage">@{{ errorMessage }}</p>
|
||||
<textarea placeholder="键入要发送的内容:" v-model="inputMessage"></textarea>
|
||||
<input type="button" value="发送" v-on:click="sendMessage"/>
|
||||
<input id="token" type="hidden" value="{{ csrf_token() }}"/>
|
||||
<a v-on:click="getNewMessage">!!!</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script src="https://unpkg.com/vue@2.3.4/dist/vue.js"></script>
|
||||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||
<script src="/js/message.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user