调试订单创建

This commit is contained in:
lewis 2025-07-23 14:46:58 +08:00
parent 86dd75b3cf
commit 913f2d7700
8 changed files with 197 additions and 0 deletions

View File

@ -9,6 +9,8 @@ use app\common\model\DishesCategory;
class DishesController extends BaseLikeAdminController
{
public $optional = ['category', 'dishes', 'detail'];
public function category()
{
$category = DishesCategory::field('id,name,pid')->select()->toArray();

View File

@ -2,9 +2,32 @@
namespace app\api\controller;
use app\api\logic\OrderLogic;
use app\api\validate\OrderValidate;
use app\common\controller\BaseLikeAdminController;
class OrderController extends BaseLikeAdminController
{
public function check(OrderLogic $logic)
{
$params['uid'] = $this->request->user->id;
$data = $logic->check($params);
return $this->data($data);
}
public function create(OrderValidate $validate, OrderLogic $logic)
{
$params = $this->request->post();
$params['uid'] = $this->request->user->id;
$params = $validate->goCheck('add', $params);
$logic->create($params);
return $this->success('订单创建成功', [], 1, 1);
}
public function list(OrderLogic $logic)
{
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace app\api\controller;
use app\api\logic\UserLogic;
use app\common\controller\BaseLikeAdminController;
class UserController extends BaseLikeAdminController
{
public function address(UserLogic $logic)
{
return $logic->address($this->request->user->id);
}
}

View File

@ -0,0 +1,56 @@
<?php
namespace app\api\logic;
use app\common\logic\BaseLogic;
use app\common\model\Cart;
use app\common\model\CartProduct;
use app\common\model\Order;
use app\common\model\user\User;
use app\common\model\user\UserAddress;
use think\facade\Db;
use Tinywan\Jwt\JwtToken;
class OrderLogic extends BaseLogic
{
public function check($params)
{
$query = Cart::with(['cartDishes'])
->where('uid', $params['uid'])
->where('buy_now', 0)
->where('.paid', 0);
return $query->select()->toArray();
}
public function create($params)
{
Db::startTrans();
try {
$carts = Cart::with(['cartDishes', 'cartProduct'])->where('uid', $params['uid'])->whereIn('id', $params['cart_ids'])->where('paid', 0)->where('buy_now', 0)->select()->toArray();
$orderData = [
'uid' => $params['uid'],
'order_sn' => Order::generateOrderSn(),
'order_type' => 0,
];
foreach ($carts as $cart) {
$orderData[] = [];
}
$cartWhere = ['uid' => $params['uid'], 'paid' => 0, 'buy_now' => 0];
Cart::update(['people_number' => $params['people_number']], $cartWhere);
$cartIds = Cart::where($cartWhere)->column('id');
CartProduct::whereIn('cart_id', $cartIds)->where('uid', $params['uid'])->update(['people_number' => $params['people_number']]);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
return false;
}
}
public function list()
{
}
}

View File

@ -4,11 +4,17 @@ namespace app\api\logic;
use app\common\logic\BaseLogic;
use app\common\model\user\User;
use app\common\model\user\UserAddress;
use Tinywan\Jwt\JwtToken;
class UserLogic extends BaseLogic
{
public function address($uid)
{
return UserAddress::where('user_id', $uid)->order('is_default desc,id desc')->select()->toArray();
}
public function login($code, $type)
{
if (env('environment') == 'local') {

View File

@ -0,0 +1,77 @@
<?php
namespace app\api\validate;
use app\common\validate\BaseValidate;
class OrderValidate extends BaseValidate
{
/**
* 设置校验规则
* @var string[]
*/
protected $rule = [
'id' => 'require',
'uid' => 'require',
'address_id' => 'require',
'delivery_date' => 'require',
'delivery_time ' => 'require',
'cart_ids' => 'require',
];
/**
* 参数描述
* @var string[]
*/
protected $field = [
'id' => 'id',
'uid' => '用户id',
'address_id' => '地址id',
'delivery_date' => '配送日期',
'delivery_time' => '配送时间',
'cart_ids' => '购物车id',
];
/**
* @notes 添加场景
* @return OrderValidate
*/
public function sceneAdd()
{
return $this->remove('id', true);
}
/**
* @notes 编辑场景
* @return OrderValidate
*/
public function sceneEdit()
{
return $this->only(['id']);
}
/**
* @notes 删除场景
* @return OrderValidate
*/
public function sceneDelete()
{
return $this->only(['id']);
}
/**
* @notes 详情场景
* @return OrderValidate
*/
public function sceneDetail()
{
return $this->only(['id']);
}
}

View File

@ -68,4 +68,11 @@ class Order extends BaseModel
return self::PayStatusMap[$this->paid];
}
public static function generateOrderSn($type = 'wxo')
{
list($msec, $sec) = explode(' ', microtime());
$msectime = number_format((floatval($msec) + floatval($sec)) * 1000, 0, '', '');
return $type . $msectime . mt_rand(10000, max(intval($msec * 10000) + 10000, 98369));
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace app\common\model\user;
use app\common\model\BaseModel;
class UserAddress extends BaseModel
{
}