Commit 9b8f8c39 by 庄欣

选片

parent 508c07fe
<?php
namespace App\Works\Events;
namespace App\Article\Events;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Event;
use App\Article\W as WorksModel;
use App\Article\Model\Art as ArtModel;
class ArtEditedEvent extends Event
{
......
......@@ -49,7 +49,7 @@ class ArtListener
"article_id" => $model->id,
"title" => $model->title,
"kw" => implode(" ",array_column($model->relation_keywords()->get("kw")->toArray(),"kw")),
"nickname" => UserModel::getUserInfo($model->uid, "nickname")['nickname'],
"nickname" => UserModel::getUserInfo($model->uid,["nickname"])->nickname,
"lasttime" => date("Y-m-d H:i:s")
]);
}
......
......@@ -25,18 +25,44 @@ class Art extends Model
];
protected $table = "myp_article";
public $timestamps = false;
protected $fillable = [
'content',
'title',
'cover'
'content', 'title', 'cover', 'uid'
];
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->beforeValidationOnCreate();
}
public function beforeValidationOnCreate()
{
$this->look_count = 0;
$this->like_count = 0;
$this->collect_count = 0;
$this->is_hidden = 0;
$this->comment_count = 0;
$this->shared_count = 0;
$this->type = self::ARTICLE;
$this->hot_point = 0;
$this->is_del = 0;
$this->create_time = date("Y-m-d H:i:s",time());
}
public function relation_keywords()
{
return $this->hasMany(Keywords::class,"article_id")->select(Keywords::fields);
}
/**
* @param $data
* @return Art|bool
* 测试通过的第一个
*/
public static function newArt($data)
{
$model = new self;
......@@ -44,14 +70,7 @@ class Art extends Model
try {
$model->fill($data);
if (isset($data['keywords']) && !empty($data['keywords'])) {
$keywords_list = [];
foreach ($data['keywords'] as $keyword) {
$keywords = new Keywords();
$words = BaseKeyWords::getIdByWords($keyword,$data['uid'],true);
$keywords->kw = $words->kw_name;
$keywords->kw_id = $words->id;
array_push($keywords_list,$keywords);
}
$keywords_list = Keywords::newKeywords($data['keywords'],$data['uid']);
$model->relation_keywords()->saveMany($keywords_list);
}
$model->save();
......@@ -67,20 +86,12 @@ class Art extends Model
{
DB::beginTransaction();
try {
$this->fill($data);
if (isset($data['keywords']) && !empty($data['keywords'])) {
$keywords_list = [];
foreach ($data['keywords'] as $keyword) {
$keywords = new Keywords();
$words = BaseKeyWords::getIdByWords($keyword,$data['uid'],true);
$keywords->kw = $words->kw_name;
$keywords->kw_id = $words->id;
array_push($keywords_list,$keywords);
}
$keywords_list = Keywords::newKeywords($data['keywords'],$data['uid']);
$this->relation_keywords()->delete();
$this->relation_keywords()->saveMany($keywords_list);
}
$this->save();
$this->update($data);
} catch (\Exception $e) {
DB::rollBack();
return false;
......
......@@ -9,4 +9,20 @@ class Keywords extends Model
const fields = [
"id","kw_id","kw"
];
public static function newKeywords($keywords,$uid)
{
if (!is_array($keywords)) {
$keywords = [$keywords];
}
$keywords_list = [];
foreach ($keywords as $keyword) {
$keywords = new Keywords();
$words = BaseKeyWords::getIdByWords($keyword,$uid, true);
$keywords->kw = $words->kw_name;
$keywords->kw_id = $words->id;
array_push($keywords_list, $keywords);
}
return $keywords_list;
}
}
\ No newline at end of file
......@@ -11,7 +11,7 @@ namespace App\Article\v1\Controller;
use App\Article\Events\ArtAddEvent;
use App\Article\Validation\ArtValidator;
use App\Traits\Controller;
use App\Works\Events\ArtEditedEvent;
use App\Article\Events\ArtEditedEvent;
use Illuminate\Support\Facades\Event;
use Symfony\Component\HttpFoundation\Request;
use App\Article\Model\Art as ArtModel;
......@@ -48,7 +48,6 @@ class Article extends \Illuminate\Routing\Controller
}
$this->csrf($post,'content');
$model = ArtModel::newArt($post);
var_dump($model);
if ($model !== false) {
Event::fire(new ArtAddEvent($model));
return Response::ok();
......@@ -57,20 +56,20 @@ class Article extends \Illuminate\Routing\Controller
}
}
/**
* 已测试
* @param $id
* @param Request $request
* @return array
*/
public function update($id,Request $request)
{
try {
$model = ArtModel::findOrFail($id, ["id"]);
$model = ArtModel::findOrFail($id);
$post = $request->all();
$validator = new ArtValidator();
$res = $validator->validate($post);
if ($res->fails()) {
$messages = $validator->getMessages();
return Response::error($messages,HttpStatus::HttpValidationFailed);
}
$post['content'] = $this->csrf($post,'content');
$model->uptArt($post);
if ($model !== false) {
isset($post['content']) && $post['content'] = $this->csrf($post,'content');
$res = $model->uptArt($post);
if ($res !== false) {
Event::fire(new ArtEditedEvent($model));
return Response::ok();
} else {
......
......@@ -16,6 +16,25 @@ class User extends Controller
use \App\Traits\Controller;
protected $query_fields = [
"mobile","nickname"
];
public function search()
{
$query = request()->query();
$where = $this->filter($query);
if (key_exists("mobile",$where)) {
$model = UserModel::where("mobile","like","%".$where["mobile"]."%");
} elseif (key_exists("nickname",$where)){
$model = UserModel::where("nickname","like",$where["nickname"]."%");
} else {
return Response::success([]);
}
$res = $model->select(["id","nickname","mobile"])->first();
return Response::success(!is_null($res)?$res->toArray():[]);
}
/**
* 普通用户详情
*/
......
<?php
namespace App\Photo\Model;
use \Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class Details extends \Illuminate\Database\Eloquent\Model
{
const fields = [
"url","file_name","image_width","image_height","hit"
];
public $table = "myp_xp_set_details";
public $timestamps = false;
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->beforeValidationOnCreate();
}
public function beforeValidationOnCreate()
{
parent::beforeValidationOnCreate();
$this->hit = 0;
$this->is_del = 0;
$this->create_time = date("Y-m-d H:i:s",time());
}
}
\ No newline at end of file
<?php
namespace App\Photo\Model;
use App\Traits\Models;
use \Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use App\Photo\Model\Details;
class Photo extends Model
{
use Models;
protected $table = "myp_xp_set";
public $timestamps = false;
protected $fillable = [
'cover', 'extra_truing_price','count',"uid","pg_id"
];
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->beforeValidationOnCreate();
}
public function relation_details()
{
return $this->hasMany(Details::class,"xp_id")->select(Details::fields);
}
public function beforeValidationOnCreate()
{
$this->is_choose = 0;
$this->choose_count = 0;
$this->detail_count = 0;
$this->choose_time = "0000-00-00 00:00:00";
$this->is_del = 1;
$this->cover = " ";
$this->create_time = date("Y-m-d H:i:s",time());
}
public static function newPhoto($data)
{
$model = new self;
$res = $model->fill($data)->save();
return $res == true ? $model : false;
}
}
\ No newline at end of file
<?php
namespace App\Photo\Validation;
use App\Http\Validation\ValidatorBase as Validator;
class PhotoValidator extends Validator
{
protected $validator = [
'uid' => 'required',
'pg_id' => 'required',
'cover' => 'required',
'extra_truing_price' => 'required|numberic|min:0',
'pg_id' => 'required',
'count' => 'required|min:1',
];
protected $message = [
'uid.required' => '发送的用户不能为空',
'extra_truing_price.required' => '请填写额外精修的单价',
'extra_truing_price.numberic' => '额外精修的单价必须是数字',
'extra_truing_price.min' => '额外精修金额需为0或正整数',
'count.required' => '请填写选片数量',
'count.min' => '选片数量必须大于0',
];
}
\ No newline at end of file
<?php
namespace App\Photo\v1\Controller;
use App\Http\Response\HttpStatus;
use App\Http\Response\Response;
use App\Traits\Controller;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpFoundation\Request;
use App\Photo\Model\Photo as PhotoModel;
class Details extends \Illuminate\Routing\Controller
{
}
\ No newline at end of file
<?php
namespace App\Photo\v1\Controller;
use App\Http\Response\HttpStatus;
use App\Http\Response\Response;
use App\Traits\Controller;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpFoundation\Request;
use App\Photo\Model\Photo as PhotoModel;
class Photo extends \Illuminate\Routing\Controller
{
use Controller;
protected $query_fields = [
"is_choose", "is_del"
];
/**
* 首页 列表 全部选片+未选片
*/
public function index()
{
$query = request()->query();
$where = $this->filter($query);
is_null($where) && $where = [];
$row = isset($query["size"])?$query["size"]:config("app.default_perpage");
return Response::success(PhotoModel::where($where)->paginate($row)->toArray());
}
/**
* 新建
* @method
* post
* @param
* uid int required
* pg_id int required
* cover string required
* extra_truing_price float required
* count int required
*
*/
public function store(Request $request)
{
$post = $request->all();
$validator = new PhotoValidator();
$res = $validator->validate($post);
if ($res->fails()) {
$messages = $validator->getMessages();
return Response::error($messages,HttpStatus::HttpValidationFailed);
}
$model = PhotoModel::newPhoto($post);
if ($model !== false) {
return Response::ok();
} else {
return Response::error();
}
}
public function update($id,Request $request)
{
try {
$model = PhotoModel::findOrFail($id);
$res = $model->update($request->all());
if ($res !== false) {
return Response::ok();
} else {
return Response::error();
}
} catch (\Exception $e) {
return Response::error(HttpStatus::HttpNotFound,"选片未找到");
}
}
/**
* 删除
*/
public function destory($id)
{
try {
$model = PhotoModel::findOrFail($id);
$model->delete();
} catch (ModelNotFoundException $e){}
return Response::ok();
}
}
\ No newline at end of file
......@@ -23,11 +23,11 @@ class SetsSearcherListener
*搜索引擎
*/
$searcher = Search::getSearcher();
if ($model->is_del == 1 || $model->is_shelf == $model::SHELF_DOWN) {
if ($model->is_del == 1 || $model->is_shelf == $model::SHELF_DOWN || $model->exists == false) {
$searcher->del(Search::SETS,$model->id);
} elseif($model->is_del == 0 && $model->is_shelf == $model::SHELF_UP) {
$keyworks = array_column($model->relation_keywords()->get(["kw_name"])->toArray(),"kw_name");
$promotion = $model->relation_promotion()->toArray();
$promotion = $model->relation_promotion()->get()->toArray();
if (!empty($promotion)) {
$promotion = $promotion[0];
}
......
......@@ -4,14 +4,42 @@ namespace App\Sets\Model;
use \Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Support\Facades\DB;
class Sets extends Model
{
use \App\Traits\Models;
protected $table = "myp_sets";
const SHELF_UP = 0;
const SHELF_DOWN = 1;
protected $table = "myp_sets";
public $timestamps = false;
public function __construct(array $attributes)
{
parent::__construct($attributes);
$this->beforeValidationOnCreate();
}
public function beforeValidationOnCreate()
{
$this->collect_count = 0;
$this->star = 0;
$this->star_count = 0;
$this->look_count=0;
$this->makeup_descr = "";
$this->scene_descr = "";
$this->use_score = 0;
$this->cost_count = 0;
$this->n_lock = 0;
$this->n_sale = 0;
$this->n_total_sale = 0;
$this->promotion_id = 0;
$this->total_sale = 0;
$this->p_lock = 0;
$this->create_time = date("Y-m-d H:i:s",time());
$this->is_del = 0;
$this->sort = 0;
}
public function relation_promotion()
{
......@@ -43,4 +71,15 @@ class Sets extends Model
return $this->hasMany(Comments::class,"sets_id")->where('is_del',0);
}
public static function newSets($data)
{
DB::beginTransaction();
}
public function uptSets($data)
{
}
}
\ No newline at end of file
<?php
namespace App\Sets\Validation;
use App\Http\Validation\ValidatorBase as Validator;
class AttachmentValidator extends Validator
{
protected $validator = [
'title' => 'chinese_length:2,8',
'count' => 'required|integer',
'spec' => 'required|chinese_length:2,12',
];
protected $message = [
'title.chinese_length' => '成品名称需在2到8字之间',
'count.required' => '请输入交付成品数量',
'count.integer' => '交付成品数量必须是数字',
'spec.required' => '请输入交付成品规格',
'spec.chinese_length' => '成品规格需在2到12字之间',
];
}
\ No newline at end of file
<?php
namespace App\Sets\Validation;
use App\Http\Validation\ValidatorBase as Validator;
class PromotionValidator extends Validator
{
protected $validator = [
'promotion_price' => 'required|integer',
'p_order_count' => 'required|integer',
'promotion_start_time' => 'required',
'promotion_end_time' => 'required',
];
protected $message = [
'promotion_price.required' => '请输入特惠金额',
'promotion_price.integer' => '特惠金额必须是数字',
'p_order_count.required' => '请输入特惠数量',
'p_order_count.integer' => '特惠数量必须是数字',
'promotion_start_time.required' => '请输入特惠开始时间',
'promotion_end_time.required' => '请输入特惠结束时间',
];
public function custom_validate($data)
{
}
}
\ No newline at end of file
......@@ -3,41 +3,147 @@
namespace App\Sets\Validation;
use App\Http\Validation\ValidatorBase as Validator;
use App\Sets\Validation\AttachmentValidator;
use App\Sets\Validation\PromotionValidator;
class SetsValidator extends Validator
{
protected $validator = [
'city' => 'required',
'card_handle' => 'required',
'alipay_account'=> 'required',
'ex' => 'required|array_length_min:5|array_length_max:5',
'styles' => 'required',
'wx_open_id' => 'required',
'introduce' => 'chinese_lenth:2,50',
'nickname' => 'required',
'sex' => 'required',
'work_experince'=> 'required',
'device' => 'required',
'name' => 'required',
'card_id' => 'required',
'title' => 'required|chinese_length:2,15',
'cover' => 'required',
'price' => 'required|integer|min:5|max:10000',
'photographers_count' => 'required|integer',
'makeup_count' => 'required|integer',
'logistics_count' => 'required|integer',
'join_count' => 'required|integer',
'duration' => 'required|integer',
'negative_count' => 'required|integer',
'modification_count' => 'required|integer',
'modification_price' => 'required|integer',
'modeling_count' => 'required|integer',
'deadline_of_day' => 'required|integer',
'n_cost' => 'required|min:1',
'start_time' => 'required',
'end_time' => 'required',
];
protected $message = [
'city.required' => '请选择您的城市',
'introduce.chinese_lenth' => '个人简介应为2到50个字符',
'card_handle.required' => '请上传您的手持证件照',
'alipay_account.required' => '您必须填写支付宝账号',
'ex.required' => '你必须上传您的代表作品',
'styles.required' => '请选择您擅长的分类',
'wx_open_id.required' => '您还未绑定微信号',
'sex.required' => '请选择性别',
'work_experince.required' => '请填写您的从业年限',
'device.required' => '请填写您的拍摄器材',
'name.required' => '姓名不能为空',
'card_id.required' => '身份证号不能为空',
'ex.array_length_min' => '代表作品限制为5张',
'ex.array_length_max' => '代表作品限制为5张',
'title.required' => '请填写套系名称',
'title.chinese_length' => '套系名称长度需在2到15字之间',
'cover.required' => '请选择封面',
'price.required' => '请填写套系价格',
'price.integer' => '套系价格为数字',
'price.min' => '价格须在5元以上,100,000以下',
'price.max' => '价格须在5元以上,100,000以下',
'photographers_count.required' => '您还未填写人员配备人数',
'photographers_count.integer' => '配备人数必须是数字',
'makeup_count.required' => '您还未填写化妆人员人数',
'makeup_count.integer' => '化妆人员人数必须是数字',
'logistics_count.required' => '您还未填写后勤人数',
'logistics_count.integer' => '后勤人数必须是数字',
'join_count.required' => '您还未填写最多拍摄人数',
'join_count.integer' => '拍摄人数必须是数字',
'duration.required' => '您还未填写最多拍摄时长',
'duration.integer' => '拍摄时长必须是数字',
'negative_count.required' => '您还未填写底片数量',
'negative_count.integer' => '底片数量必须是数字',
'modification_count.required' => '您还未填写精修片数量',
'modification_count.integer' => '精修片数量必须是数字',
'modification_price.required' => '您还未填写额外精修价格',
'modification_price.integer' => '额外精修价格必须是数字',
'modeling_count.required' => '您还未填写造型数量',
'modeling_count.integer' => '造型数量必须是数字',
'deadline_of_day.required' => '您还未填写交图天数',
'deadline_of_day.integer' => '交图天数必须是数字',
'n_cost' => '套系可约单数必须大于0',
'start_time' => '请填写开始时间',
'end_time' => '请填写开始时间'
];
/**
* 额外规则
* @param array $data
*/
public function custom_validate($data)
{
$messages = [];
if (empty($data['works'])) {
$messages[] = "该套系至少应绑定一个样片集";
}
if (empty($data['category'])) {
$messages[] = "该套系必须至少选择一个分类";
}
if ($data['modeling_count'] < $data['modeling_count_from_user']) {
$messages[] = "摄影师最多提供数不可大于造型总数量";
}
//整形判断
if (isset($data["allow_self_take"])) {
if(empty($data["modeling_count_from_user"])) {
$messages[] = '您还未填写允许用户自带数量';
};
if(!is_integer($data["modeling_count_from_user"])) {
$messages[] = '自带数量是数字';
};
}
if ($data['start_time'] > $data['end_time']) {
$messages[] = "套系开始时间必须小于结束时间";
}
if ($data["is_promotion"] == 1 && empty($data['promotion']['id'])) {
if ($data['promotion']['promotion_start_time'] >= $data['promotion']['promotion_end_time']) {
$messages[] = "特惠开始时间应小于特惠停止时间";
}
if ((int)$data['promotion']['per_user_count'] > $data['promotion']['p_order_count']) {
$messages[] = "特惠的限购额度应小于特惠数量";
}
if ($data['promotion']['p_order_count'] <= 0 ) {
$messages[] = "特惠数量应大于0";
}
if ($data['promotion']['promotion_start_time'] < $data['start_time']) {
$messages[] = "特惠的开始时间应大于套系的起始有效时间";
}
if ($data['promotion']['promotion_end_time'] > $data['end_time']) {
$messages[] = "特惠的结束时间应小于在套系终止有效时间";
}
$startdate=strtotime($data['promotion']['promotion_start_time']);
$enddate=strtotime($data['promotion']['promotion_end_time']);
$days=round(($enddate-$startdate)/3600/24) ;
if ($days > 100) {
$messages[] = "特惠时间长度不应大于100天";
}
if ($data['promotion']['promotion_price'] >= $data['price']) {
$messages[] = "特惠价格应小于套系价格";
}
if ($data['promotion']['promotion_price'] < 5) {
$messages[] = "特惠价格应大于5元";
}
$validator = new PromotionValidator();
$res = $validator->validate($data['promotion']);
if($res->fails()) {
$messages[] = $validator->getMessages();
}
unset($validator);
}
if (isset($data["attachment"]) && is_array($data["attachment"]) && count($data["attachment"]) > 0) {
$validator = new AttachmentValidator();
foreach($data["attachment"] as $item) {
if(!empty($item['title'])) {
$res = $validator->validate($item);
if($res->fails()) {
$messages[] = $validator->getMessages();
break;
}
}
}
unset($validator);
}
self::$result->setCustomMessages($messages);
return empty($messages);
}
}
\ No newline at end of file
......@@ -5,7 +5,10 @@ namespace App\Sets\v1\Controller;
use App\Http\Response\HttpStatus;
use App\Http\Response\Response;
use App\Sets\Model\Sets as SetsModel;
use App\Sets\Validation\SetsValidator;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpFoundation\Request;
use App\Sets\Events\SetsEditedEvent;
class Sets extends \Illuminate\Routing\Controller
{
......@@ -74,9 +77,59 @@ class Sets extends \Illuminate\Routing\Controller
* method post
* 新建套系
*/
public function store()
public function store(Request $request)
{
$validator = new SetsValidator();
$post = $request->all();
$res = $validator->validate($post);
if ($res->fails()) {
$messages = $validator->getMessages();
return Response::error($messages,HttpStatus::HttpValidationFailed);
}
$model = SetsModel::newSets($post);
if ($model !== false) {
Event::fire(new SetsEditedEvent($model));
return Response::ok();
} else {
return Response::error();
}
}
/**
* 修改
* @param $id
* @param Request $request
*/
public function update($id,Request $request)
{
try {
$model = SetsModel::findOrFail($id);
$res = $model->fill($request->all())->save();
if ($res) {
Event::fire(new SetsEditedEvent($model));
return Response::ok();
} else {
return Response::error();
}
} catch (ModelNotFoundException $e) {
return Response::error(HttpStatus::HttpNotFound,"样片未找到");
}
}
public function destory($id)
{
try {
$model = SetsModel::findOrFail($id);
$res = $model->delete();
if ($res) {
Event::fire(new SetsEditedEvent($model));
return Response::ok();
} else {
return Response::error();
}
} catch (ModelNotFoundException $e) {
return Response::error(HttpStatus::HttpNotFound,"样片未找到");
}
}
}
\ No newline at end of file
......@@ -36,25 +36,25 @@ trait Controller
}
switch ($condition) {
case "eq":
$where[$key] = [$key,"like '%".$where[$key]."%'"];
$where["_condition"] = [$key,"like","'%.$where[$key].%'"];
break;
case "elt":
$where[$key] = [$key,"<= '".$where[$key]."'"];
$where["_condition"] = [$key,"<=","'$where[$key]'"];
break;
case "lt":
$where[$key] = [$key,"< '".$where[$key]."'"];
$where["_condition"] = [$key,"<","'$where[$key]'"];
break;
case "gt":
$where[$key] = [$key,"> '".$where[$key]."'"];
$where["_condition"] = [$key,"<","'$where[$key]'"];
break;
case "egt":
$where[$key] = [$key,">= '".$where[$key]."'"];
$where["_condition"] = [$key,">=","'$where[$key]'"];
break;
}
return $where;
}
public function csrf(&$data,$key) {
$data[$key] = preg_replace("/<script[^>]*>.*<\/script>/i","",$data[$key]);
public function csrf($data,$key) {
return preg_replace("/<script[^>]*>.*<\/script>/i","",$data[$key]);
}
}
\ No newline at end of file
......@@ -97,7 +97,7 @@ class Works extends \Illuminate\Routing\Controller
}
/**
* 编辑样片
* 编辑样片基础信息
* @param Request $request
* @method put
*/
......@@ -105,7 +105,7 @@ class Works extends \Illuminate\Routing\Controller
{
try {
$model = WorksModel::findOrFail($id);
$res = $model->fill($request->all())->save();
$res = $model->update($request->all());
if ($res) {
Event::fire(new WorksEditedEvent($model));
return Response::ok();
......
......@@ -64,20 +64,28 @@ Route::group(["prefix" => "ident", 'namespace' => Provider::getNamespace("ident"
});
//身份认证
//用户
Route::group(["prefix" => "user", 'namespace' => Provider::getNamespace("member")],function(){
Route::get("/{id}" , "User@show")->where(['id' => '\d+']);
Route::get("/auth/{code?}" ,"User@code");
Route::get("/show/{code}" ,"User@getUserByHashCode")->where(['code' => '\S+']);
Route::get("/search" ,"User@search");
});
//身份认证
//攻略
Route::group(["prefix" => "art", 'namespace' => Provider::getNamespace("article")],function(){
Route::get("/" , "Article@index")->where(['id' => '\d+']);
Route::put("/{id}" , "Article@update")->where(['id' => '\d+']);
Route::post("/" , "Article@store")->where(['id' => '\d+']);
Route::get("/" , "Article@index");
Route::put("/{id}" ,"Article@update")->where(['id' => '\d+']);
Route::post("/" , "Article@store");
Route::get("/{id}" ,"Article@show")->where(['id' => '\d+']);
Route::get ("/{id}/relation/{relation}" , "Article@getRelate")->where(['id' => '\d+','relation'=>'\S+']);
});
//选片
Route::group(["prefix" => "photo", 'namespace' => Provider::getNamespace("photo")],function(){
Route::get("/" , "Photo@index");
Route::post("/" , "Photo@store");
Route::delete("/{id}", "Photo@destory")->where(['id' => '\d+']);
Route::put("/{id}" , "Photo@update")->where(['id' => '\d+']);
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment