调整下单
This commit is contained in:
@@ -51,6 +51,7 @@ class IndexController extends AdminController
|
|||||||
|
|
||||||
$grid->column('id', '序号');
|
$grid->column('id', '序号');
|
||||||
$grid->column('title', '地区名称');
|
$grid->column('title', '地区名称');
|
||||||
|
$grid->column('mobile', '联系方式');
|
||||||
$grid->column('stock', '库存')
|
$grid->column('stock', '库存')
|
||||||
->modal('变动记录', AreaStockAble::class);
|
->modal('变动记录', AreaStockAble::class);
|
||||||
// $grid->column('user.username', '管理员')
|
// $grid->column('user.username', '管理员')
|
||||||
@@ -84,6 +85,7 @@ class IndexController extends AdminController
|
|||||||
$form = new Form(new Area());
|
$form = new Form(new Area());
|
||||||
|
|
||||||
$form->text('title', '地区名称')->required();
|
$form->text('title', '地区名称')->required();
|
||||||
|
$form->text('mobile', '联系方式')->required();
|
||||||
|
|
||||||
// $form->select('user_id', '管理员')
|
// $form->select('user_id', '管理员')
|
||||||
// ->options(function ($userId) {
|
// ->options(function ($userId) {
|
||||||
@@ -101,6 +103,7 @@ class IndexController extends AdminController
|
|||||||
if ($form->isCreating()) {
|
if ($form->isCreating()) {
|
||||||
$form->number('stock', '库存(份)')->default(100)->help('1份2箱');
|
$form->number('stock', '库存(份)')->default(100)->help('1份2箱');
|
||||||
}
|
}
|
||||||
|
|
||||||
$form->select('province_id', '省份')
|
$form->select('province_id', '省份')
|
||||||
->options(Region::where('parent_id', 1)->pluck('name', 'id'))
|
->options(Region::where('parent_id', 1)->pluck('name', 'id'))
|
||||||
->load('city_id', route('admin.mall.regions.region'))
|
->load('city_id', route('admin.mall.regions.region'))
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ use App\Api\Controllers\Controller;
|
|||||||
use App\Api\Resources\Area\AreaCodeResource;
|
use App\Api\Resources\Area\AreaCodeResource;
|
||||||
use App\Models\AreaCode;
|
use App\Models\AreaCode;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class AreaCodeController extends Controller
|
class AreaCodeController extends Controller
|
||||||
{
|
{
|
||||||
@@ -23,4 +24,10 @@ class AreaCodeController extends Controller
|
|||||||
return $this->success(new AreaCodeResource($code));
|
return $this->success(new AreaCodeResource($code));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function info(Request $request)
|
||||||
|
{
|
||||||
|
$code = AreaCode::query()->where('code', $request->code)->first();
|
||||||
|
return $this->success(new AreaCodeResource($code));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,12 @@ class AreaFullResource extends JsonResource
|
|||||||
return [
|
return [
|
||||||
'area_id' => $this->id,
|
'area_id' => $this->id,
|
||||||
'title' => $this->title,
|
'title' => $this->title,
|
||||||
|
'mobile' => $this->mobile,
|
||||||
'stock' => $this->stock,
|
'stock' => $this->stock,
|
||||||
'province' => $this->province->name,
|
'province' => $this->province->name,
|
||||||
'city' => $this->city->name,
|
'city' => $this->city->name,
|
||||||
'district' => $this->district->name,
|
'district' => $this->district->name,
|
||||||
|
'address' => $this->address,
|
||||||
'full_address' => $this->getFullAddress(),
|
'full_address' => $this->getFullAddress(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,5 +18,6 @@ Route::group([
|
|||||||
'middleware' => config('api.route.middleware_auth'),
|
'middleware' => config('api.route.middleware_auth'),
|
||||||
], function (Router $router) {
|
], function (Router $router) {
|
||||||
$router->get('areas/{code}/show', 'AreaCodeController@show');
|
$router->get('areas/{code}/show', 'AreaCodeController@show');
|
||||||
|
$router->get('areas/code/info', 'AreaCodeController@info');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Models;
|
|||||||
use App\Models\Traits\BelongsToArea;
|
use App\Models\Traits\BelongsToArea;
|
||||||
use App\Traits\HasStatus;
|
use App\Traits\HasStatus;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Modules\Mall\Models\Order;
|
||||||
use Modules\User\Models\User;
|
use Modules\User\Models\User;
|
||||||
use Modules\User\Traits\BelongsToUser;
|
use Modules\User\Traits\BelongsToUser;
|
||||||
|
|
||||||
@@ -45,5 +46,17 @@ class AreaCode extends Model
|
|||||||
$this->save();
|
$this->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 关联订单
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2023/1/12 15:02
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\HasOne
|
||||||
|
*/
|
||||||
|
public function order()
|
||||||
|
{
|
||||||
|
return $this->hasOne(Order::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ class Order
|
|||||||
$order = OrderModel::query()
|
$order = OrderModel::query()
|
||||||
->create([
|
->create([
|
||||||
'shop_id' => $split->shop_id,
|
'shop_id' => $split->shop_id,
|
||||||
'area_code_id' => $this->area_code_id,
|
'area_code_id' => $this->area_code_id ?? 0,
|
||||||
'user_id' => $this->user_id,
|
'user_id' => $this->user_id,
|
||||||
'amount' => $split->amount,
|
'amount' => $split->amount,
|
||||||
'type' => $this->type,
|
'type' => $this->type,
|
||||||
|
|||||||
@@ -3,10 +3,14 @@
|
|||||||
namespace Modules\Mall\Http\Controllers\Api;
|
namespace Modules\Mall\Http\Controllers\Api;
|
||||||
|
|
||||||
use App\Api\Controllers\Controller;
|
use App\Api\Controllers\Controller;
|
||||||
|
use App\Api\Resources\User\UserBaseResource;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Jason\Api\Api;
|
||||||
use Modules\Mall\Http\Resources\Api\Activity\ActivityBaseResource;
|
use Modules\Mall\Http\Resources\Api\Activity\ActivityBaseResource;
|
||||||
use Modules\Mall\Http\Resources\Api\Activity\ActivityResource;
|
use Modules\Mall\Http\Resources\Api\Activity\ActivityResource;
|
||||||
|
use Modules\Mall\Http\Resources\Api\Goods\GoodsBaseResource;
|
||||||
use Modules\Mall\Models\Activity;
|
use Modules\Mall\Models\Activity;
|
||||||
|
use Modules\Mall\Models\Goods;
|
||||||
|
|
||||||
class ActivityController extends Controller
|
class ActivityController extends Controller
|
||||||
{
|
{
|
||||||
@@ -27,7 +31,26 @@ class ActivityController extends Controller
|
|||||||
|
|
||||||
public function show(Activity $activity)
|
public function show(Activity $activity)
|
||||||
{
|
{
|
||||||
return $this->success(new ActivityResource($activity));
|
$show_goods_id = app('Conf_mall')['show_goods_id'] ?? 0;
|
||||||
|
$show_goods = '';
|
||||||
|
if ($show_goods_id > 0) {
|
||||||
|
$show_goods = Goods::find($show_goods_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$goods = Goods::query()
|
||||||
|
->where('id', '<>', $show_goods_id)
|
||||||
|
->shown()
|
||||||
|
->where('channel', Goods::CHANNEL_NORMAL)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
|
||||||
|
$user = Api::user();
|
||||||
|
|
||||||
|
return $this->success([
|
||||||
|
'user' => $user ? new UserBaseResource($user) : '',
|
||||||
|
'show_goods' => $show_goods ? new GoodsBaseResource($show_goods) : '',
|
||||||
|
'activity' => new ActivityResource($activity)
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,16 @@
|
|||||||
namespace Modules\Mall\Http\Controllers\Api;
|
namespace Modules\Mall\Http\Controllers\Api;
|
||||||
|
|
||||||
use App\Api\Controllers\Controller;
|
use App\Api\Controllers\Controller;
|
||||||
use App\Api\Resources\User\UserBaseResource;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Jason\Api\Api;
|
use Modules\Cms\Http\Resources\ArticleBaseResource;
|
||||||
use Modules\Cms\Models\Article;
|
use Modules\Cms\Models\Article;
|
||||||
|
use Modules\Cms\Models\Category;
|
||||||
|
use Modules\Mall\Http\Resources\Api\Banner\BannerResource;
|
||||||
use Modules\Mall\Http\Resources\Api\Goods\GoodsBaseResource;
|
use Modules\Mall\Http\Resources\Api\Goods\GoodsBaseResource;
|
||||||
|
use Modules\Mall\Http\Resources\Api\Video\VideoResource;
|
||||||
use Modules\Mall\Models\Banner;
|
use Modules\Mall\Models\Banner;
|
||||||
use Modules\Mall\Models\Goods;
|
use Modules\Mall\Models\Goods;
|
||||||
|
use Modules\Mall\Models\Video;
|
||||||
|
|
||||||
class IndexController extends Controller
|
class IndexController extends Controller
|
||||||
{
|
{
|
||||||
@@ -23,6 +26,10 @@ class IndexController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
$banners = Banner::query()->ofPosition(Banner::POSITION_INDEX)->get();
|
||||||
|
$centers = Banner::query()->ofPosition(Banner::POSITION_INDEX_CENTER)->get();
|
||||||
|
|
||||||
|
|
||||||
$show_goods_id = app('Conf_mall')['show_goods_id'] ?? 0;
|
$show_goods_id = app('Conf_mall')['show_goods_id'] ?? 0;
|
||||||
$show_goods = '';
|
$show_goods = '';
|
||||||
if ($show_goods_id > 0) {
|
if ($show_goods_id > 0) {
|
||||||
@@ -32,16 +39,56 @@ class IndexController extends Controller
|
|||||||
$goods = Goods::query()
|
$goods = Goods::query()
|
||||||
->where('id', '<>', $show_goods_id)
|
->where('id', '<>', $show_goods_id)
|
||||||
->shown()
|
->shown()
|
||||||
->where('channel', Goods::CHANNEL_NORMAL)
|
->where('channel', Goods::CHANNEL_SCORE)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
|
$videos = Video::query()
|
||||||
|
->shown()
|
||||||
|
->get();
|
||||||
|
|
||||||
$user = Api::user();
|
$memories = Article::query()
|
||||||
|
->whereHas('categories', function ($q) {
|
||||||
|
$q->where('slug', 'MEMORY');
|
||||||
|
})
|
||||||
|
->inRandomOrder()
|
||||||
|
->take(10)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$memoriesData = [];
|
||||||
|
$all = $memories->count() * 30;
|
||||||
|
foreach ($memories as $key => $memory) {
|
||||||
|
$id = ++$key;
|
||||||
|
$memoriesData[] = [
|
||||||
|
'id' => $memory->id,
|
||||||
|
'title' => $memory->title,
|
||||||
|
'description' => $memory->description,
|
||||||
|
'zIndex' => $id,
|
||||||
|
'left' => (int) bcsub($all, bcmul($key, 30)),
|
||||||
|
'image' => $memory->cover_url,
|
||||||
|
'animation' => null,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$healths = Article::query()
|
||||||
|
->whereHas('categories', function ($q) {
|
||||||
|
$q->where('slug', 'HEALTH');
|
||||||
|
})
|
||||||
|
->inRandomOrder()
|
||||||
|
->take(3)
|
||||||
|
->get();
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'user' => $user ? new UserBaseResource($user) : '',
|
|
||||||
'show_goods' => $show_goods ? new GoodsBaseResource($show_goods) : '',
|
'show_goods' => $show_goods ? new GoodsBaseResource($show_goods) : '',
|
||||||
|
'videos' => VideoResource::collection($videos),
|
||||||
'goods' => GoodsBaseResource::collection($goods),
|
'goods' => GoodsBaseResource::collection($goods),
|
||||||
|
'banners' => BannerResource::collection($banners),
|
||||||
|
'center' => BannerResource::collection($centers),
|
||||||
|
'memories' => $memoriesData,
|
||||||
|
'healths' => ArticleBaseResource::collection($healths),
|
||||||
|
'categories' => [
|
||||||
|
'memory' => Category::query()->where('slug', 'MEMORY')->value('id') ?? 0,
|
||||||
|
'health' => Category::query()->where('slug', 'HEALTH')->value('id') ?? 0,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
return $this->success($data);
|
return $this->success($data);
|
||||||
|
|||||||
@@ -52,20 +52,7 @@ class OrderBuyController extends Controller
|
|||||||
|
|
||||||
$detail = collect();
|
$detail = collect();
|
||||||
$user = Api::user();
|
$user = Api::user();
|
||||||
$areaCode = $user->info->areaCode;
|
|
||||||
if (! $areaCode) {
|
|
||||||
return $this->failed('您没有提货码不可参与此活动');
|
|
||||||
}
|
|
||||||
if ($areaCode->status != AreaCode::STATUS_INIT) {
|
|
||||||
return $this->failed('提货码已被使用,不可重复使用');
|
|
||||||
}
|
|
||||||
|
|
||||||
// $address_id = $request->address_id;
|
|
||||||
// if ($address_id) {
|
|
||||||
// $address = Address::find($address_id);
|
|
||||||
// } else {
|
|
||||||
// $address = Address::where('user_id', $user->id)->orderBy('is_default', 'desc')->first();
|
|
||||||
// }
|
|
||||||
|
|
||||||
$goods_sku = GoodsSku::find($goods_sku_id);
|
$goods_sku = GoodsSku::find($goods_sku_id);
|
||||||
|
|
||||||
@@ -77,9 +64,35 @@ class OrderBuyController extends Controller
|
|||||||
return $this->failed($goods_sku->getGoodsName().'商品不可购买');
|
return $this->failed($goods_sku->getGoodsName().'商品不可购买');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$areaCode = $user->info->areaCode;
|
||||||
|
if (! $areaCode) {
|
||||||
|
return $this->failed('您没有提货码不可参与此活动');
|
||||||
|
}
|
||||||
|
if ($areaCode->status != AreaCode::STATUS_INIT) {
|
||||||
|
return $this->failed('提货码已被使用,不可重复使用');
|
||||||
|
}
|
||||||
|
|
||||||
|
$address_id = $request->address_id;
|
||||||
|
if ($address_id) {
|
||||||
|
$address = Address::find($address_id);
|
||||||
|
} else {
|
||||||
|
$address = Address::where('user_id', $user->id)->orderBy('is_default', 'desc')->first();
|
||||||
|
}
|
||||||
|
|
||||||
$item = new Item($goods_sku, null, $qty);
|
$item = new Item($goods_sku, null, $qty);
|
||||||
$detail->push($item);
|
$detail->push($item);
|
||||||
|
|
||||||
|
|
||||||
|
$type = OrderModel::TYPE_NORMAL;
|
||||||
|
if ($goods_sku->goods->channel == Goods::CHANNEL_FREE) {
|
||||||
|
$type = OrderModel::TYPE_SAMPLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($goods_sku->goods->channel == Goods::CHANNEL_SCORE) {
|
||||||
|
$type = OrderModel::TYPE_SCORE;
|
||||||
|
}
|
||||||
|
|
||||||
$freight = $item->freight();
|
$freight = $item->freight();
|
||||||
$amount = $item->total();
|
$amount = $item->total();
|
||||||
$weight = $item->weight();
|
$weight = $item->weight();
|
||||||
@@ -91,7 +104,6 @@ class OrderBuyController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'areaCode' => new AreaCodeResource($areaCode),
|
|
||||||
'detail' => $items,
|
'detail' => $items,
|
||||||
'amount' => floatval(bcadd($amount, $freight, 2)),
|
'amount' => floatval(bcadd($amount, $freight, 2)),
|
||||||
'freight' => $freight,
|
'freight' => $freight,
|
||||||
@@ -99,6 +111,14 @@ class OrderBuyController extends Controller
|
|||||||
'user' => $user ? new UserBaseResource($user) : '',
|
'user' => $user ? new UserBaseResource($user) : '',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if ($type == OrderModel::TYPE_SAMPLE) {
|
||||||
|
$data['areaCode'] = new AreaCodeResource($areaCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($address) {
|
||||||
|
$data['address'] = new AddressResource($address);
|
||||||
|
}
|
||||||
|
|
||||||
return $this->success($data);
|
return $this->success($data);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -129,7 +149,7 @@ class OrderBuyController extends Controller
|
|||||||
|
|
||||||
$user = Api::user();
|
$user = Api::user();
|
||||||
$remark = $request->remark ?? '';
|
$remark = $request->remark ?? '';
|
||||||
// $address_id = $request->address_id ?? '';
|
$address_id = $request->address_id ?? '';
|
||||||
$goods_sku_id = $request->goods_sku_id;
|
$goods_sku_id = $request->goods_sku_id;
|
||||||
$qty = $request->qty;
|
$qty = $request->qty;
|
||||||
$share_user_id = $request->share_user_id ?? 0;
|
$share_user_id = $request->share_user_id ?? 0;
|
||||||
@@ -142,10 +162,6 @@ class OrderBuyController extends Controller
|
|||||||
return $this->failed('提货码已被使用,不可重复使用');
|
return $this->failed('提货码已被使用,不可重复使用');
|
||||||
}
|
}
|
||||||
|
|
||||||
// $address = Address::where('user_id', $user->id)->where('id', $address_id)->first();
|
|
||||||
// if (! $address) {
|
|
||||||
// return $this->failed('未找到收货地址');
|
|
||||||
// }
|
|
||||||
|
|
||||||
$detail = collect();
|
$detail = collect();
|
||||||
|
|
||||||
@@ -171,7 +187,13 @@ class OrderBuyController extends Controller
|
|||||||
$type = OrderModel::TYPE_SCORE;
|
$type = OrderModel::TYPE_SCORE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$address = Address::where('user_id', $user->id)->where('id', $address_id)->first();
|
||||||
|
|
||||||
|
if (in_array($type, [OrderModel::TYPE_SCORE, OrderModel::TYPE_NORMAL]) && ! $address) {
|
||||||
|
return $this->failed('未找到收货地址');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($type == OrderModel::TYPE_SAMPLE) {
|
||||||
$orders = (new Order)->user($user)
|
$orders = (new Order)->user($user)
|
||||||
->remark($remark)
|
->remark($remark)
|
||||||
->items($detail)
|
->items($detail)
|
||||||
@@ -179,6 +201,15 @@ class OrderBuyController extends Controller
|
|||||||
->type($type)
|
->type($type)
|
||||||
->source(['share_user_id' => $share_user_id,])
|
->source(['share_user_id' => $share_user_id,])
|
||||||
->create();
|
->create();
|
||||||
|
} else {
|
||||||
|
$orders = (new Order)->user($user)
|
||||||
|
->remark($remark)
|
||||||
|
->items($detail)
|
||||||
|
->address($address)
|
||||||
|
->type($type)
|
||||||
|
->source(['share_user_id' => $share_user_id,])
|
||||||
|
->create();
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($orders as $order) {
|
foreach ($orders as $order) {
|
||||||
if ($type == OrderModel::TYPE_SAMPLE) {
|
if ($type == OrderModel::TYPE_SAMPLE) {
|
||||||
|
|||||||
Reference in New Issue
Block a user