finish basic message backend

This commit is contained in:
LI JIAHAO
2017-05-24 19:32:12 +08:00
parent 76cfc1429e
commit ed6cb76687
14 changed files with 211 additions and 142 deletions
+2 -2
View File
@@ -14,7 +14,7 @@ use App\GoodInfo;
use App\GoodTag;
use App\Transaction;
use App\TransactionLog;
use App\Messages;
use App\Message;
use App\Tag;
use App\FavList;
use App\Http\Controllers\Controller;
@@ -181,7 +181,7 @@ class GoodController extends Controller
$buy->save();
$buyername = User::find($data->user_id);
$goodname = GoodInfo::where('id',$good_id)->first();
$message = new Messages;
$message = new Message;
$message->sender_id = 0;
$message->receiver_id = $data->user_id;
$message->content = '您好!名叫'.$buyername->username.'购买了你的'.$goodname->good_name.'请及时前往确认。';
+47 -35
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Http\Requests\SendMessageRequest;
use App\UserInfo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\View;
@@ -13,7 +14,7 @@ use App\GoodCat;
use App\GoodInfo;
use App\Transaction;
use App\TransactionLog;
use App\Messages;
use App\Message;
use App\User;
use App\Http\Controllers\Controller;
use Storage;
@@ -24,44 +25,55 @@ class MessageController extends Controller
{
$data = [];
$user_id = $request->session()->get('user_id');
$data['informations'] = Messages::Orderby('id','dsc')->where('receiver_id',$user_id)->get();
$data['users'] = User::orderBy('id', 'asc')->get()->keyBy('id');
return view::make('message.getMessage')->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)
{
$user_id = $request->session()->get('user_id');
$count = Message::where('receiver_id', $user_id)->where('is_read', false)->count();
return $count;
}
public function readMessage(Request $request, $id)
{
$data = Message::find($id);
if($request->session()->get('user_id') != $data->receiver_id)
return json_encode(['result' => false, 'msg' => 'Auth Failure.']);
$data->is_read = true;
$data->save();
return json_encode(['result' => true, 'msg' => 'success']);
}
public function deleteMessage(Request $request, $id)
{
$data = Message::find($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']);
}
public function sendMessage(SendMessageRequest $request)
{
$input = $request->all();
if(!User::where('id', $input['receiver'])->count())
return json_encode(['result' => false, 'msg' => 'no such receiver']);
$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->save();
return json_encode(['result' => true, 'msg' => 'success']);
}
public function sendMessagepage(Request $request)
{
return view::make('message.sendMessage');
}
public function editMessagepage(Request $request)
{
$data = [];
$user_id = $request->session()->get('user_id');
$data['informations'] = Messages::Orderby('id','dsc')->where('receiver_id',$user_id)->get();
$data['users'] = User::orderBy('id', 'asc')->get()->keyBy('id');
return view::make('message.editMessage')->with($data);
}
public function deleteMessage(Request $request,$message_id)
{
$data = Messages::find($message_id);
$data->delete();
return Redirect::to('/message/editmessage');
}
public function sendAllow(Request $request)
{
$input = $request->all();
$message = new Messages;
$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('nickname',$receiver)->first();
$message->receiver_id = $user->id;
$message->save();
return Redirect::to('/message');
}
}
+42
View File
@@ -0,0 +1,42 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class SendMessageRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title'=>'required|max:128',
'content'=>'max:65535',
'receiver'=>'required|numeric',
];
}
public function messages() {
return [
'title.required' => '标题不能为空!',
'title.max' => '标题长度不能超过128个字符!',
'content.max' => '内容长度不能超过65535个字符',
'receiver.required' => '收件人不可为空',
'receiver.numeric' => '收件人格式不正确!'
];
}
}
+8 -25
View File
@@ -77,6 +77,14 @@ Route::group(['middleware' => ['web']],function () {
Route::post('/good/{good_id}/add_favlist', "GoodController@addFavlist")->middleware('auth');
Route::delete('/good/{good_id}/del_favlist', "GoodController@delFavList")->middleware('auth');
Route::get('/message', "MessageController@getMessage")->middleware('auth');
Route::get('/test/sendmessagepage', "MessageController@sendMessagepage")->middleware('su');
Route::post('/message', "MessageController@sendMessage")->middleware('auth');
Route::get('/message/num', "MessageController@getUnreadMsgNum")->middleware('auth');
Route::put('/message/{id}', "MessageController@readMessage")->middleware('auth');
Route::delete('/message/{id}', "MessageController@deleteMessage")->middleware('auth');
//------Above are tested function
Route::get('/user/{user_id}/edit', [
@@ -152,31 +160,6 @@ Route::group(['middleware' => ['web']],function () {
"middleware" => "admin"
]);
Route::match(['post','get'],'/message',[
"uses" => "MessageController@getMessage",
"middleware" => "auth"
]);
Route::match(['post','get'],'/message/sendmessagepage',[
"uses" => "MessageController@sendMessagepage",
"middleware" => "auth"
]);
Route::match(['post','get'],'/message/send',[
"uses" => "MessageController@sendAllow",
"middleware" => "auth"
]);
Route::match(['post','get'],'/message/editmessage',[
"uses" => "MessageController@editMessagepage",
"middleware" => "auth"
]);
Route::match(['post','get'],'/message/deletemessage/{message_id}',[
"uses" => "MessageController@deleteMessage",
"middleware" => "auth"
]);
Route::match(['post','get'],'/sendannouncement',[
"uses" => "AdminController@sendAnnouncement",
"middleware" => "admin"
+9 -1
View File
@@ -3,8 +3,16 @@
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Message extends Model
{
protected $table='messages';
protected $table = 'message';
protected $dates = ['deleted_at'];
public function receiver()
{
return $this->belongsTo('App\User', 'receiver_id');
}
}
-10
View File
@@ -1,10 +0,0 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Messages extends Model
{
protected $table='message';
}
@@ -1,35 +0,0 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateMessagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('messages', function (Blueprint $table) {
$table->increments('id');
$table->integer('cat_id');
$table->integer('user_id');
$table->integer('good_id');
$table->integer('shop_id');
$table->string('content');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('messages');
}
}
@@ -14,10 +14,12 @@ class CreateMessageTable extends Migration
{
Schema::create('message', function (Blueprint $table) {
$table->increments('id');
$table->text('title');
$table->string('title');
$table->integer('sender_id');
$table->integer('receiver_id');
$table->text('content');
$table->text('content')->nullable();
$table->boolean('is_read')->default(false);
$table->softDeletes();
$table->timestamps();
});
}
+1
View File
@@ -13,5 +13,6 @@ class DatabaseSeeder extends Seeder
{
$this->call(UserSeeder::class);
$this->call(GoodCatSeeder::class);
$this->call(MessageSeeder::class);
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Seeder;
class MessageSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i = 0; $i < 50; $i++)
DB::table('message')->insert([
'title' => str_random(8),
'sender_id' => 1,
'receiver_id' => 1,
'content' => str_random(256),
'is_read' => rand(0, 1)
]);
}
}
@@ -1,24 +0,0 @@
@extends('layout.master')
@section('title', "私信")
@section('content')
<a href="/message/editmessage">Edit</a><br/>
<div class="page-content">
@foreach($informations as $information)
{{$information->title}}<br/>
{{$information->content}}<br/>
{{$information->created_at}}<br/>
@if($information->sender_id != 0)
{{$users[$information->sender_id]->nickname}}<br/>
@endif
@if($information->sender_id == 0)
系统通知<br/>
@endif
@endforeach
</div>
@endsection
@@ -6,23 +6,24 @@
<div class="page-content">
@foreach($informations as $information)
<form action="/message/deletemessage/{{$information->id}}" method="POST">
<form action="/message/{{$information->id}}" method="POST">
{!! csrf_field() !!}
{!! method_field('delete') !!}
{{$information->id}}<br/>
{{$information->title}}<br/>
{{$information->content}}<br/>
{{$information->created_at}}<br/>
{{$information->is_read}}<br/>
@if($information->sender_id != 0)
{{$users[$information->sender_id]->nickname}}<br/>
@endif
@if($information->sender_id ==0)
{{$information->receiver->nickname}}<br/>
@else
系统通知<br/>
<br/>
@endif
<input type="submit" value="Delete"><br/>
<br/>
</form>
@endforeach
{{ $informations->links() }}
</div>
@include('layout.footer')
@include('includes.foot')
@endsection
@@ -5,7 +5,7 @@
@section('content')
<div class="page-content">
<form action="/message/send" method="post">
<form action="/message" method="post">
Title:<input type="text" name="title"><br/>
Content:<textarea name="content" row="15" cols="45"></textarea><br/>
Receiver:<input type="text" name="receiver"><br/>
+66
View File
@@ -0,0 +1,66 @@
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\BrowserKitTestCase;
class MessageTest extends BrowserKitTestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicMessage()
{
//test Send Message
$this->withSession(['user_id' => 1])
->post('message')
->seeStatusCode(302)
->post('message', ['title' => 'testMessage'])
->seeStatusCode(302)
->post('message', ['title' => 'testMessage', 'receiver' => 'aaa'])
->seeStatusCode(302)
->post('message', ['title' => 'testMessage', 'receiver' => '1024'])
->seeJson(['result' => false, 'msg' => 'no such receiver'])
->post('message', ['title' => 'testMessage', 'content' => 'content', 'receiver' => '1'])
->seeJson(['result' => true, 'msg' => 'success']);
//test Message Number
$this->withSession(['user_id' => 1])
->get('message/num')
->see('1');
//test Get Message List
$this->withSession(['user_id' => 1])
->visit('message')
->see('testMessage');
//test Unauthorized
$this->withSession(['user_id' => 2])
->put('message/1')
->seeJson(['result' => false, 'msg' => 'Auth Failure.'])
->delete('message/1')
->seeJson(['result' => false, 'msg' => 'Auth Failure.']);
//test Read Message
$this->withSession(['user_id' => 1])
->put('message/1')
->seeJson(['result' => true, 'msg' => 'success'])
->get('message/num')
->see('0')
->visit('message')
->see('testMessage');
//test Del Message
$this->withSession(['user_id' => 1])
->delete('message/1')
->seeJson(['result' => true, 'msg' => 'success'])
->visit('message')
->dontSee('testMessage');
}
}