From e536797e5a34739f5397c480ec937b68693415d7 Mon Sep 17 00:00:00 2001 From: weigang Date: Thu, 3 Sep 2020 11:17:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=A2=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Constants/v3/Shipping.php | 17 +++++++++ app/Controller/v3/OrderOnlineController.php | 25 ++++++++++++- app/Model/v3/Order.php | 5 +++ app/Model/v3/OrderGoods.php | 4 ++ app/Model/v3/OrderMain.php | 34 ++++++++++++++++- app/Request/v3/OrderOnlineDetailRequest.php | 37 +++++++++++++++++++ app/Request/v3/UserBindTelRequest.php | 2 +- app/Request/v3/VerifyCodeRequest.php | 2 +- .../v3/Implementations/OrderOnlineService.php | 11 ++++++ .../OrderOnlineServiceInterface.php | 2 + config/routes.php | 3 +- 11 files changed, 137 insertions(+), 5 deletions(-) create mode 100644 app/Constants/v3/Shipping.php create mode 100644 app/Request/v3/OrderOnlineDetailRequest.php diff --git a/app/Constants/v3/Shipping.php b/app/Constants/v3/Shipping.php new file mode 100644 index 0000000..fbcccf7 --- /dev/null +++ b/app/Constants/v3/Shipping.php @@ -0,0 +1,17 @@ +request->all(); //判断用户有没有绑定手机 @@ -113,4 +123,17 @@ class OrderOnlineController extends BaseController ]; return $this->success($res); } + + /** + * 订单详情 + * 1、主订单信息,用户配送信息(地址、姓名、电话、配送时间、配送类型)、基础信息(订单ID、订单编号、下单时间、订单金额、付款时间、支付方式、红包优惠、服务站电话、增值服务费) + * 2、子订单以及订单商品,按商户分组,有商户信息(ID、商户名、商户logo),商品信息(id、名字、封面、规格、tag、原价、售价、库存、总销、月销、是否失效、失效原因) + * @param OrderOnlineDetailRequest $request + * @return ResponseInterface + */ + public function detailByUser(OrderOnlineDetailRequest $request) + { + $params = $request->validated(); + return $this->success(['detail' => $this->orderOnlineService->detailByUser($params['order_id'], $params['user_id'])]); + } } \ No newline at end of file diff --git a/app/Model/v3/Order.php b/app/Model/v3/Order.php index 060a0ea..fee010e 100644 --- a/app/Model/v3/Order.php +++ b/app/Model/v3/Order.php @@ -7,4 +7,9 @@ use App\Model\Model; class Order extends Model { protected $table = 'lanzu_order'; + + public function orderGoods() + { + return $this->hasMany(OrderGoods::class, 'order_id', 'id'); + } } \ No newline at end of file diff --git a/app/Model/v3/OrderGoods.php b/app/Model/v3/OrderGoods.php index f2a30fa..57a3b35 100644 --- a/app/Model/v3/OrderGoods.php +++ b/app/Model/v3/OrderGoods.php @@ -7,4 +7,8 @@ use App\Model\Model; class OrderGoods extends Model { protected $table = 'lanzu_order_goods'; + + protected $casts = [ + 'spec' => 'array', + ]; } \ No newline at end of file diff --git a/app/Model/v3/OrderMain.php b/app/Model/v3/OrderMain.php index 39f682f..d2fbc70 100644 --- a/app/Model/v3/OrderMain.php +++ b/app/Model/v3/OrderMain.php @@ -2,6 +2,9 @@ namespace App\Model\v3; +use App\Constants\v3\OrderState; +use App\Constants\v3\Payment; +use App\Constants\v3\Shipping; use App\Model\Model; class OrderMain extends Model @@ -9,7 +12,11 @@ class OrderMain extends Model protected $table = 'lanzu_order_main'; protected $appends = [ - 'created_at_text' + 'created_at_text', + 'state_text', + 'pay_time_text', + 'pay_type_text', + 'shipping_type_text', ]; public function getCreatedAtTextAttribute() @@ -17,11 +24,36 @@ class OrderMain extends Model return date('Y-m-d H:i:s', $this->attributes['created_at']); } + public function getPayTimeTextAttribute() + { + return date('Y-m-d H:i:s', $this->attributes['time_pay']); + } + + public function getStateTextAttribute() + { + return OrderState::getMessage($this->attributes['state']); + } + + public function getPayTypeTextAttribute() + { + return Payment::getMessage($this->attributes['pay_type']); + } + + public function getShippingTypeTextAttribute() + { + return Shipping::getMessage($this->attributes['shipping_type']); + } + public function market() { return $this->belongsTo(Market::class, 'market_id', 'id'); } + public function orders() + { + return $this->hasMany(Order::class, 'order_main_id', 'id'); + } + public function orderGoods() { // firstKey是中间表联当前表的列,secondKey是远程表对应中间表的列,localKey是当前表关联中间表的列,secondLocalKey是中间表关联远程表的列 diff --git a/app/Request/v3/OrderOnlineDetailRequest.php b/app/Request/v3/OrderOnlineDetailRequest.php new file mode 100644 index 0000000..92dacbd --- /dev/null +++ b/app/Request/v3/OrderOnlineDetailRequest.php @@ -0,0 +1,37 @@ + 'required|nonempty|integer', + 'user_id' => 'required|nonempty|integer', + ]; + } + + /** + * @return array + */ + public function messages(): array + { + return [ + '*.*' => ':attribute无效', + ]; + } + + public function attributes(): array + { + return parent::attributes(); + } +} diff --git a/app/Request/v3/UserBindTelRequest.php b/app/Request/v3/UserBindTelRequest.php index 0020a6a..bebf7af 100644 --- a/app/Request/v3/UserBindTelRequest.php +++ b/app/Request/v3/UserBindTelRequest.php @@ -15,7 +15,7 @@ class UserBindTelRequest extends BaseFormRequest public function rules(): array { return [ - 'user_id' => 'required|nonempty|exists_enable:ims_cjdc_user,id', + 'user_id' => 'required|nonempty|exists_enable:lanzu_user,id', 'tel' => 'required|nonempty|tel', 'verify_code' => 'required|nonempty|numeric|strlen:6,6', ]; diff --git a/app/Request/v3/VerifyCodeRequest.php b/app/Request/v3/VerifyCodeRequest.php index 425d875..51fe6c2 100644 --- a/app/Request/v3/VerifyCodeRequest.php +++ b/app/Request/v3/VerifyCodeRequest.php @@ -15,7 +15,7 @@ class VerifyCodeRequest extends BaseFormRequest public function rules(): array { return [ - 'user_id' => 'required|nonempty|exists_enable:ims_cjdc_user,id', + 'user_id' => 'required|nonempty|exists_enable:lanzu_user,id', 'tel' => 'required|nonempty|tel', ]; } diff --git a/app/Service/v3/Implementations/OrderOnlineService.php b/app/Service/v3/Implementations/OrderOnlineService.php index a6f1a19..a0a57c2 100644 --- a/app/Service/v3/Implementations/OrderOnlineService.php +++ b/app/Service/v3/Implementations/OrderOnlineService.php @@ -2,6 +2,7 @@ namespace App\Service\v3\Implementations; +use App\Model\v3\OrderMain; use Hyperf\Di\Annotation\Inject; use App\Service\v3\Interfaces\OrderOnlineServiceInterface; class OrderOnlineService implements OrderOnlineServiceInterface @@ -19,4 +20,14 @@ class OrderOnlineService implements OrderOnlineServiceInterface { // TODO: Implement undo() method. } + + public function detailByUser($orderMainId, $userId) + { + return OrderMain::query() + ->where(['id' => $orderMainId]) + ->with(['orders' => function($query) { + return $query->with(['orderGoods']); + }]) + ->first()->toArray(); + } } \ No newline at end of file diff --git a/app/Service/v3/Interfaces/OrderOnlineServiceInterface.php b/app/Service/v3/Interfaces/OrderOnlineServiceInterface.php index fadfbf9..f5fb57d 100644 --- a/app/Service/v3/Interfaces/OrderOnlineServiceInterface.php +++ b/app/Service/v3/Interfaces/OrderOnlineServiceInterface.php @@ -9,4 +9,6 @@ interface OrderOnlineServiceInterface public function check(); public function undo(); + + public function detailByUser($orderMainId, $userId); } \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 37ff3a0..025a0ab 100644 --- a/config/routes.php +++ b/config/routes.php @@ -99,7 +99,7 @@ Router::addGroup('/v3/', function () { Router::post('user/updateInfo', 'App\Controller\v3\UserController@updateInfo'); Router::post('home/userIndex', 'App\Controller\v3\HomeController@userIndex'); Router::post('user/olOrders', 'App\Controller\v3\OrderListController@onlineForUser'); - Router::post('orderOnline/detail', 'App\Controller\v3\OrderOnlineController@detail'); + Router::post('orderOnline/detailByUser', 'App\Controller\v3\OrderOnlineController@detailByUser'); Router::post('userDeliveryAddress/update', 'App\Controller\v3\UserDeliveryAddressController@update'); Router::post('userDeliveryAddress/get', 'App\Controller\v3\UserDeliveryAddressController@get'); Router::post('userDeliveryAddress/delete', 'App\Controller\v3\UserDeliveryAddressController@delete'); @@ -107,4 +107,5 @@ Router::addGroup('/v3/', function () { Router::post('collectStore/update', 'App\Controller\v3\CollectStoreController@update'); Router::post('shopCartUpdate/update', 'App\Controller\v3\ShopCartUpdateController@update'); Router::post('shopCart/detail', 'App\Controller\v3\ShopCartController@detail'); + Router::post('orderOnline/review', 'App\Controller\v3\OrderOnlineController@review'); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]); \ No newline at end of file