Commit 42755d97 by lizhilin

更新

parent 97542556
......@@ -16,7 +16,6 @@
class MerchantStore extends RowAction
{
protected $type = 0;
protected $title = '';
......@@ -26,9 +25,8 @@ class MerchantStore extends RowAction
* 接收参数
* @type 1:增加库存 2:减少库存
*/
public function __construct($type = 0, $title = '', $goods_id = 0)
public function __construct($title = '', $goods_id = 0)
{
$this->type = $type;
$this->goods_id = $goods_id;
parent::__construct($title);
$this->title = $title;
......@@ -44,7 +42,7 @@ public function __construct($type = 0, $title = '', $goods_id = 0)
*/
public function title()
{
return '<i class="feather icon-stop-circle"></i> ' . $this->title . $this->type . '';
return '<i class="feather icon-stop-circle"></i> ' . $this->title . '';
}
/**
* Handle the action request.
......@@ -56,7 +54,6 @@ public function title()
public function handle(Request $request)
{
$id = $this->getKey() ?? 0;
$type = $request->get('type');
return $this->response()->success('成功')->refresh();
}
......@@ -72,22 +69,13 @@ public function render()
$goodObj = Good::where("id", $this->goods_id)->first();
//获取商品规格信息
if ($this->type == 1) {
$gid = $this->goods_id;
$dataList = GoodSku::where("goods_id", $gid)->get();
foreach ($dataList as $kk => $vv) {
$dataList[$kk]['attr_id'] = $vv->id;
//获取商户库存信息
$merStock = MerchantGoodSku::where(['goods_id' => $gid, 'attr_id' => $vv->id])->sum('stock');
$dataList[$kk]['stock'] = $vv->stock - $merStock;
}
} else {
$dataList = MerchantGoodSku::where("mgs_id", $mgs_id)->get();
foreach ($dataList as $kk => $vv) {
$skuObj = GoodSku::find($vv['attr_id']);
$dataList[$kk]['attr_id'] = $vv['attr_id'];
$dataList[$kk]['attr_val'] = $skuObj->attr_val;
}
$gid = $this->goods_id;
$dataList = GoodSku::where("goods_id", $gid)->get();
foreach ($dataList as $kk => $vv) {
$dataList[$kk]['attr_id'] = $vv->id;
//获取商户库存信息
$merStock = MerchantGoodSku::where(['goods_id' => $gid, 'attr_id' => $vv->id])->sum('stock');
$dataList[$kk]['stock'] = $vv->stock - $merStock;
}
$dataArr = $dataList ? $dataList->toArray() : [];
......@@ -95,12 +83,8 @@ public function render()
$html = '';
foreach ($dataArr as $kk => $vv) {
$html .= '<tr>';
if ($this->type == 2) {
$html .= '<input type="hidden" name="sskuid[]" value="' . $vv['id'] . '">';
}
$html .= '<input type="hidden" name="goods_id" value="' . $this->goods_id . '">';
$html .= '<input type="hidden" name="mgs_id" value="' . $mgs_id . '">';
$html .= '<input type="hidden" name="typeid" value="' . $this->type . '">';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $goodObj->goods_name . '<input type="hidden" name="attr_id[]" value="' . $vv['attr_id'] . '"></td>';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $vv['attr_val'] . '</td>';
$html .= '<td ><input type="text" name="stock[]" value="" class="form-control field_remark _normal_" placeholder=""></td>';
......@@ -141,12 +125,11 @@ public function render()
// </div>
// </form>
// ');
->body(MerchantStoreForms::make(['id' => $this->type]))
->body(MerchantStoreForms::make(['id' => $mgs_id]))
->onShown(
<<<js
$(document).ready(function () {
console.log('{$html}');
$("#storeTitle").html('{$this->title}');
$("#tabletr").html('"+ $html +"');
});
js
......
<?php
namespace App\Admin\Actions;
use Dcat\Admin\Actions\Response;
use App\Admin\Forms\MerchantSubStoreForms;
use App\Models\Good;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
//use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Dcat\Admin\Widgets\Modal;
use App\Models\GoodSku;
use App\Models\MerchantGoodSku;
class MerchantSubStore extends RowAction
{
protected $title = '';
protected $goods_id = 0;
/**
* 接收参数
* @type 1:增加库存 2:减少库存
*/
public function __construct($title = '', $goods_id = 0)
{
$this->goods_id = $goods_id;
parent::__construct($title);
$this->title = $title;
}
/**
* @return string
*/
//protected $title = '<i class="feather icon-stop-circle"> 增加库存 </i>';
/**
* 按钮文本
*
* @return string|void
*/
public function title()
{
return '<i class="feather icon-stop-circle"></i> ' . $this->title . '';
}
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
$id = $this->getKey() ?? 0;
return $this->response()->success('成功')->refresh();
}
/**
* 渲染模态框.
* @return Modal
*/
public function render()
{
$mgs_id = $this->getKey() ?? 0;
$goodObj = Good::where("id", $this->goods_id)->first();
//获取商品规格信息
$dataList = MerchantGoodSku::where("mgs_id", $mgs_id)->get();
foreach ($dataList as $kk => $vv) {
$skuObj = GoodSku::find($vv['attr_id']);
$dataList[$kk]['attr_id'] = $vv['attr_id'];
$dataList[$kk]['attr_val'] = $skuObj->attr_val;
}
$dataArr = $dataList ? $dataList->toArray() : [];
$html = '';
foreach ($dataArr as $kk => $vv) {
$html .= '<tr>';
$html .= '<input type="hidden" name="sskuid[]" value="' . $vv['id'] . '">';
$html .= '<input type="hidden" name="goods_id" value="' . $this->goods_id . '">';
$html .= '<input type="hidden" name="mgs_id" value="' . $mgs_id . '">';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $goodObj->goods_name . '<input type="hidden" name="attr_id[]" value="' . $vv['attr_id'] . '"></td>';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $vv['attr_val'] . '</td>';
$html .= '<td ><input type="text" name="stock[]" value="" class="form-control field_remark _normal_" placeholder=""></td>';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $vv['stock'] . '</td>';
$html .= '</tr>';
}
// 这里直接创建一个modal框 model的内容由工具表单提供,这里也需要创建一个工具表单才行
//
return Modal::make()
->lg()
->title($this->title)
->button($this->title)
->body(MerchantSubStoreForms::make(['id' => $mgs_id]))
->onShown(
<<<js
$(document).ready(function () {
console.log('{$html}');
$("#tabletr2").html('"+ $html +"');
});
js
);
//->button("<button class='btn btn-sm btn-primary'>$this->title</button>"); // 这个button就是对应上面的按钮
}
/**
* @return string|array|void
*/
public function confirm()
{
// return ['Confirm?', 'contents'];
}
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
/**
* @return array
*/
protected function parameters()
{
return [];
}
}
......@@ -184,8 +184,9 @@ protected function form()
'field16' => '',
];
$form->keyValue('tags', '标签')->default($fieldArr)
->setKeyLabel('键 (field开头拼上数字)')
->setValueLabel('值');
->setKeyLabel('键 (field开头拼上数字,商品列表页filed1-9,商品详情页field10-19)')
->setValueLabel('值')
;
//->disableCreateButton();
//->disableDelete();
})->tab('详情', function (Form $form) {
......
......@@ -13,7 +13,8 @@
use App\Models\Store;
use Illuminate\Support\Facades\DB;
use Dcat\Admin\Http\Controllers\AdminController;
use App\Admin\Actions\MerchantStore as MerchantStoreActions;
use App\Admin\Actions\MerchantStore as MerchantAddStore;
use App\Admin\Actions\MerchantSubStore;
use Dcat\Admin\Admin;
use Dcat\Admin\Layout\Content;
use Illuminate\Http\Request;
......@@ -63,11 +64,11 @@ protected function grid()
$grid->actions(function (Grid\Displayers\Actions $actions) {
//当前status
$status = $actions->row->status;
if ($status == 0) {
$actions->append(new MerchantStoreActions(1, '增加库存', $actions->row->goods_id));
$actions->append(new MerchantStoreActions(2, '减少库存', $actions->row->goods_id));
}
//$status = $actions->row->status;
//if ($status == 0) {
$actions->append(new MerchantAddStore('增加库存', $actions->row->goods_id));
$actions->append(new MerchantSubStore('减少库存', $actions->row->goods_id));
//}
});
});
}
......
......@@ -69,18 +69,19 @@ protected function form()
{
$form = Form::make(new StoreAdminUsers(), function (Form $form) {
$form->display('id');
//$form->ignore(['merchant_id', 'store_id']); // 忽略password字段
//$form->ignore(['pwd']); // 忽略password字段
$form->text('name')->required();
$form->text('username');
if ($form->isCreating()) {
$form->password('password', '密码')->saving(function ($password) {
return bcrypt($password);
})->help('字母数字组合,长度大于5个字符');
} else {
// $form->password('password', '密码')->customFormat(function ($v) {
// return $v;
// })
// ->help('密码为空则不修改');
// } else {
// $form->text('password', '密码')->help('密码为空则不修改');
// $form->password = '';
}
if ($form->isEditing()) {
$form->text('pwd', '密码')->help('密码为空则不修改');
}
$form->hidden('role_id')->default(2);
......@@ -88,18 +89,18 @@ protected function form()
$form->select('merchant_id', '商家名称')
->options(Merchant::whereNull('deleted_at')->get()->pluck('name', 'id'))
//->rules('required')
->load('store_id', '/get-store-list')
->saving(function (Form $form, $data) {
// 当编辑记录时,设置选中的父分类和子分类
if ($form->isEditing()) {
$form->html('<script>
$(document).ready(function() {
$("#merchant_id").val(' . $data->merchant_id . '); // 设置父分类的选中值
$("#store_id").trigger("change"); // 触发事件加载子级选项
});
</script>');
}
});
->load('store_id', '/get-store-list');
// ->saving(function (Form $form, $data) {
// // 当编辑记录时,设置选中的父分类和子分类
// if ($form->isEditing()) {
// $form->html('<script>
// $(document).ready(function() {
// $("#merchant_id").val(' . $data->merchant_id . '); // 设置父分类的选中值
// $("#store_id").trigger("change"); // 触发事件加载子级选项
// });
// </script>');
// }
// });
$form->select('store_id', '门店名称');
$form->disableCreatingCheck();
......@@ -109,47 +110,18 @@ protected function form()
$form->disableViewButton();
});
// 判断是否处于创建模式
if ($form->isCreating()) {
}
// 判断是否处于编辑模式
if ($form->isEditing()) {
// 如果是编辑模式,执行相关操作
$form->select('merchant_id', '显示名称')
->options([
1 => '选项1',
2 => '选项2',
3 => '选项3',
])
->value(function () {
// 获取模型对
return 1;
});
}
//副表保存规格
// $form->saved(
// function (Form $form, $result) {
// $store_admin_users_id = $form->getKey();
// $merchant_id = $form->model()->merchant_id;
// $store_id = $form->model()->store_id;
// //更新信息
// $verifier = DB::table('verifier')->where("store_admin_users_id", $store_admin_users_id)->first();
// $time = time();
// if (!$verifier) {
// $v_id = DB::table('verifier')->insertGetId(
// ['store_admin_users_id' => $store_admin_users_id, 'merchant_id' => $merchant_id, 'store_id' => $store_id, 'created_at' => date('Y-m-d H:i:s', $time), 'updated_at' => date('Y-m-d H:i:s', $time)]
// );
// } else {
// $verifier->merchant_id = $merchant_id;
// $verifier->store_id = $store_id;
// $verifier->save();
// }
// }
// );
$form->saved(
function (Form $form, $result) {
$store_admin_users_id = $form->getKey();
$pwd = $form->model()->pwd;
//更新信息
if ($pwd) {
$data = ['password' => bcrypt($pwd), 'pwd' => ''];
DB::table('store_admin_users')->where("id", $store_admin_users_id)->update($data);
}
}
);
return $form;
}
......
......@@ -28,12 +28,11 @@ class MerchantStoreForms extends Form implements LazyRenderable
*/
public function handle(array $input)
{
$typeid = (int)$_POST['typeid']; //1:增加 2:编辑
$goods_id = (int)$_POST['goods_id'];
$mgs_id = (int)$_POST['mgs_id'];
$attr_ids = $_POST['attr_id'];
$stocks = $_POST['stock'];
$sskuids = isset($_POST['sskuid']) ? $_POST['sskuid'] : [];
if (!$goods_id || !$mgs_id || !$attr_ids || !$stocks) {
return $this->response()->error('参数错误')->refresh();
}
......@@ -41,57 +40,37 @@ public function handle(array $input)
$msgObj = MerchantGoodsStore::find($mgs_id);
$merchant_id = $msgObj->merchant_id;
$logData = [];
if ($typeid == 1) {
foreach ($attr_ids as $kk => $vv) {
$gskuObj = GoodSku::find($vv);
$stockNum = ($gskuObj->stock >= $stocks[$kk] && $stocks[$kk]) ? (int)$stocks[$kk] : 0;
//$tmp['stock'] = $stockNum;
//查下库存记录是否存在
$skuObj = MerchantGoodSku::where(['mgs_id' => $mgs_id, 'goods_id' => $goods_id, 'attr_id' => $vv])->first();
if ($skuObj) {
$skuObj->stock += $stockNum;
$skuObj->save();
} else {
$skuObj = new MerchantGoodSku();
$skuObj->mgs_id = $mgs_id;
$skuObj->merchant_id = $merchant_id;
$skuObj->goods_id = $goods_id;
$skuObj->attr_id = $vv;
$skuObj->stock = $stockNum;
$skuObj->save();
}
//记录操作日志
$logData[$kk]['mgs_id'] = $mgs_id;
$logData[$kk]['goods_id'] = $goods_id;
$logData[$kk]['attr_id'] = $gskuObj->id;
$logData[$kk]['change'] = $stockNum;
$logData[$kk]['created_at'] = date('Y-m-d H:i:s');
$this->addStoreLog($logData);
}
} else {
if (!$sskuids) {
return $this->response()->error('参数错误')->refresh();
}
foreach ($sskuids as $kk => $vv) {
//商家规格数据
$skuObj = MerchantGoodSku::find($vv);
$store_num = (int)$stocks[$kk]; //减少库存数
$diffnum = $skuObj->stock - $store_num; //减少差值
if ($store_num && $diffnum >= 0) {
$skuObj->stock = $diffnum;
$skuObj->save();
//记录操作日志
$logData[$kk]['mgs_id'] = $mgs_id;
$logData[$kk]['attr_id'] = $skuObj->attr_id;
$logData[$kk]['goods_id'] = $goods_id;
$logData[$kk]['change'] = -$store_num;
$logData[$kk]['created_at'] = date('Y-m-d H:i:s');
$this->addStoreLog($logData);
}
foreach ($attr_ids as $kk => $vv) {
$gskuObj = GoodSku::find($vv); //商品信息
//获取商户库存信息
$merStock = MerchantGoodSku::where(['goods_id' => $goods_id, 'attr_id' => $vv])->sum('stock');
$surplusStock = $gskuObj->stock - $merStock; //可供库存数量
$stockNum = ($surplusStock >= $stocks[$kk] && $stocks[$kk]) ? (int)$stocks[$kk] : 0;
//查下库存记录是否存在
$skuObj = MerchantGoodSku::where(['mgs_id' => $mgs_id, 'goods_id' => $goods_id, 'attr_id' => $vv])->first();
if ($skuObj) {
$skuObj->stock += $stockNum;
$skuObj->save();
} else {
$skuObj = new MerchantGoodSku();
$skuObj->mgs_id = $mgs_id;
$skuObj->merchant_id = $merchant_id;
$skuObj->goods_id = $goods_id;
$skuObj->attr_id = $vv;
$skuObj->stock = $stockNum;
$skuObj->save();
}
}
//记录操作日志
$logData[$kk]['mgs_id'] = $mgs_id;
$logData[$kk]['goods_id'] = $goods_id;
$logData[$kk]['attr_id'] = $gskuObj->id;
$logData[$kk]['change'] = $stockNum;
$logData[$kk]['created_at'] = date('Y-m-d H:i:s');
}
$this->addStoreLog($logData);
return $this
->response()
......@@ -123,7 +102,7 @@ public function form()
<tr>
<th width="23%" style="text-align:center;">商品名称</th>
<th width="23%" style="text-align:center;">商品规格</th>
<th width="23%" style="text-align:center;" id="storeTitle"></th>
<th width="23%" style="text-align:center;">增加库存</th>
<th width="23%" style="text-align:center;">剩余库存</th>
</tr>
</thead>
......@@ -143,13 +122,6 @@ public function form()
}
public function render2()
{
// // 构建表单
return view('admin.mstore');
//return parent::render();
}
/**
* The data of the form.
*
......
<?php
namespace App\Admin\Forms;
use App\Models\GoodSku;
use App\Models\MerchantGoodsStore;
use App\Models\MerchantGoodSku;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Form\NestedForm;
use Dcat\Admin\Widgets\Table;
use Dcat\Admin\Widgets\Tool;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Illuminate\Support\Facades\DB;
//
class MerchantSubStoreForms extends Form implements LazyRenderable
{
use LazyWidget;
protected $modalId = 'show-current-user';
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$goods_id = (int)$_POST['goods_id'];
$mgs_id = (int)$_POST['mgs_id'];
$attr_ids = $_POST['attr_id'];
$stocks = $_POST['stock'];
$sskuids = isset($_POST['sskuid']) ? $_POST['sskuid'] : [];
if (!$goods_id || !$mgs_id || !$attr_ids || !$stocks) {
return $this->response()->error('参数错误')->refresh();
}
if (!$sskuids) {
return $this->response()->error('参数错误')->refresh();
}
$logData = [];
foreach ($sskuids as $kk => $vv) {
//商家规格数据
$skuObj = MerchantGoodSku::find($vv);
$store_num = (int)$stocks[$kk]; //减少库存数
$diffnum = $skuObj->stock - $store_num; //减少差值
if ($store_num && $diffnum >= 0) {
$skuObj->stock = $diffnum;
$skuObj->save();
//记录操作日志
$logData[$kk]['mgs_id'] = $mgs_id;
$logData[$kk]['attr_id'] = $skuObj->attr_id;
$logData[$kk]['goods_id'] = $goods_id;
$logData[$kk]['change'] = -$store_num;
$logData[$kk]['created_at'] = date('Y-m-d H:i:s');
}
}
$this->addStoreLog($logData);
return $this
->response()
->success('Processed successfully.')
->refresh();
}
private function addStoreLog($data = [])
{
if (!$data) {
return true;
}
DB::table('merchant_store_sku_log')->insert($data);
}
/**
* Build a form here.
*/
public function form()
{
//$this->text('name')->required();
// 异步加载的字段
$this->html('<div class="row">
<div class="col-md-12">
<table class="table">
<thead>
<tr>
<th width="23%" style="text-align:center;">商品名称</th>
<th width="23%" style="text-align:center;">商品规格</th>
<th width="23%" style="text-align:center;">减少库存</th>
<th width="23%" style="text-align:center;">剩余库存</th>
</tr>
</thead>
<tbody id="tabletr2">
</tbody>
</table>
</div>
</div>');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [
'name' => '6785678567',
'email' => 'John.Doe@gmail.com',
];
}
}
......@@ -76,5 +76,5 @@
$router->get('city', 'CityController@getList'); //城市选择-联动
$router->get('get-store-list', 'MerchantStoreController@getList'); //门店选择-联动
$router->get('get-store-list', 'MerchantGoodsStoreController@getList'); //门店选择-联动
});
......@@ -193,7 +193,6 @@ public function getDetail(Request $request)
}
$skufield = $goods->sku ? json_decode($goods->sku, true) : [];
$attrsKey = isset($skufield['attrs']) ? array_keys($skufield['attrs']) : [];
$attrsVal = isset($skufield['attrs']) ? array_values($skufield['attrs']) : [];
$skuOneData = isset($skufield['sku'][0]) ? $skufield['sku'][0] : [];
$attr_txt = '';
......@@ -213,6 +212,8 @@ public function getDetail(Request $request)
$market_price = isset($skuOneData['market_price']) ? sprintf("%.2f", $skuOneData['market_price']) : '';
$dg_price = isset($skuOneData['cg_price']) ? sprintf("%.2f", $skuOneData['cg_price']) : '';
$stock = isset($skuOneData['stock']) ? $skuOneData['stock'] : 0;
//标签
$tags = $goods->tags ? json_decode($goods->tags, true) : [];
$data = [
'id' => $goods->id,
......@@ -226,7 +227,8 @@ public function getDetail(Request $request)
'attr' => $attr,
'attr_txt' => trim($attr_txt, ", "),
'is_collect' => 0,
//'goods_desc' => $goods->goods_desc ?? ''
'tags' => $tags,
'goods_desc' => $goods->goods_desc ?? ''
];
return $this->JsonResponse($data);
}
......
......@@ -183,23 +183,30 @@ public function CreateOrder(Request $request)
}
//商品信息
$goods_id = $cartRow['goods_id'];
$attr_id = $cartRow['attr_id'];
$goodsObj = GoodModel::find($goods_id);
$skuObj = GoodSku::find($attr_id);
if (!$goodsObj || !$skuObj) {
unset($shoppingCart[$key]);
continue;
}
$goods_price = $merchant_id ? $skuObj->cg_price : $skuObj->market_price;
$goods_img = isset($goodsObj->cover_img) ? $goodsObj->cover_img : '';
$goods_name .= $goodsObj->goods_name . "、";
$tmp = [];
$tmp['goods_id'] = $goods_id;
$tmp['goods_number'] = $cartRow['num'];
$tmp['goods_price'] = $cartRow['goods_price'];
$tmp['goods_price'] = $goods_price;
$tmp['goods_attr'] = $cartRow['attr_txt'];
$tmp['attr_id'] = $cartRow['attr_id'];
$tmp['attr_id'] = $attr_id;
$tmp['goods_name'] = $goodsObj->goods_name;
$tmp['goods_img'] = $goods_img;
$tmp['merchant_id'] = $merchant_id;
$tmp['created_at'] = date("Y-m-d H:i:s");
array_push($orderGoods, $tmp);
//总价
$total_price += ((float)$cartRow['goods_price'] * (int)$cartRow['num']);
$total_price += ((float)$goods_price * (int)$cartRow['num']);
//删除购物车商品
unset($shoppingCart[$key]);
}
......@@ -250,11 +257,49 @@ private function getOrderSn()
//'20231229875256';
$order_sn = date('Ymd') . mt_rand(1000, 9999) . substr(implode("", array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
$rowObj = OrderInfoModel::where('order_sn', $order_sn)->first();
$flag = $rowObj ? 1 : 0;
} while ($flag > 0);
$flag = $rowObj ? 0 : 1;
} while ($flag < 1);
return $order_sn;
}
//订单支付
public function pay(Request $request)
{
$order_id = $request->order_id ?? 0;
$openid = $request->user()->openid;
DB::beginTransaction();
try {
$res = '';
$order = OrderInfoModel::find($order_id);
if ($order->pay_cs > 0) {
$order_record = $order->order_record ?? $order->order_sn;
$order->order_sn = $this->getOrderSn();
$order->order_record = $order_record . "|" . $order->order_sn;
$order->save();
}
$orderGoodsObj = OrderGoods::where("order_id", $order_id)->first();
$order_title = $orderGoodsObj ? $orderGoodsObj->goods_name : '';
$res = Pay::pay($order_title, $order->order_sn, $order->order_amount, $openid);
$order->pay_cs += 1;
$order->save();
DB::commit();
return $this->JsonResponse($res);
} catch (\Exception $exception) {
Log::add('拉起微信支付失败', $exception->getMessage());
return $this->JsonResponse('', '拉起微信支付失败', 201);
}
}
//付款回调
public function payNotify(Request $request)
{
$fields = $request->query->all();
return $this->JsonResponse(Pay::payNotify($fields));
}
// 已完成:用户点击确认收货或发货后3天,自动变更为已完成状态
// 售后:已完成状态下48小时内展示申请售后按钮,可申请售后,如超过48小时,则不展示申请售后按钮
......@@ -358,22 +403,38 @@ public function delOrder(Request $request)
return $this->JsonResponse('');
}
//确认收货(订单完成--可申请售后)
public function completeOrder(Request $request)
//确认收货(订单完成)
// public function completeOrder(Request $request)
// {
// $order_id = $request->order_id ?? null;
// if (!$order_id) {
// return $this->JsonResponse('', '参数错误', 201);
// }
// $model = OrderInfoModel::find($order_id);
// if ($model->user_id != $request->user()->id) {
// return $this->JsonResponse('', '非本人订单', 201);
// }
// $model->shipping_status = 2;
// $model->order_status = 2;
// $model->received_at = date("Y-m-d H:i:s");
// $model->save();
// return $this->JsonResponse('');
// }
//扫码核销
public function scanCodeVerifi(Request $request)
{
$order_id = $request->order_id ?? null;
if (!$order_id) {
$code = $request->code ?? '';
$orderObj = OrderInfoModel::where('verification_code', $code)->first();
if (!$orderObj) {
return $this->JsonResponse('', '参数错误', 201);
}
$model = OrderInfoModel::find($order_id);
if ($model->user_id != $request->user()->id) {
return $this->JsonResponse('', '非本人订单', 201);
if (!$orderObj->verification_at) {
$orderObj->order_status = 3;
$orderObj->verification_at = date("Y-m-d H:i:s");
$orderObj->save();
}
$model->shipping_status = 2;
$model->order_status = 2;
$model->received_at = date("Y-m-d H:i:s");
$model->save();
return $this->JsonResponse('');
}
......
......@@ -30,7 +30,7 @@ public function getList(Request $request)
if ($listData->toArray()) {
foreach ($listData as $kk => $vv) {
$data['list'][] = [
'title' => $vv->title,
'title' => isset(OrderDivideRecord::COMMISSION_TYPE[$vv->sh_type]) ? OrderDivideRecord::COMMISSION_TYPE[$vv->sh_type] : '',
'created_at' => date("Y-m-d H:i:s", strtotime($vv->created_at)),
'divide_price' => $vv->divide_price
];
......
......@@ -45,10 +45,10 @@ public function addShoppingCart(Request $request)
$attr_sn = md5($attrStr);
$goodsAttrObj = GoodSku::where("goods_id", $goods_id)->where("attr_sn", $attr_sn)->first();
Log::add('添加购物车商品规格', $goodsAttrObj->toArray());
if (!$goodsAttrObj) {
return $this->JsonResponse('', '该规格参数有误,选择其它规格', 500);
}
Log::add('添加购物车商品规格', $goodsAttrObj->toArray());
$attr_id = $goodsAttrObj->id;
$attr_txt = $goodsAttrObj->attr_val;
$goods_price = $merchant_id ? $goodsAttrObj->cg_price : $goodsAttrObj->market_price;
......
......@@ -4,8 +4,6 @@
use App\Command\Log;
use App\Models\OrderDivideRecord;
use App\Models\Service;
use App\Models\StoreInfo;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
......@@ -48,35 +46,11 @@ public function handle()
try {
$this->order->order_status = 4; //已完成
$this->order->save();
//佣金分配
OrderDivideRecord::divide($this->order->id);
// switch ($this->order->business_id) {
// case 0:
// $this->order->store_order->status = 2;
// $this->order->store_order->over_time = date('Y-m-d H:i:s');
// $this->order->store_order->save();
// $store = StoreInfo::where(['store_id' => $this->order->store_order->store_id])->first();
// $store->total_revenue += $this->order->pay_money;
// $store->balance += $this->order->pay_money;
// $store->save();
// dispatch(new AutoCommentOrder($this->order, (3 * 24 * 3600)));
// break;
// case 1:
// case 2:
// case 3:
// case 4:
// case 5:
// $fcbl = Service::find($this->order->service_id)->fenmo ?? 0;
// //订单佣金分配
// Employee::divide($this->order->id, $this->order->em_id, $this->order->pay_money, $fcbl);
// dispatch(new AutoCommentOrder($this->order, (3 * 24 * 3600)));
// break;
// default:
// break;
// }
DB::commit();
//dispatch(new AutoCommentOrder($this->order, (3 * 24 * 3600)));
Log::add('订单自动完成', $this->order->toArray());
} catch (\Exception $exception) {
DB::rollBack();
......
......@@ -13,6 +13,12 @@ class OrderDivideRecord extends Model
use SoftDeletes;
protected $table = 'order_divide_record';
public const COMMISSION_TYPE = [
1 => '直推佣金',
2 => '间推佣金',
3 => '用户取货佣金',
];
//收益分配
public static function divide($order_id)
......
<?php
namespace App\Models;
use App\Command\Log;
use EasyWeChat\Factory;
use Illuminate\Support\Facades\DB;
class Pay
{
private static function getConfig()
{
return $config = [
// 必要配置
'app_id' => env('WX_XCX_APPID'),
'mch_id' => env('WX_XCX_MCH_ID'),
'key' => env('WX_XCX_MCH_KEY'), // API v2 密钥 (注意: 是v2密钥 是v2密钥 是v2密钥)
// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
'cert_path' => public_path() . '/cert/apiclient_cert.pem', // XXX: 绝对路径!!!!
'key_path' => public_path() . '/cert/apiclient_key.pem', // XXX: 绝对路径!!!!
'notify_url' => '/', // 你也可以在下单时单独设置来想覆盖它
];
}
public static function pay($body, $order_sn, $order_price, $openid)
{
$orderPrice = intval(strval($order_price * 100));
$app = Factory::payment(self::getConfig());
$jssdk = $app->jssdk;
$result = $app->order->unify([
'body' => $body,
'out_trade_no' => $order_sn,
// 'total_fee' => $order_price*100,
'total_fee' => $orderPrice,
// 'spbill_create_ip' => '123.12.12.123', // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
//'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
'openid' => $openid,
'notify_url' => env('API_URL') . '/pay-notify',
]);
Log::add('订单支付_', $result);
if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {
$prepayId = $result['prepay_id'];
$config = $jssdk->sdkConfig($prepayId);
return $config;
}
if ($result['return_code'] == 'FAIL' && array_key_exists('return_msg', $result)) {
throw new \Exception($result['return_msg']);
}
throw new \Exception($result['err_code_des']);
}
public static function payNotify($fields = [])
{
$app = Factory::payment(self::getConfig());
$response = $app->handlePaidNotify(function ($message, $fail) {
$orderObj = OrderInfo::where(['order_sn' => $message['out_trade_no']])->first();
if (!$orderObj) {
$fail('订单不存在');
}
Log::add('--支付回调--', $message);
//支付完成后的业务逻辑[result_code] => SUCCESS
if ($orderObj->pay_status == 1) {
return true;
}
if ($message['result_code'] == "SUCCESS") {
DB::beginTransaction();
try {
//更新订单
$orderObj->order_status = 1;
$orderObj->pay_status = 1;
$orderObj->save();
//更新商品销量、库存
$goodsList = OrderGoods::where("order_id", $orderObj->id)->get();
foreach ($goodsList as $item) {
$gid = $item->goods_id;
$attr_id = $item->attr_id;
$mer_id = $item->merchant_id;
$goods_number = $item->goods_number;
//更新商品规格库存
$attrObj = GoodSku::find($attr_id);
$attr_stock = ($attrObj->stock - $goods_number) > 0 ? $attrObj->stock - $goods_number : 0;
$attrObj->stock = $attr_stock;
$attrObj->save();
//商户规格库存
$mgsObj = MerchantGoodSku::where(['goods_id' => $gid, 'attr_id' => $attr_id, 'merchant_id' => $mer_id])->first();
if ($mer_id && $mgsObj) {
$changeStock = ($mgsObj->stock >= $attr_stock) ? $mgsObj->stock - $attr_stock : 0;
$mgsObj->stock = $changeStock;
$mgsObj->save();
}
}
//支付记录
$pay_cord = new PaymentRecord();
$cordLog = $pay_cord->where(['order_sn' => $message['out_trade_no']])->first();
if (!$cordLog) {
$total_fee = $message['total_fee'];
$pay_money = round($total_fee / 100, 2);
$pay_cord->order_sn = $message['out_trade_no'];
$pay_cord->other_order = $message['transaction_id'];
$pay_cord->money = $pay_money;
$pay_cord->uid = $orderObj->user_id;
$pay_cord->save();
}
DB::commit();
//return true;
} catch (\Exception $e) {
Log::add('付款回调失败', $e);
return false;
}
}
return true;
});
//Log::add('响应结果', $response);
//Log::add('响应结果内容', $response->getContent());
$response->send();
return $response;
}
public static function refund($wxOrder_no, $orderPrice, $refundPrice)
{
$app = Factory::payment(self::getConfig());
$refund_no = date('YmdHis') . rand(100000, 999999);
$orderPrice = intval(strval($orderPrice * 100));
$refundPrice = intval(strval($refundPrice * 100));
$result = $app->refund->byTransactionId($wxOrder_no, $refund_no, $orderPrice, $refundPrice, [
// 可在此处传入其他参数,详细参数见微信支付文档
'refund_desc' => '订单退款',
'notify_url' => env('API_URL') . '/refund-notify',
]);
// echo '<pre>';
// print_r($result);
Log::add('订单退款', $result);
if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {
//退款成功的操作
return $result;
}
if ($result['return_code'] == 'FAIL' && array_key_exists('return_msg', $result)) {
throw new \Exception($result['return_msg']);
}
throw new \Exception($result['err_code_des']);
}
public static function refundNotify($fields)
{
$app = Factory::payment(self::getConfig());
$response = $app->handleRefundedNotify(function ($message, $fail) use ($fields) {
return true;
});
return $response;
}
}
<?php
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
class PaymentRecord extends Model
{
use HasDateTimeFormatter;
protected $table = 'payment_record';
public function user()
{
return $this->belongsTo(User::class, 'uid');
}
}
......@@ -29,6 +29,7 @@
"qcloudsms/qcloudsms_php": "^0.1.4",
"simplesoftwareio/simple-qrcode": "^4.2",
"slowlyo/dcat-diy-form": "^2.2",
"overtrue/wechat": "~5.0",
"zhy/dcat-admin-sku": "dev-master"
},
"require-dev": {
......
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "a24888ebaf228dd1daa50a9c389c20ba",
"content-hash": "1a269a05eaffae2ee47ca06c03c04682",
"packages": [
{
"name": "abbotton/dcat-sku-plus",
......@@ -127,16 +127,16 @@
},
{
"name": "alibabacloud/credentials",
"version": "1.1.5",
"version": "1.1.6",
"source": {
"type": "git",
"url": "https://github.com/aliyun/credentials-php.git",
"reference": "1d8383ceef695974a88a3859c42e235fd2e3981a"
"reference": "c61dca4a5df24a00c183d68df05cb7e5ce04e47d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aliyun/credentials-php/zipball/1d8383ceef695974a88a3859c42e235fd2e3981a",
"reference": "1d8383ceef695974a88a3859c42e235fd2e3981a",
"url": "https://api.github.com/repos/aliyun/credentials-php/zipball/c61dca4a5df24a00c183d68df05cb7e5ce04e47d",
"reference": "c61dca4a5df24a00c183d68df05cb7e5ce04e47d",
"shasum": "",
"mirrors": [
{
......@@ -167,7 +167,7 @@
"ext-spl": "*",
"mikey179/vfsstream": "^1.6",
"monolog/monolog": "^1.24",
"phpunit/phpunit": "^5.7|^6.6|^7.5",
"phpunit/phpunit": "^5.7|^6.6|^9.3",
"psr/cache": "^1.0",
"symfony/dotenv": "^3.4",
"symfony/var-dumper": "^3.4"
......@@ -209,7 +209,7 @@
"issues": "https://github.com/aliyun/credentials-php/issues",
"source": "https://github.com/aliyun/credentials-php"
},
"time": "2023-04-11T02:12:12+00:00"
"time": "2024-08-18T04:26:45+00:00"
},
{
"name": "alibabacloud/darabonba-openapi",
......@@ -1786,6 +1786,60 @@
"time": "2023-08-10T19:36:49+00:00"
},
{
"name": "easywechat-composer/easywechat-composer",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/mingyoung/easywechat-composer.git",
"reference": "3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mingyoung/easywechat-composer/zipball/3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd",
"reference": "3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"composer-plugin-api": "^1.0 || ^2.0",
"php": ">=7.0"
},
"require-dev": {
"composer/composer": "^1.0 || ^2.0",
"phpunit/phpunit": "^6.5 || ^7.0"
},
"type": "composer-plugin",
"extra": {
"class": "EasyWeChatComposer\\Plugin"
},
"autoload": {
"psr-4": {
"EasyWeChatComposer\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "张铭阳",
"email": "mingyoungcheung@gmail.com"
}
],
"description": "The composer plugin for EasyWeChat",
"support": {
"issues": "https://github.com/mingyoung/easywechat-composer/issues",
"source": "https://github.com/mingyoung/easywechat-composer/tree/1.4.1"
},
"time": "2021-07-05T04:03:22+00:00"
},
{
"name": "egulias/email-validator",
"version": "4.0.2",
"source": {
......@@ -2242,16 +2296,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.9.1",
"version": "7.9.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "a629e5b69db96eb4939c1b34114130077dd4c6fc"
"reference": "d281ed313b989f213357e3be1a179f02196ac99b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/a629e5b69db96eb4939c1b34114130077dd4c6fc",
"reference": "a629e5b69db96eb4939c1b34114130077dd4c6fc",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
"reference": "d281ed313b989f213357e3be1a179f02196ac99b",
"shasum": "",
"mirrors": [
{
......@@ -2354,7 +2408,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.9.1"
"source": "https://github.com/guzzle/guzzle/tree/7.9.2"
},
"funding": [
{
......@@ -2370,7 +2424,7 @@
"type": "tidelift"
}
],
"time": "2024-07-19T16:19:57+00:00"
"time": "2024-07-24T11:22:20+00:00"
},
{
"name": "guzzlehttp/guzzle-services",
......@@ -4686,6 +4740,183 @@
"time": "2023-02-08T01:06:31+00:00"
},
{
"name": "overtrue/socialite",
"version": "4.11.0",
"source": {
"type": "git",
"url": "https://github.com/overtrue/socialite.git",
"reference": "4929bbb9241818783c5954151ebbbef36d4953f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/overtrue/socialite/zipball/4929bbb9241818783c5954151ebbbef36d4953f4",
"reference": "4929bbb9241818783c5954151ebbbef36d4953f4",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"ext-json": "*",
"ext-openssl": "*",
"guzzlehttp/guzzle": "^7.0",
"php": ">=8.0.2",
"symfony/psr-http-message-bridge": "^2.1|^6.0"
},
"require-dev": {
"jetbrains/phpstorm-attributes": "^1.0",
"laravel/pint": "^1.2",
"mockery/mockery": "^1.3",
"phpstan/phpstan": "^1.7",
"phpunit/phpunit": "^9.0"
},
"type": "library",
"autoload": {
"files": [
"src/Contracts/FactoryInterface.php",
"src/Contracts/UserInterface.php",
"src/Contracts/ProviderInterface.php"
],
"psr-4": {
"Overtrue\\Socialite\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "overtrue",
"email": "anzhengchao@gmail.com"
}
],
"description": "A collection of OAuth 2 packages.",
"keywords": [
"Feishu",
"login",
"oauth",
"qcloud",
"qq",
"social",
"wechat",
"weibo"
],
"support": {
"issues": "https://github.com/overtrue/socialite/issues",
"source": "https://github.com/overtrue/socialite/tree/4.11.0"
},
"funding": [
{
"url": "https://github.com/overtrue",
"type": "github"
}
],
"time": "2024-06-07T06:46:20+00:00"
},
{
"name": "overtrue/wechat",
"version": "5.30.0",
"source": {
"type": "git",
"url": "https://github.com/w7corp/easywechat.git",
"reference": "245d1e821bc5a4609625c3244b111f570692cfc2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/w7corp/easywechat/zipball/245d1e821bc5a4609625c3244b111f570692cfc2",
"reference": "245d1e821bc5a4609625c3244b111f570692cfc2",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"easywechat-composer/easywechat-composer": "^1.1",
"ext-fileinfo": "*",
"ext-libxml": "*",
"ext-openssl": "*",
"ext-simplexml": "*",
"guzzlehttp/guzzle": "^6.2 || ^7.0",
"monolog/monolog": "^1.22 || ^2.0",
"overtrue/socialite": "^3.2 || ^4.0",
"php": ">=7.4",
"pimple/pimple": "^3.0",
"psr/simple-cache": "^1.0||^2.0||^3.0",
"symfony/cache": "^3.3 || ^4.3 || ^5.0 || ^6.0",
"symfony/event-dispatcher": "^4.3 || ^5.0 || ^6.0",
"symfony/http-foundation": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0",
"symfony/psr-http-message-bridge": "^0.3 || ^1.0 || ^2.0"
},
"require-dev": {
"brainmaestro/composer-git-hooks": "^2.7",
"dms/phpunit-arraysubset-asserts": "^0.2.0",
"friendsofphp/php-cs-fixer": "^3.5.0",
"mikey179/vfsstream": "^1.6",
"mockery/mockery": "^1.2.3",
"phpstan/phpstan": "^0.12.0",
"phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"hooks": {
"pre-commit": [
"composer test",
"composer fix-style"
],
"pre-push": [
"composer test",
"composer fix-style"
]
}
},
"autoload": {
"files": [
"src/Kernel/Support/Helpers.php",
"src/Kernel/Helpers.php"
],
"psr-4": {
"EasyWeChat\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "overtrue",
"email": "anzhengchao@gmail.com"
}
],
"description": "微信SDK",
"keywords": [
"easywechat",
"sdk",
"wechat",
"weixin",
"weixin-sdk"
],
"support": {
"issues": "https://github.com/w7corp/easywechat/issues",
"source": "https://github.com/w7corp/easywechat/tree/5.30.0"
},
"funding": [
{
"url": "https://github.com/overtrue",
"type": "github"
}
],
"abandoned": "w7corp/easywechat",
"time": "2022-09-05T08:22:34+00:00"
},
{
"name": "phpoffice/phpspreadsheet",
"version": "1.29.0",
"source": {
......@@ -4878,6 +5109,65 @@
"time": "2024-07-20T21:41:07+00:00"
},
{
"name": "pimple/pimple",
"version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/silexphp/Pimple.git",
"reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed",
"reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.1 || ^2.0"
},
"require-dev": {
"symfony/phpunit-bridge": "^5.4@dev"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4.x-dev"
}
},
"autoload": {
"psr-0": {
"Pimple": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Pimple, a simple Dependency Injection Container",
"homepage": "https://pimple.symfony.com",
"keywords": [
"container",
"dependency injection"
],
"support": {
"source": "https://github.com/silexphp/Pimple/tree/v3.5.0"
},
"time": "2021-10-28T11:13:42+00:00"
},
{
"name": "predis/predis",
"version": "v2.2.2",
"source": {
......@@ -5348,16 +5638,16 @@
},
{
"name": "psr/log",
"version": "3.0.0",
"version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
"reference": "79dff0b268932c640297f5208d6298f71855c03e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e",
"reference": "79dff0b268932c640297f5208d6298f71855c03e",
"shasum": "",
"mirrors": [
{
......@@ -5398,9 +5688,9 @@
"psr-3"
],
"support": {
"source": "https://github.com/php-fig/log/tree/3.0.0"
"source": "https://github.com/php-fig/log/tree/3.0.1"
},
"time": "2021-07-14T16:46:02+00:00"
"time": "2024-08-21T13:31:24+00:00"
},
{
"name": "psr/simple-cache",
......@@ -6189,17 +6479,17 @@
"time": "2024-03-20T07:29:11+00:00"
},
{
"name": "symfony/console",
"version": "v6.4.8",
"name": "symfony/cache",
"version": "v6.4.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91"
"url": "https://github.com/symfony/cache.git",
"reference": "6702d2d777260e6ff3451fee2d7d78ab5f715cdc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91",
"reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91",
"url": "https://api.github.com/repos/symfony/cache/zipball/6702d2d777260e6ff3451fee2d7d78ab5f715cdc",
"reference": "6702d2d777260e6ff3451fee2d7d78ab5f715cdc",
"shasum": "",
"mirrors": [
{
......@@ -6210,39 +6500,43 @@
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"psr/cache": "^2.0|^3.0",
"psr/log": "^1.1|^2|^3",
"symfony/cache-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3",
"symfony/string": "^5.4|^6.0|^7.0"
"symfony/var-exporter": "^6.3.6|^7.0"
},
"conflict": {
"doctrine/dbal": "<2.13.1",
"symfony/dependency-injection": "<5.4",
"symfony/dotenv": "<5.4",
"symfony/event-dispatcher": "<5.4",
"symfony/lock": "<5.4",
"symfony/process": "<5.4"
"symfony/http-kernel": "<5.4",
"symfony/var-dumper": "<5.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
"psr/cache-implementation": "2.0|3.0",
"psr/simple-cache-implementation": "1.0|2.0|3.0",
"symfony/cache-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
"cache/integration-tests": "dev-master",
"doctrine/dbal": "^2.13.1|^3|^4",
"predis/predis": "^1.1|^2.0",
"psr/simple-cache": "^1.0|^2.0|^3.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/lock": "^5.4|^6.0|^7.0",
"symfony/filesystem": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Console\\": ""
"Symfony\\Component\\Cache\\": ""
},
"classmap": [
"Traits/ValueWrapper.php"
],
"exclude-from-classmap": [
"/Tests/"
]
......@@ -6253,24 +6547,22 @@
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Eases the creation of beautiful and testable command line interfaces",
"description": "Provides extended PSR-6, PSR-16 (and tags) implementations",
"homepage": "https://symfony.com",
"keywords": [
"cli",
"command-line",
"console",
"terminal"
"caching",
"psr6"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.8"
"source": "https://github.com/symfony/cache/tree/v6.4.10"
},
"funding": [
{
......@@ -6286,20 +6578,20 @@
"type": "tidelift"
}
],
"time": "2024-05-31T14:49:08+00:00"
"time": "2024-07-17T06:05:49+00:00"
},
{
"name": "symfony/css-selector",
"version": "v7.1.1",
"name": "symfony/cache-contracts",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4"
"url": "https://github.com/symfony/cache-contracts.git",
"reference": "1d74b127da04ffa87aa940abe15446fa89653778"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
"reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778",
"reference": "1d74b127da04ffa87aa940abe15446fa89653778",
"shasum": "",
"mirrors": [
{
......@@ -6309,16 +6601,23 @@
]
},
"require": {
"php": ">=8.2"
"php": ">=8.1",
"psr/cache": "^3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\CssSelector\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
"Symfony\\Contracts\\Cache\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
......@@ -6326,11 +6625,186 @@
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Jean-François Simon",
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Generic abstractions related to caching",
"homepage": "https://symfony.com",
"keywords": [
"abstractions",
"contracts",
"decoupling",
"interfaces",
"interoperability",
"standards"
],
"support": {
"source": "https://github.com/symfony/cache-contracts/tree/v3.4.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2023-09-25T12:52:38+00:00"
},
{
"name": "symfony/console",
"version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91",
"reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dotenv": "<5.4",
"symfony/event-dispatcher": "<5.4",
"symfony/lock": "<5.4",
"symfony/process": "<5.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/lock": "^5.4|^6.0|^7.0",
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|^6.0|^7.0",
"symfony/stopwatch": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Console\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Eases the creation of beautiful and testable command line interfaces",
"homepage": "https://symfony.com",
"keywords": [
"cli",
"command-line",
"console",
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.8"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/css-selector",
"version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
"reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=8.2"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\CssSelector\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Jean-François Simon",
"email": "jeanfrancois.simon@sensiolabs.com"
},
{
......@@ -6434,16 +6908,16 @@
},
{
"name": "symfony/error-handler",
"version": "v6.4.9",
"version": "v6.4.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
"reference": "c9b7cc075b3ab484239855622ca05cb0b99c13ec"
"reference": "231f1b2ee80f72daa1972f7340297d67439224f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/c9b7cc075b3ab484239855622ca05cb0b99c13ec",
"reference": "c9b7cc075b3ab484239855622ca05cb0b99c13ec",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0",
"reference": "231f1b2ee80f72daa1972f7340297d67439224f0",
"shasum": "",
"mirrors": [
{
......@@ -6495,7 +6969,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/error-handler/tree/v6.4.9"
"source": "https://github.com/symfony/error-handler/tree/v6.4.10"
},
"funding": [
{
......@@ -6511,20 +6985,20 @@
"type": "tidelift"
}
],
"time": "2024-06-21T16:04:15+00:00"
"time": "2024-07-26T12:30:32+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v7.1.1",
"version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7"
"reference": "8d7507f02b06e06815e56bb39aa0128e3806208b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
"reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b",
"reference": "8d7507f02b06e06815e56bb39aa0128e3806208b",
"shasum": "",
"mirrors": [
{
......@@ -6534,11 +7008,11 @@
]
},
"require": {
"php": ">=8.2",
"php": ">=8.1",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<6.4",
"symfony/dependency-injection": "<5.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
......@@ -6547,13 +7021,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/error-handler": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^6.4|^7.0"
"symfony/stopwatch": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
......@@ -6581,7 +7055,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1"
"source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8"
},
"funding": [
{
......@@ -6597,7 +7071,7 @@
"type": "tidelift"
}
],
"time": "2024-05-31T14:57:53+00:00"
"time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
......@@ -6683,16 +7157,16 @@
},
{
"name": "symfony/finder",
"version": "v6.4.8",
"version": "v6.4.10",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "3ef977a43883215d560a2cecb82ec8e62131471c"
"reference": "af29198d87112bebdd397bd7735fbd115997824c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c",
"reference": "3ef977a43883215d560a2cecb82ec8e62131471c",
"url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c",
"reference": "af29198d87112bebdd397bd7735fbd115997824c",
"shasum": "",
"mirrors": [
{
......@@ -6733,7 +7207,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v6.4.8"
"source": "https://github.com/symfony/finder/tree/v6.4.10"
},
"funding": [
{
......@@ -6749,7 +7223,7 @@
"type": "tidelift"
}
],
"time": "2024-05-31T14:49:08+00:00"
"time": "2024-07-24T07:06:38+00:00"
},
{
"name": "symfony/http-foundation",
......@@ -7133,16 +7607,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.29.0",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": "",
"mirrors": [
{
......@@ -7152,7 +7626,7 @@
]
},
"require": {
"php": ">=7.1"
"php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
......@@ -7198,7 +7672,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
},
"funding": [
{
......@@ -7214,20 +7688,20 @@
"type": "tidelift"
}
],
"time": "2024-01-29T20:11:03+00:00"
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.30.0",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
"reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"shasum": "",
"mirrors": [
{
......@@ -7237,7 +7711,7 @@
]
},
"require": {
"php": ">=7.1"
"php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
......@@ -7282,7 +7756,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
},
"funding": [
{
......@@ -7298,20 +7772,20 @@
"type": "tidelift"
}
],
"time": "2024-05-31T15:07:36+00:00"
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.30.0",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c"
"reference": "c36586dcf89a12315939e00ec9b4474adcb1d773"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
"reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773",
"reference": "c36586dcf89a12315939e00ec9b4474adcb1d773",
"shasum": "",
"mirrors": [
{
......@@ -7321,9 +7795,8 @@
]
},
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
"php": ">=7.2",
"symfony/polyfill-intl-normalizer": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
......@@ -7372,7 +7845,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0"
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0"
},
"funding": [
{
......@@ -7388,20 +7861,20 @@
"type": "tidelift"
}
],
"time": "2024-05-31T15:07:36+00:00"
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.29.0",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
"reference": "3833d7255cc303546435cb650316bff708a1c75c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
"reference": "3833d7255cc303546435cb650316bff708a1c75c",
"shasum": "",
"mirrors": [
{
......@@ -7411,7 +7884,7 @@
]
},
"require": {
"php": ">=7.1"
"php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
......@@ -7459,7 +7932,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
},
"funding": [
{
......@@ -7475,7 +7948,7 @@
"type": "tidelift"
}
],
"time": "2024-01-29T20:11:03+00:00"
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
......@@ -7564,17 +8037,17 @@
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.29.0",
"name": "symfony/polyfill-php80",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25"
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25",
"reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"shasum": "",
"mirrors": [
{
......@@ -7584,7 +8057,7 @@
]
},
"require": {
"php": ">=7.1"
"php": ">=7.2"
},
"type": "library",
"extra": {
......@@ -7598,8 +8071,11 @@
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
}
"Symfony\\Polyfill\\Php80\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
......@@ -7607,6 +8083,10 @@
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
......@@ -7615,7 +8095,7 @@
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
......@@ -7624,7 +8104,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
},
"funding": [
{
......@@ -7640,20 +8120,20 @@
"type": "tidelift"
}
],
"time": "2024-01-29T20:11:03+00:00"
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.29.0",
"name": "symfony/polyfill-php83",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
"url": "https://github.com/symfony/polyfill-php83.git",
"reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
"reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
"shasum": "",
"mirrors": [
{
......@@ -7663,7 +8143,7 @@
]
},
"require": {
"php": ">=7.1"
"php": ">=7.2"
},
"type": "library",
"extra": {
......@@ -7677,7 +8157,7 @@
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
"Symfony\\Polyfill\\Php83\\": ""
},
"classmap": [
"Resources/stubs"
......@@ -7689,10 +8169,6 @@
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
......@@ -7701,7 +8177,7 @@
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
......@@ -7710,7 +8186,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
"source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0"
},
"funding": [
{
......@@ -7726,20 +8202,20 @@
"type": "tidelift"
}
],
"time": "2024-01-29T20:11:03+00:00"
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php83",
"version": "v1.30.0",
"name": "symfony/polyfill-uuid",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php83.git",
"reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9"
"url": "https://github.com/symfony/polyfill-uuid.git",
"reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
"reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
"url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
"reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
"shasum": "",
"mirrors": [
{
......@@ -7749,7 +8225,13 @@
]
},
"require": {
"php": ">=7.1"
"php": ">=7.2"
},
"provide": {
"ext-uuid": "*"
},
"suggest": {
"ext-uuid": "For best performance"
},
"type": "library",
"extra": {
......@@ -7763,11 +8245,8 @@
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php83\\": ""
},
"classmap": [
"Resources/stubs"
]
"Symfony\\Polyfill\\Uuid\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
......@@ -7775,24 +8254,24 @@
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
"name": "Grégoire Pineau",
"email": "lyrixx@lyrixx.info"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
"description": "Symfony polyfill for uuid functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
"uuid"
],
"support": {
"source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0"
"source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0"
},
"funding": [
{
......@@ -7808,20 +8287,20 @@
"type": "tidelift"
}
],
"time": "2024-06-19T12:35:24+00:00"
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-uuid",
"version": "v1.29.0",
"name": "symfony/process",
"version": "v6.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-uuid.git",
"reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853"
"url": "https://github.com/symfony/process.git",
"reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853",
"reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853",
"url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5",
"reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5",
"shasum": "",
"mirrors": [
{
......@@ -7831,28 +8310,16 @@
]
},
"require": {
"php": ">=7.1"
},
"provide": {
"ext-uuid": "*"
},
"suggest": {
"ext-uuid": "For best performance"
"php": ">=8.1"
},
"type": "library",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Uuid\\": ""
}
"Symfony\\Component\\Process\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
......@@ -7860,24 +8327,18 @@
],
"authors": [
{
"name": "Grégoire Pineau",
"email": "lyrixx@lyrixx.info"
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for uuid functions",
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"uuid"
],
"support": {
"source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0"
"source": "https://github.com/symfony/process/tree/v6.4.8"
},
"funding": [
{
......@@ -7893,20 +8354,20 @@
"type": "tidelift"
}
],
"time": "2024-01-29T20:11:03+00:00"
"time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/process",
"version": "v6.4.8",
"name": "symfony/psr-http-message-bridge",
"version": "v2.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5"
"url": "https://github.com/symfony/psr-http-message-bridge.git",
"reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5",
"reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5",
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e",
"reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e",
"shasum": "",
"mirrors": [
{
......@@ -7916,12 +8377,33 @@
]
},
"require": {
"php": ">=8.1"
"php": ">=7.2.5",
"psr/http-message": "^1.0 || ^2.0",
"symfony/deprecation-contracts": "^2.5 || ^3.0",
"symfony/http-foundation": "^5.4 || ^6.0"
},
"require-dev": {
"nyholm/psr7": "^1.1",
"psr/log": "^1.1 || ^2 || ^3",
"symfony/browser-kit": "^5.4 || ^6.0",
"symfony/config": "^5.4 || ^6.0",
"symfony/event-dispatcher": "^5.4 || ^6.0",
"symfony/framework-bundle": "^5.4 || ^6.0",
"symfony/http-kernel": "^5.4 || ^6.0",
"symfony/phpunit-bridge": "^6.2"
},
"suggest": {
"nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
},
"type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-main": "2.3-dev"
}
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Process\\": ""
"Symfony\\Bridge\\PsrHttpMessage\\": ""
},
"exclude-from-classmap": [
"/Tests/"
......@@ -7938,13 +8420,20 @@
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
"homepage": "http://symfony.com/contributors"
}
],
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"description": "PSR HTTP message bridge",
"homepage": "http://symfony.com",
"keywords": [
"http",
"http-message",
"psr-17",
"psr-7"
],
"support": {
"source": "https://github.com/symfony/process/tree/v6.4.8"
"issues": "https://github.com/symfony/psr-http-message-bridge/issues",
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1"
},
"funding": [
{
......@@ -7960,7 +8449,7 @@
"type": "tidelift"
}
],
"time": "2024-05-31T14:49:08+00:00"
"time": "2023-07-26T11:53:26+00:00"
},
{
"name": "symfony/routing",
......@@ -8589,6 +9078,88 @@
"time": "2024-05-31T14:49:08+00:00"
},
{
"name": "symfony/var-exporter",
"version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
"reference": "db82c2b73b88734557cfc30e3270d83fa651b712"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/db82c2b73b88734557cfc30e3270d83fa651b712",
"reference": "db82c2b73b88734557cfc30e3270d83fa651b712",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=8.2"
},
"require-dev": {
"symfony/property-access": "^6.4|^7.0",
"symfony/serializer": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\VarExporter\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Allows exporting any serializable PHP data structure to plain PHP code",
"homepage": "https://symfony.com",
"keywords": [
"clone",
"construct",
"export",
"hydrate",
"instantiate",
"lazy-loading",
"proxy",
"serialize"
],
"support": {
"source": "https://github.com/symfony/var-exporter/tree/v7.1.1"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-05-31T14:57:53+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
"version": "v2.2.7",
"source": {
......@@ -9226,16 +9797,16 @@
},
{
"name": "laravel/pint",
"version": "v1.17.0",
"version": "v1.17.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "4dba80c1de4b81dc4c4fb10ea6f4781495eb29f5"
"reference": "b5b6f716db298671c1dfea5b1082ec2c0ae7064f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/4dba80c1de4b81dc4c4fb10ea6f4781495eb29f5",
"reference": "4dba80c1de4b81dc4c4fb10ea6f4781495eb29f5",
"url": "https://api.github.com/repos/laravel/pint/zipball/b5b6f716db298671c1dfea5b1082ec2c0ae7064f",
"reference": "b5b6f716db298671c1dfea5b1082ec2c0ae7064f",
"shasum": "",
"mirrors": [
{
......@@ -9294,7 +9865,7 @@
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2024-07-23T16:40:20+00:00"
"time": "2024-08-01T09:06:33+00:00"
},
{
"name": "laravel/sail",
......
......@@ -70,6 +70,8 @@
Route::get('comment-list', 'CommentController@getList'); //评价列表
Route::any('pay-notify', 'OrderController@payNotify'); //付款回调
Route::get('send/config/update', 'SystemController@update');
Route::middleware('auth:sanctum')->group(function () {
......@@ -122,6 +124,8 @@
Route::post('cance-order', 'OrderController@canceOrder'); //取消订单
Route::post('pay', 'OrderController@pay'); //统一支付
Route::get('address-list', 'UserController@getUserAddress'); //获取收货地址列表
Route::post('set-address', 'UserController@setUserAddress'); //设置收货地址
......@@ -146,6 +150,8 @@
Route::post('income-add', 'IncomeController@add'); //去提现
Route::post('scan-code', 'OrderController@scanCodeVerifi'); //扫码核销
Route::get('merchant-order-collect', 'OrderController@orderCollect'); //商户端首页统计
});
});
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