From 088dd64b2f7e6d42aa5306f5a58baf572f908872 Mon Sep 17 00:00:00 2001 From: xuanchen <122383162@qq.com> Date: Wed, 11 Jan 2023 16:54:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=B6=E6=AE=B5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Actions/Area/AddStock.php | 40 +++++ app/Admin/Actions/Area/SubStock.php | 40 +++++ .../Controllers/Area/IndexController.php | 129 +++++++++++++++ app/Admin/Controllers/TestController.php | 42 +---- app/Admin/Routes/area.php | 10 ++ app/Admin/Selectable/AreaStockAble.php | 25 +++ app/Admin/Selectable/ClerksSelectAble.php | 40 +++++ app/Api/Controllers/Area/IndexController.php | 73 +++++++++ app/Api/Resources/Area/AreaCodeCollection.php | 28 ++++ app/Api/Resources/Area/AreaResource.php | 19 +++ app/Api/Routes/area.php | 14 ++ app/Listeners/UserOrderPaidListener.php | 18 -- app/Models/Area.php | 147 +++++++++++++++++ app/Models/AreaClerk.php | 15 ++ app/Models/AreaCode.php | 36 ++++ app/Models/AreaStock.php | 11 ++ app/Models/Traits/BelongsToArea.php | 23 +++ config/admin.php | 6 +- .../2023_01_11_132844_create_areas_table.php | 41 +++++ ...3_01_11_132907_create_area_codes_table.php | 37 +++++ ..._01_11_133711_create_area_clerks_table.php | 32 ++++ ..._01_11_142356_create_area_stocks_table.php | 34 ++++ modules.json | 7 +- modules/Configuration/.gitignore | 4 - modules/Configuration/README.md | 6 - modules/Coupon/.gitignore | 4 - modules/Coupon/README.md | 10 -- modules/Notification/README.md | 154 ------------------ 28 files changed, 807 insertions(+), 238 deletions(-) create mode 100644 app/Admin/Actions/Area/AddStock.php create mode 100644 app/Admin/Actions/Area/SubStock.php create mode 100644 app/Admin/Controllers/Area/IndexController.php create mode 100644 app/Admin/Routes/area.php create mode 100644 app/Admin/Selectable/AreaStockAble.php create mode 100644 app/Admin/Selectable/ClerksSelectAble.php create mode 100644 app/Api/Controllers/Area/IndexController.php create mode 100644 app/Api/Resources/Area/AreaCodeCollection.php create mode 100644 app/Api/Resources/Area/AreaResource.php create mode 100644 app/Api/Routes/area.php create mode 100644 app/Models/Area.php create mode 100644 app/Models/AreaClerk.php create mode 100644 app/Models/AreaCode.php create mode 100644 app/Models/AreaStock.php create mode 100644 app/Models/Traits/BelongsToArea.php create mode 100644 database/migrations/2023_01_11_132844_create_areas_table.php create mode 100644 database/migrations/2023_01_11_132907_create_area_codes_table.php create mode 100644 database/migrations/2023_01_11_133711_create_area_clerks_table.php create mode 100644 database/migrations/2023_01_11_142356_create_area_stocks_table.php delete mode 100644 modules/Configuration/.gitignore delete mode 100644 modules/Configuration/README.md delete mode 100644 modules/Coupon/.gitignore delete mode 100644 modules/Coupon/README.md delete mode 100644 modules/Notification/README.md diff --git a/app/Admin/Actions/Area/AddStock.php b/app/Admin/Actions/Area/AddStock.php new file mode 100644 index 0000000..a360611 --- /dev/null +++ b/app/Admin/Actions/Area/AddStock.php @@ -0,0 +1,40 @@ +number; + + $res = Area::addStock($area, $number, false); + + if ($res === true) { + return $this->response()->success('增加库存成功')->refresh(); + } else { + return $this->response()->error('增加库存成功失败,'.$res)->refresh(); + } + } catch (\Exception $exception) { + return $this->response()->error('增加库存成功失败,'.$exception->getMessage())->refresh(); + } + + } + + public function form(Area $area) + { + $this->integer('number', '增加库存数') + ->default(0) + ->help('1份=2箱') + ->required(); + } + +} diff --git a/app/Admin/Actions/Area/SubStock.php b/app/Admin/Actions/Area/SubStock.php new file mode 100644 index 0000000..44f493b --- /dev/null +++ b/app/Admin/Actions/Area/SubStock.php @@ -0,0 +1,40 @@ +number; + + $res = Area::addStock($area, -$number, false); + + if ($res === true) { + return $this->response()->success('增加库存成功')->refresh(); + } else { + return $this->response()->error('增加库存成功失败,'.$res)->refresh(); + } + } catch (\Exception $exception) { + return $this->response()->error('增加库存成功失败,'.$exception->getMessage())->refresh(); + } + + } + + public function form(Area $area) + { + $this->integer('number', '减少库存数') + ->default(0) + ->help('1份=2箱') + ->required(); + } + +} diff --git a/app/Admin/Controllers/Area/IndexController.php b/app/Admin/Controllers/Area/IndexController.php new file mode 100644 index 0000000..78011a8 --- /dev/null +++ b/app/Admin/Controllers/Area/IndexController.php @@ -0,0 +1,129 @@ +actions(function (Grid\Displayers\Actions $actions) { + $actions->disableDelete(); + $actions->disableView(); + $actions->add(new AddStock()); + $actions->add(new SubStock()); + + }); + + $grid->filter(function (Grid\Filter $filter) { + $filter->column(1 / 3, function (Grid\Filter $filter) { + $filter->like('title', '地区名称'); + }); + + $filter->column(1 / 3, function (Grid\Filter $filter) { + $filter->equal('user_id', '管理员')->select()->ajax(route('admin.user.users.ajax')); + }); + }); + + $grid->model()->with(['user.info']); + + $grid->column('id', '序号'); + $grid->column('title', '地区名称'); + $grid->column('stock', '库存') + ->modal('变动记录', AreaStockAble::class); +// $grid->column('user.username', '管理员') +// ->display(function () { +// return $this->user->username."({$this->user->info->nickname})"; +// }); + $grid->column('all_address', '地址') + ->display(function () { + return $this->getFullAddress(); + }); + + $grid->column('clerks', '操作员') + ->belongsToMany(ClerksSelectAble::class); + $grid->column('created_at', '创建时间'); + + + return $grid; + } + + /** + * Notes : 编辑表单 + * + * @Date : 2021/7/15 5:09 下午 + * @Author : + * @return Form + * @throws Exception + */ + public function form(): Form + { + + $form = new Form(new Area()); + + $form->text('title', '地区名称')->required(); + +// $form->select('user_id', '管理员') +// ->options(function ($userId) { +// $user = User::find($userId); +// if ($user) { +// return [$user->id => $user->username.' ['.$user->info->nickname.']']; +// } +// }) +// ->value(request()->user_id ?? '') +// ->ajax(route('admin.user.users.ajax')) +// ->required(); + + $form->belongsToMany('clerks', ClerksSelectAble::class, '关联操作员'); + + if ($form->isCreating()) { + $form->number('stock', '库存(份)')->default(100)->help('1份2箱'); + } + $form->select('province_id', '省份') + ->options(Region::where('parent_id', 1)->pluck('name', 'id')) + ->load('city_id', route('admin.mall.regions.region')) + ->required(); + $form->select('city_id', '城市') + ->options(function ($option) { + $parent = Region::where('id', $option)->value('parent_id'); + + return Region::where(['parent_id' => $parent])->pluck('name', 'id'); + }) + ->load('district_id', route('admin.mall.regions.region')) + ->required(); + $form->select('district_id', '区/县') + ->options(function ($option) { + $parent = Region::where('id', $option)->value('parent_id'); + + return Region::where(['parent_id' => $parent])->pluck('name', 'id'); + }) + ->required(); + $form->text('address', '详细地址') + ->required(); + $form->switch('status', '状态') + ->default(1); + return $form; + } +} diff --git a/app/Admin/Controllers/TestController.php b/app/Admin/Controllers/TestController.php index e303057..2a71352 100644 --- a/app/Admin/Controllers/TestController.php +++ b/app/Admin/Controllers/TestController.php @@ -2,33 +2,20 @@ namespace App\Admin\Controllers; -use App\Bonus\IdentityBonus; use App\Http\Controllers\Controller; -use Carbon\Carbon; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Str; -use Liuhelong\LaravelAdmin\Wechat\Models\WechatOffiaccountUser; -use Modules\Coupon\Models\Coupon; -use Modules\Coupon\Traits\WithCoupon; use Modules\User\Models\Identity; -use Modules\User\Models\Order; -use Modules\User\Models\UserInvite; -use Modules\User\Models\UserStockLog; -use Modules\User\Models\UserWechat; -use Modules\User\Models\UserWechatOfficial; use Modules\User\Traits\RankDataTrait; use Modules\User\Traits\WechatTrait; -use Vinkla\Hashids\Facades\Hashids; class TestController extends Controller { - use WithCoupon, WechatTrait, RankDataTrait; + use WechatTrait, RankDataTrait; public function index() { - $identities= Identity::all(); + $identities = Identity::all(); dd($identities->toArray()); } @@ -55,20 +42,9 @@ class TestController extends Controller $tables = [ 'admin_operation_log', - 'bouns', - 'bouns_orders', - 'bouns_user_perves', - 'coupon_grants', - 'coupon_item_use_logs', - 'coupon_use_logs', + 'favorites', + 'cms_logs', 'failed_jobs', - 'gout_case_log_symptoms', - 'gout_case_logs', - 'gout_case_timelines', - 'gout_case_symptom', - 'gout_cases', - 'gout_surveys', - 'gout_votes', 'jobs', 'linker_relations', 'linkers', @@ -81,7 +57,6 @@ class TestController extends Controller 'mall_refund_logs', 'mall_refunds', 'mall_refund_expresses', - 'notifications', 'payment_refunds', 'payments', 'user_account_logs', @@ -100,17 +75,18 @@ class TestController extends Controller 'user_sms', 'user_stock_logs', 'user_stocks', + 'user_subscribes', 'user_wechat_apps', 'user_wechat_minis', 'user_wechat_officials', 'user_wechats', 'users', + 'personal_access_tokens', + 'subscriptions', + 'task_logs', + 'task_users', 'versions', 'wechat_offiaccount_event_logs', - 'withdraw_alipay_accounts', - 'withdraw_bank_accounts', - 'withdraw_logs', - 'withdraws', 'personal_access_tokens', ]; foreach ($tables as $table) { diff --git a/app/Admin/Routes/area.php b/app/Admin/Routes/area.php new file mode 100644 index 0000000..fd3979d --- /dev/null +++ b/app/Admin/Routes/area.php @@ -0,0 +1,10 @@ + 'Area', +], function (Router $router) { + $router->resource('areas', 'IndexController'); + $router->resource('areas/codes', 'IndexController'); +}); diff --git a/app/Admin/Selectable/AreaStockAble.php b/app/Admin/Selectable/AreaStockAble.php new file mode 100644 index 0000000..d7ea2aa --- /dev/null +++ b/app/Admin/Selectable/AreaStockAble.php @@ -0,0 +1,25 @@ +stocks()->exists(); + $data = []; + if ($stocks) { + $data = $area->stocks()->select('amount', 'stock', 'created_at')->get()->toArray(); + } + + $table = new Table(['变动值', '当前库存', '操作时间'], $data); + return $table->render(); + } + +} diff --git a/app/Admin/Selectable/ClerksSelectAble.php b/app/Admin/Selectable/ClerksSelectAble.php new file mode 100644 index 0000000..c574782 --- /dev/null +++ b/app/Admin/Selectable/ClerksSelectAble.php @@ -0,0 +1,40 @@ +clerks)->username; + }; + } + + public function make() + { + $this->column('id', 'ID'); + $this->column('username', '手机号'); + $this->column('info.nickname', '昵称'); + + $this->filter(function (Filter $filter) { + $filter->like('username', '手机号'); + }); + } + +} diff --git a/app/Api/Controllers/Area/IndexController.php b/app/Api/Controllers/Area/IndexController.php new file mode 100644 index 0000000..0cf7c5e --- /dev/null +++ b/app/Api/Controllers/Area/IndexController.php @@ -0,0 +1,73 @@ +whereHas('areaClerks', function ($q) { + $q->where('user_id', Api::userId()); + }) + ->get(); + + return $this->success(AreaResource::collection($areas)); + } + + /** + * Notes: 查看管理的提货码 + * + * @Author: 玄尘 + * @Date: 2023/1/11 15:42 + * @param Area $area + */ + public function codes(Area $area, Request $request) + { + $status = $request->status ?? ''; + + $codes = $area->areaCodes() + ->when($status, function ($q) use ($status) { + $q->where('status', $status); + }) + ->paginate(); + return $this->success(new AreaCodeCollection($codes)); + } + + /** + * Notes: 生成提货码 + * + * @Author: 玄尘 + * @Date: 2023/1/11 15:52 + * @param Area $area + * @param Request $request + * @return JsonResponse|mixed + */ + public function generate(Area $area, Request $request) + { + $res = $area->generate(Api::userId(), $request->num); + if ($res === true) { + return $this->success('生成成功'); + } else { + return $this->failed($res); + } + } + +} diff --git a/app/Api/Resources/Area/AreaCodeCollection.php b/app/Api/Resources/Area/AreaCodeCollection.php new file mode 100644 index 0000000..606518b --- /dev/null +++ b/app/Api/Resources/Area/AreaCodeCollection.php @@ -0,0 +1,28 @@ + $this->collection->map(function ($info) { + return [ + 'area_code' => $info->id, + 'user' => new UserBaseResource($info->user), + 'status' => [ + 'status' => $info->status, + 'text' => $info->status_text, + ], + ]; + }), + 'page' => $this->page(), + ]; + } + +} \ No newline at end of file diff --git a/app/Api/Resources/Area/AreaResource.php b/app/Api/Resources/Area/AreaResource.php new file mode 100644 index 0000000..dde7eec --- /dev/null +++ b/app/Api/Resources/Area/AreaResource.php @@ -0,0 +1,19 @@ + $this->id, + 'title' => $this->title, + 'stock' => $this->stock, + ]; + } + +} diff --git a/app/Api/Routes/area.php b/app/Api/Routes/area.php new file mode 100644 index 0000000..cb005e4 --- /dev/null +++ b/app/Api/Routes/area.php @@ -0,0 +1,14 @@ + 'Area', + 'middleware' => config('api.route.middleware_auth'), +], function (Router $router) { + $router->get('areas', 'IndexController@index'); + $router->get('areas/{area}/codes', 'IndexController@codes'); + $router->get('areas/{area}/generate', 'IndexController@generate'); +}); + diff --git a/app/Listeners/UserOrderPaidListener.php b/app/Listeners/UserOrderPaidListener.php index 3d30d3a..98f8688 100644 --- a/app/Listeners/UserOrderPaidListener.php +++ b/app/Listeners/UserOrderPaidListener.php @@ -2,10 +2,7 @@ namespace App\Listeners; -use App\Jobs\Bonus\BuyIdentityJob; -use App\Models\Bouns; use Illuminate\Contracts\Queue\ShouldQueue; -use Modules\Task\Facades\TaskFacade; use Modules\User\Events\UserOrderPaid; class UserOrderPaidListener implements ShouldQueue @@ -21,21 +18,6 @@ class UserOrderPaidListener implements ShouldQueue 'order_id' => $event->order->id, 'type' => $event->order->type, ]; - -// BuyIdentityJob::dispatch($user, $order, $source);//个人赠送水滴 -// Bouns::addBouns($order, $order->price); - - #TODO 开通会员赠送水滴 -// TaskFacade::do('open_vip', $user->id, [ -// 'identity_id' => $event->order->identity_id -// ]); - - #TODO 邀请一名健康体验馆 赠送水滴 -// if ($user->parent) { -// TaskFacade::do('recommend_ty', $user->parent->id, [ -// 'user_id' => $user->id -// ]); -// } } } diff --git a/app/Models/Area.php b/app/Models/Area.php new file mode 100644 index 0000000..a3bd69f --- /dev/null +++ b/app/Models/Area.php @@ -0,0 +1,147 @@ + '下架', + self::STATUS_UP => '上架', + ]; + + protected static function boot() + { + parent::boot(); + self::created(function ($model) { + self::addStock($model, $model->stock, true); + }); + } + + /** + * Notes: 操作员 + * + * @Author: 玄尘 + * @Date: 2023/1/11 13:57 + * @return BelongsToMany + */ + public function clerks(): BelongsToMany + { + return $this->belongsToMany( + User::class, + (new AreaClerk())->getTable())->using(AreaClerk::class + ); + } + + /** + * Notes: 操作员 + * + * @Author: 玄尘 + * @Date: 2023/1/11 15:53 + * @return HasMany + */ + public function areaClerks(): HasMany + { + return $this->hasMany(AreaClerk::class); + } + + /** + * Notes: 关联库存变动表 + * + * @Author: 玄尘 + * @Date: 2023/1/11 14:54 + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function stocks(): HasMany + { + return $this->hasMany(AreaStock::class); + } + + /** + * Notes: 关联提货券 + * + * @Author: 玄尘 + * @Date: 2023/1/11 15:43 + * @return HasMany + */ + public function areaCodes(): HasMany + { + return $this->hasMany(AreaCode::class); + } + + /** + * Notes: 增加库存 + * + * @Author: 玄尘 + * @Date: 2023/1/11 14:50 + * @param $number + */ + public static function addStock($area, $number, $isCreate = false) + { + $stock = $area->stock; + + if ($isCreate) { + $all = $number; + } else { + $area->increment('stock', $number); + $all = bcadd($number, $stock); + } + $area->stocks()->create([ + 'amount' => $number, + 'stock' => $all, + ]); + + return true; + } + + /** + * Notes: 生成提货码 + * + * @Author: 玄尘 + * @Date: 2023/1/11 16:00 + * @param $num + */ + public function generate($user_id, $num) + { + try { + if (! $num) { + throw new \Exception('缺少数量'); + } + if ($this->stock < $num) { + throw new \Exception('可生成数量不足,您还可以释放'.$this->stock); + } + + while ($num > 0) { + $data[] = [ + 'area_id' => $this->id, + 'manage_id' => $user_id, + 'code' => Str::random(14), + 'status' => AreaCode::STATUS_INIT, + 'created_at' => now(), + 'updated_at' => now(), + ]; + --$num; + } + + AreaCode::insert($data); + + return true; + } catch (\Exception $exception) { + return $exception->getMessage(); + } + } +} diff --git a/app/Models/AreaClerk.php b/app/Models/AreaClerk.php new file mode 100644 index 0000000..83e1e7d --- /dev/null +++ b/app/Models/AreaClerk.php @@ -0,0 +1,15 @@ + '未使用', + self::STATUS_USED => '已使用', + ]; + + /** + * Notes: 生成人-管理人 + * + * @Author: 玄尘 + * @Date: 2023/1/11 13:41 + * @return BelongsTo + */ + public function manage(): BelongsTo + { + return $this->belongsTo(User::class); + } + + +} diff --git a/app/Models/AreaStock.php b/app/Models/AreaStock.php new file mode 100644 index 0000000..2b0e44e --- /dev/null +++ b/app/Models/AreaStock.php @@ -0,0 +1,11 @@ +belongsTo(Area::class); + } + +} \ No newline at end of file diff --git a/config/admin.php b/config/admin.php index ffa817f..4523aa9 100644 --- a/config/admin.php +++ b/config/admin.php @@ -35,7 +35,7 @@ return [ | login page. | */ - 'name' => '修缮庙宇', + 'name' => '备水疫战', /* |-------------------------------------------------------------------------- @@ -45,7 +45,7 @@ return [ | Html title for all pages. | */ - 'title' => '修缮庙宇', + 'title' => '备水疫战', /* |-------------------------------------------------------------------------- @@ -56,7 +56,7 @@ return [ | `img` tag, eg 'Admin logo'. | */ - 'logo' => '修缮庙宇 功德无量', + 'logo' => '备水疫战 功德无量', /* |-------------------------------------------------------------------------- diff --git a/database/migrations/2023_01_11_132844_create_areas_table.php b/database/migrations/2023_01_11_132844_create_areas_table.php new file mode 100644 index 0000000..b3946b7 --- /dev/null +++ b/database/migrations/2023_01_11_132844_create_areas_table.php @@ -0,0 +1,41 @@ +id(); + $table->unsignedBigInteger('user_id')->nullable()->index(); + $table->string('title'); + $table->string('mobile', 32); + $table->unsignedInteger('province_id'); + $table->unsignedInteger('city_id'); + $table->unsignedInteger('district_id'); + $table->string('address'); + $table->integer('stock')->default(0)->comment('库存'); + $table->integer('sold')->default(0)->comment('领取数'); + $table->boolean('status')->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('areas'); + } +} diff --git a/database/migrations/2023_01_11_132907_create_area_codes_table.php b/database/migrations/2023_01_11_132907_create_area_codes_table.php new file mode 100644 index 0000000..0c03976 --- /dev/null +++ b/database/migrations/2023_01_11_132907_create_area_codes_table.php @@ -0,0 +1,37 @@ +id(); + $table->unsignedBigInteger('user_id')->nullable()->index(); + $table->unsignedBigInteger('manage_id')->index(); + $table->unsignedBigInteger('area_id')->index(); + $table->string('code'); + $table->boolean('status')->default(0); + $table->timestamp('pick_at')->nullable()->comment('提货时间'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('area_codes'); + } +} diff --git a/database/migrations/2023_01_11_133711_create_area_clerks_table.php b/database/migrations/2023_01_11_133711_create_area_clerks_table.php new file mode 100644 index 0000000..19867b8 --- /dev/null +++ b/database/migrations/2023_01_11_133711_create_area_clerks_table.php @@ -0,0 +1,32 @@ +id(); + $table->unsignedInteger('area_id')->comment('订单')->index(); + $table->unsignedInteger('user_id')->comment('操作员')->index(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('area_clerks'); + } +} diff --git a/database/migrations/2023_01_11_142356_create_area_stocks_table.php b/database/migrations/2023_01_11_142356_create_area_stocks_table.php new file mode 100644 index 0000000..55d9092 --- /dev/null +++ b/database/migrations/2023_01_11_142356_create_area_stocks_table.php @@ -0,0 +1,34 @@ +id(); + $table->unsignedBigInteger('area_id'); + $table->integer('amount')->comment('增加值'); + $table->integer('stock')->comment('库存量'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('area_stocks'); + } +} diff --git a/modules.json b/modules.json index 6fc7ecc..93152c3 100644 --- a/modules.json +++ b/modules.json @@ -4,10 +4,5 @@ "Mall": true, "Cms": true, "Payment": true, - "Gout": true, - "Linker": false, - "Notification": true, - "Coupon": true, - "Configuration": true, - "Withdraw": true + "Configuration": true } \ No newline at end of file diff --git a/modules/Configuration/.gitignore b/modules/Configuration/.gitignore deleted file mode 100644 index 4b6cb11..0000000 --- a/modules/Configuration/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.idea -vendor -.DS_Store -composer.lock \ No newline at end of file diff --git a/modules/Configuration/README.md b/modules/Configuration/README.md deleted file mode 100644 index 4654ce5..0000000 --- a/modules/Configuration/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# laravel-configuration-module - -# 参数配置模块 - -## 需要config的模块配置 - diff --git a/modules/Coupon/.gitignore b/modules/Coupon/.gitignore deleted file mode 100644 index 4b6cb11..0000000 --- a/modules/Coupon/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.idea -vendor -.DS_Store -composer.lock \ No newline at end of file diff --git a/modules/Coupon/README.md b/modules/Coupon/README.md deleted file mode 100644 index 65678db..0000000 --- a/modules/Coupon/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# 优惠券模块 - -> 1、发布config并配置相关模型 - -> 2、关联traits - -```php -Shop Model -use HasStores,HasCoupons; -``` diff --git a/modules/Notification/README.md b/modules/Notification/README.md deleted file mode 100644 index aa32b2c..0000000 --- a/modules/Notification/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# Notification - -通知模块 - -## 1. 安装 - -```shell -composer require getuilaboratory/getui-pushapi-php-client-v2 -``` - -## 2. 接口文档 - -### 1. 获取未读消息数量(不登陆返回0) - -> GET: /api/notifications/counts - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": 16 -} -``` - -### 2. 消息主页 - -> GET: /api/notifications - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": [ - { - "type": "SystemNotification", - "icon": "", - "name": "系统通知", - "count": 16, - "title": "登录成功" - }, - { - "type": "OrderNotification", - "icon": "", - "name": "订单通知", - "count": 0, - "title": "" - }, - { - "type": "ActivityNotification", - "icon": "", - "name": "活动通知", - "count": 0, - "title": "" - } - ] -} -``` - -### 3. 分类消息的列表 - -> GET: /api/notifications/{type}/list - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": { - "data": [ - { - "notification_id": "91e31d1e-95e1-40ff-88d8-8049df974860", - "type": "SystemNotification", - "title": "登录成功", - "content": "您于北京时间:2021-07-02 15:31:03,通过【账号密码】渠道,在IP:1.190.203.218成功登录系统。请注意保管好您的账号密码。", - "read_at": "", - "created_at": "2021-07-02 15:31:03" - } - ], - "page": { - "current": 1, - "total_page": 2, - "per_page": 15, - "has_more": true, - "total": 16 - } - } -} -``` - -### 4. 消息详情 - -> GET: /api/notifications/{notification_id} - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": { - "notification_id": "91e31d1e-95e1-40ff-88d8-8049df974860", - "type": "SystemNotification", - "title": "登录成功", - "content": "您于北京时间:2021-07-02 15:31:03,通过【账号密码】渠道,在IP:1.190.203.218成功登录系统。请注意保管好您的账号密码。", - "read_at": "2021-07-02 16:27:07", - "created_at": "2021-07-02 15:31:03" - } -} -``` - -### 5. 全部标记已读 - -> PUT: /api/notifications - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": "" -} -``` - -### 6. 全部标记已读(分类) - -> PUT: /api/notifications/{type} - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": "" -} -``` - -### 7. 清空全部消息 - -> DELETE: /api/notifications - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": "" -} -``` - -### 8. 清空分类消息 - -> DELETE: /api/notifications/{type} - -```json -{ - "status": "SUCCESS", - "status_code": 200, - "data": "" -} -``` \ No newline at end of file