finish basic message backend
This commit is contained in:
@@ -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.'请及时前往确认。';
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -13,5 +13,6 @@ class DatabaseSeeder extends Seeder
|
||||
{
|
||||
$this->call(UserSeeder::class);
|
||||
$this->call(GoodCatSeeder::class);
|
||||
$this->call(MessageSeeder::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
+8
-7
@@ -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/>
|
||||
|
||||
@@ -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');
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user