diff --git a/app/Amqp/Consumer/DevicOrderConsumer.php b/app/Amqp/Consumer/DevicOrderConsumer.php index d0aa997..f6e58bc 100644 --- a/app/Amqp/Consumer/DevicOrderConsumer.php +++ b/app/Amqp/Consumer/DevicOrderConsumer.php @@ -65,7 +65,9 @@ class DevicOrderConsumer extends ConsumerMessage public function isEnable(): bool { - // if(env('APP_ENV')!='prod') return false; + if(env('APP_ENV') == 'local') { + return false; + } return parent::isEnable(); } } diff --git a/app/Controller/OrderController.php b/app/Controller/OrderController.php index 0973da0..8757ff9 100644 --- a/app/Controller/OrderController.php +++ b/app/Controller/OrderController.php @@ -5,6 +5,7 @@ namespace App\Controller; use App\Request\OrderOnlineRequest; use Hyperf\Di\Annotation\Inject; use App\Service\OrderServiceInterface; +use Hyperf\HttpMessage\Stream\SwooleStream; class OrderController extends BaseController { @@ -18,6 +19,15 @@ class OrderController extends BaseController public function addOnlineOrder(OrderOnlineRequest $request) { $orderMainId = $this->orderService->addOnlineOrder($request->validated()); - return $this->success(['order_main_id' => $orderMainId]); + if (!is_int($orderMainId)) { + return $this->response + ->withHeader('Content-Type', 'application/text') + ->withStatus(500) + ->withBody(new SwooleStream($orderMainId)); + } + return $this->response + ->withHeader('Content-Type', 'application/text') + ->withStatus(200) + ->withBody(new SwooleStream($orderMainId)); } } \ No newline at end of file diff --git a/app/Model/OrderMain.php b/app/Model/OrderMain.php index 1a0a7e9..ee3840c 100644 --- a/app/Model/OrderMain.php +++ b/app/Model/OrderMain.php @@ -6,41 +6,43 @@ namespace App\Model; class OrderMain extends Model { - // ϶ + // 线上订单,外卖 const ORDER_TYPE_ONLINE = 1; - // ¶渶 + // 线下订单,当面付 const ORDER_TYPE_OFFLINE = 4; - // ״̬ - // + // 订单状态 + // 待付款 const ORDER_STATE_UNPAY = 1; - // ӵ + // 待接单 const ORDER_STATE_UNTAKE = 2; - // ʹ + // 待送达 const ORDER_STATE_DELIVERY = 3; - // + // 已完成 const ORDER_STATE_COMPLETE = 4; - // + // 已评价 const ORDER_STATE_EVALUATED = 5; - // ȡ + // 已取消 const ORDER_STATE_CANCEL = 6; - // Ѿܵ + // 已拒单 const ORDER_STATE_REFUSE = 7; - // ˿ + // 退款中 const ORDER_STATE_REFUNDING = 8; - // ˿ + // 已退款 const ORDER_STATE_REFUNDED = 9; - // ܾ˿ + // 拒绝退款 const ORDER_STATE_UNREFUND = 10; - // ֧ʽ - // ΢֧ + // 订单支付方式 + // 微信支付 const ORDER_PAY_WX = 1; - // ֧ + // 余额支付 const ORDER_PAY_BALANCE = 2; protected $table = 'ims_cjdc_order_main'; + public $timestamps = false; + protected $fillable = [ 'order_num', 'delivery_no', @@ -75,6 +77,8 @@ class OrderMain extends Model 'state', 'time', 'time_add', + 'pay_time', + 'jj_note', 'global_order_id', ]; diff --git a/app/Service/CouponService.php b/app/Service/CouponService.php index f1d4bf5..f4f8af9 100644 --- a/app/Service/CouponService.php +++ b/app/Service/CouponService.php @@ -18,25 +18,13 @@ class CouponService implements CoupnoServiceInterface // 用户今日使用过的优惠券 $redis = ApplicationContext::getContainer()->get(Redis::class); $couponTodayUsedIds = $redis->sMembers('coupon_'.date('Ymd').'_used_'.$userId); - $currentTime = time(); $builder = Db::table('ims_system_coupon_user_receive as receive') ->join('ims_system_coupon_user as coupon', 'coupon.id', '=', 'receive.system_coupon_user_id', 'inner'); if (is_array($fields)&&!empty($fields)) { - $builder->select([ - 'receive.id as receive_id', - 'receive.user_id', - 'receive.number_remain', - 'coupon.id', - 'coupon.title', - 'coupon.full_amount', - 'coupon.discounts', - 'coupon.usable_start_time', - 'coupon.usable_end_time', - 'coupon.discount_type' - ]); + $builder->select($fields); } if (is_array($couponTodayUsedIds)&&!empty($couponTodayUsedIds)) { diff --git a/app/Service/OrderService.php b/app/Service/OrderService.php index e16d2cb..25a44e5 100644 --- a/app/Service/OrderService.php +++ b/app/Service/OrderService.php @@ -57,7 +57,7 @@ class OrderService implements OrderServiceInterface // 店铺IDs $dataMain['store_ids'] = ''; - $storeList = json_decode(json_encode($data['store_list']), true); + $storeList = json_decode(html_entity_decode($data['store_list']), true); if (!is_array($storeList)||empty($storeList)) { Db::rollBack(); return '订单中商品不存在或已失效'; @@ -72,15 +72,19 @@ class OrderService implements OrderServiceInterface $currentTime = time(); $dataMain['time'] = date('Y-m-d H:i:s', $currentTime); $dataMain['time_add'] = $currentTime; + $dataMain['pay_time'] = date('Y-m-d H:i:s', $currentTime); $dataMain['state'] = OrderMain::ORDER_STATE_UNPAY; $dataMain['code'] = $dataMain['global_order_id']; + $dataMain['jj_note'] = ''; // 主订单模型保存 $orderMain = OrderMain::create($dataMain); $orderMainId = $orderMain->id; // 统计订单中所有店铺当日订单数,做店铺订单序号 - $countsArr = Order::query()->select('COUNT(*) AS count, id') + $countsArr = Order::query() + ->selectRaw('COUNT(*) AS count') + ->select('id') ->whereIn('store_id', explode(',', $dataMain['store_ids'])) ->where(['type' => OrderMain::ORDER_TYPE_ONLINE]) ->whereBetween('time', [date('Y-m-d 00:00:00'), date('Y-m-d 23:59:59')]) @@ -102,14 +106,14 @@ class OrderService implements OrderServiceInterface 'order_num' => 's'.date('YmdHis', time()) . rand(1111, 9999), 'user_id' => $orderMain->user_id, 'store_id' => $item['store_id'], - 'order_main_id' => $orderMain, + 'order_main_id' => $orderMainId, 'state' => OrderMain::ORDER_STATE_UNPAY, 'tel' => $orderMain->tel, 'name' => $orderMain->name, 'address' => $orderMain->address, 'area' => $orderMain->area, 'time' => date("Y-m-d H:i:s"), - 'note' => $item['note'], + 'note' => $item['note'] ?? '', 'delivery_time' => $orderMain->delivery_time, 'type' => $orderMain->type, 'lat' => $orderMain->lat, @@ -127,10 +131,13 @@ class OrderService implements OrderServiceInterface 'xyh_money' => floatval($item['xyh_money']), 'oid' => (isset($storeOrderCounts[$item['store_id']]) ? $item['store_id'] : 0) + 1, 'time_add' => date("Y-m-d H:i:s"), + 'jj_note' => '', + 'form_id' => '', + 'form_id2' => '', + 'code' => '', ]; - $order = Order::create($dataChild); - $orderChildId = $order->id; + $orderChildId = Order::query()->insertGetId($dataChild); // 子订单内商品处理 $goodsAmountTotal = 0; @@ -140,7 +147,6 @@ class OrderService implements OrderServiceInterface return '订单商品异常'; } foreach ($item['good_list'] as &$goods) { - $goodsAmount = bcadd(floatval($goods['money']), floatval($goods['box_money'])); $goodsAmount = bcmul($goodsAmount, $goods['num']); $goodsAmountTotal = bcadd($goodsAmountTotal, $goodsAmount); @@ -170,7 +176,7 @@ class OrderService implements OrderServiceInterface } // 校验库存 - foreach ($orderGoods as $Key=>&$goodsItem) { + foreach ($orderGoods as $Key => &$goodsItem) { $goodsItem['combination_id'] = intval($goodsItem['combination_id']); @@ -179,21 +185,27 @@ class OrderService implements OrderServiceInterface if ($goodsItem['combination_id'] > 0) { $goods = SpecCombination::query() - ->select('id, number AS inventory') + ->with(['goods' => function($query){ + $query->select(['name', 'is_max']); + }]) + ->select(['id', 'number AS inventory']) ->where(['id' => $goodsItem['combination_id']]) - ->first(); + ->first() + ->toArray(); $goods->name = $goods->goods->name; $goods->is_max = $goods->goods->is_max; } else { $goods = Goods::query() - ->select('id, name, is_max, inventory') + ->select(['id', 'name', 'is_max', 'inventory']) ->where(['id' => $goodsItem['good_id']]) - ->first(); + ->first() + ->toArray(); } + var_dump('$goods', $goods); if (!$goods) { Db::rollBack(); return '缺少商品'; @@ -243,7 +255,7 @@ class OrderService implements OrderServiceInterface $goods['combination_id'] = $value['combination_id']; $orderGoods[] = $goods; } - + var_dump('$orderGoods', $orderGoods); $addOrderGoods = OrderGoods::query()->insert($orderGoods); if (!$addOrderGoods) { Db::rollBack(); @@ -324,7 +336,7 @@ class OrderService implements OrderServiceInterface } Db::commit(); - + return $orderMainId; } catch (Exception $e) { @@ -332,16 +344,6 @@ class OrderService implements OrderServiceInterface return $e->getMessage(); } - - // 订单成功后处理 - if ($orderMainId) { - - // 处理喇叭播报 - - - } - - return $orderMainId; } /**