diff --git a/app/api/controller/DishesController.php b/app/api/controller/DishesController.php index 456de45..092933e 100644 --- a/app/api/controller/DishesController.php +++ b/app/api/controller/DishesController.php @@ -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(); diff --git a/app/api/controller/OrderController.php b/app/api/controller/OrderController.php index a2eb094..69c26b3 100644 --- a/app/api/controller/OrderController.php +++ b/app/api/controller/OrderController.php @@ -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) + { + + } + } diff --git a/app/api/controller/UserController.php b/app/api/controller/UserController.php new file mode 100644 index 0000000..17056cb --- /dev/null +++ b/app/api/controller/UserController.php @@ -0,0 +1,16 @@ +address($this->request->user->id); + } + +} diff --git a/app/api/logic/OrderLogic.php b/app/api/logic/OrderLogic.php new file mode 100644 index 0000000..10593ec --- /dev/null +++ b/app/api/logic/OrderLogic.php @@ -0,0 +1,56 @@ +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() + { + + } + +} diff --git a/app/api/logic/UserLogic.php b/app/api/logic/UserLogic.php index 4e96565..2bb26d1 100644 --- a/app/api/logic/UserLogic.php +++ b/app/api/logic/UserLogic.php @@ -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') { diff --git a/app/api/validate/OrderValidate.php b/app/api/validate/OrderValidate.php new file mode 100644 index 0000000..ed28e39 --- /dev/null +++ b/app/api/validate/OrderValidate.php @@ -0,0 +1,77 @@ + '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']); + } + +} diff --git a/app/common/model/Order.php b/app/common/model/Order.php index a25e845..86c7173 100644 --- a/app/common/model/Order.php +++ b/app/common/model/Order.php @@ -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)); + } + } diff --git a/app/common/model/user/UserAddress.php b/app/common/model/user/UserAddress.php new file mode 100644 index 0000000..34cb091 --- /dev/null +++ b/app/common/model/user/UserAddress.php @@ -0,0 +1,10 @@ +