$clerk_code]; $where[] = ['mall_id' => $mall_id]; $where[] = ['status' => StatusEnum::ENABLED]; $order = Order::getOne($where, true, ['detail' => function ($query) { $query->select('id,order_id,goods_id,goods_name,pic_url,num,price,is_feedback,sign_id,goods_attr_name,order_status,adjust_money,extra_info'); }], false, $select); if (empty($order))throw new Exception('该订单不存在'); //获取门店订单 $store_order = HappinessOrder::getOne([ ['mall_id' => $params['mall_id']], ['order_id' => $order['id']] ]); if (empty($store_order)) throw new Exception('不存在该门店订单'); $store_id = $store_order['store_id']; $store = HappinessStore::getOne([['id' => $store_id]], true, [], false, 'id,user_id,balance'); $store_user_id = $store['user_id']; $where = [ ['mall_id' => $mall_id], ['store_id' => $store_id], ['status' => StatusEnum::ENABLED] ]; if($user_id != $store_user_id){ $where[] = ['user_id'=>$user_id]; } $rse = HappinessClerk::getOne($where); if (empty($rse)) throw new Exception('你不是核销员'); $marketing = OrderMarketing::getMarketingInfo($order); $order['order_status_text'] = OrderStatusEnum::getMap(); $order['is_feedback_text'] = OrderStatusEnum::getFeedbackMap(); $order['shipping_type_text'] = ShippingTypeEnum::getMap(); $order['payment_type_text'] = PayTypeEnum::getMap(); $order['pay_type_list'] = \Yii::$app->services->pay->getEnablePayment($mall_id, $platform); $adjust_money = array_sum(array_column($order['detail'], 'adjust_money'));//预留字段 if ($adjust_money) { $order['change_price'] = $adjust_money; } $order['marketing'] = $marketing; $order['marketing_type_map'] = MarketingTypeEnum::getMap(); $order_setting = \Yii::$app->services->setting->mall->get($mall_id, 'order'); $order['payment_expire_time'] = $order_setting['payment_expire_time'] ?? 30; $order['auto_receiving_time'] = $order_setting['auto_receiving_time'] ?? 14; // 获取订单详情的状态文字描述 $order['status_text'] = OrderStatusEnum::getApiStatus($order['status'], $order['shipping_type']); $order['status'] == OrderStatusEnum::NOT_PAY && $order['status_text']['desc'] = $order['payment_expire_time'] . $order['status_text']['desc']; $order['status'] == OrderStatusEnum::SHIPMENTS && $order['status_text']['desc'] = $order['auto_receiving_time'] . $order['status_text']['desc']; // 公共调用 $order = GlobalInvoke::exec(GlobalInvoke::ORDER_DETAIL, $mall_id, [ 'order' => $order, 'mall_id' => $mall_id, ]) ?: $order; // $order['store'] = $order['happiness_store']; $order['clerk_code'] = $clerk_code; $order['store_name'] = $order['happiness_store']['store_name']; $order['clerk_code_pre'] = ClerkEnum::HAPPINESS_CLERK_CODE_PRE; return $order; case "post": //获取订单数据 $order = Order::getOne([ ['mall_id' => $params['mall_id']], ['clerk_code' => $params['clerk_code']], ['status' => StatusEnum::ENABLED] ], true, ['detail']); if (empty($order)) throw new Exception('不存在该订单'); $store_order = HappinessOrder::getOne([ ['mall_id' => $params['mall_id']], ['order_id' => $order['id']], ], true); if (empty($store_order)) throw new Exception('不存在该门店订单'); $params['store_id'] = !empty($params['store_id']) ? $params['store_id'] : $store_order['store_id']; $store = HappinessStore::getOne([['id' => $params['store_id']]], true, [], false, 'id,user_id,balance,logo_img,store_name'); $user_id = $params['user_id']; $storeService = new StoreService(); $storeService->mall_id = $params['mall_id']; $storeService->store_id = $params['store_id']; $params['clerk_id'] = $storeService->getClerkIdByUserId($user_id, true); $rse = HappinessClerk::getOne([['mall_id' => $params['mall_id']], ['user_id' => $user_id], ['status' => StatusEnum::ENABLED],['store_id' => $params['store_id']]]); if (empty($rse)) throw new \Exception('你不是核销员'); $params['store_id'] = $rse['store_id']; $rse = HappinessClerkLog::setData($params); if(!$rse) { throw new \Exception(HappinessClerkLog::getStaticError()); } $extra = ['pay_money' => $order['pay_money'], 'order_money' => $order['pay_money'], 'num' => array_sum(array_column($order['detail'], 'num')), 'order_id' => $order['id'], 'order_no' => $order['order_no']]; //获取商品 $goods_ids = array_column($order['detail'], 'goods_id'); $goods_data = Goods::getOne([ ['mall_id' => $params['mall_id']], ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]], ['id' => $goods_ids] ], true); $clerk_params = [ 'mall_id' => $params['mall_id'], 'user_id' => $user_id, 'mall_logo' => $store['logo_img'], 'mall_name' => $store['store_name'], 'clerk_code' => $clerk_code, 'type' => $clerk_code_pre, 'status' => StatusEnum::ENABLED, 'pic' => $goods_data['cover_pic'], 'extra' => json_encode($extra), ]; $log_res = ClerkLog::setData($clerk_params); return $rse; } break; default: return []; } } public static function clerkDetail($params) { if (empty($params['clerk_log_id']) || empty($params['mall_id']) || empty($params['user_id']) || empty($params['type'])) { return []; } $clerk_code_pre = $params['type']; switch ($clerk_code_pre) { // case ClerkEnum::O2O_SELF_PICKUP_ORDERS_CLERK_CODE_PRE: // return StoreOrder::getClerkLogDetail($params); // case ClerkEnum::ELECTRON_COUPON_CLERK_CODE_PRE: // if (!MallAddons::isInstall($params['mall_id'], 'ElectronCoupon')) { // return []; // } // $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]); // $params['code'] = $clerk_log_model['clerk_code']; // $extra = json_decode($clerk_log_model['extra'],true); // $e_coupon = ElectronCoupon::findOne(['id' => $extra['e_coupon_id']]); // $data['pic'] = $e_coupon['pic']; // $data['name'] = $e_coupon['name']; // $data['money'] = $e_coupon['price']; // return $data; // case ClerkEnum::O2O_STORE_CLERK_COUPON_CODE_PRE: // $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]); // $extra = json_decode($clerk_log_model['extra'],true); // $coupon_user = StoreVerificationCouponsUser::findOne(['mall_id' => $params['mall_id'], 'clerk_code' => $extra['store_verification_coupons_user_id']]); // if (empty($coupon_user)) { // throw new \Exception('核销券不存在'); // } // $coupon = StoreVerificationCoupons::findOne(['id' => $coupon_user['coupon_id'], 'status' => StatusEnum::ENABLED]); // if (empty($coupon)) { // throw new \Exception('核销券不存在或已删除'); // } // $store = Store::findOne($coupon_user['store_id']); // $returnData = []; // $returnData['detail'] = [ // 'name' => $coupon['name'], // 'num' => $coupon_user['num'], // 'used_num' => $coupon_user['used_num'], // 'logo_img' => $store['logo_img'], // 'store_name' => $store['store_name'], // 'start_at' => date('Y-m-d H:i:s', $coupon['start_at']), // 'end_at' => date('Y-m-d H:i:s', $coupon['end_at']), // ]; // return $returnData; // case ClerkEnum::PLATFORM_ORDER_BY_O2O_STORE_CLERK_CODE_PRE: // $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]); // $extra = json_decode($clerk_log_model['extra'],true); // $clerk_detail = PlatformStoreClerkOrderDetail::find()->where(['id'=>$extra['platform_store_clerk_order_detail_id']])->asArray()->one(); // if (!$clerk_detail) { // throw new \Exception('该订单不存在'); // } // $params['order_id'] = $clerk_detail['order_id']; // $params['goods_id'] = $clerk_detail['goods_id']; // $params['order_detail_id'] = $clerk_detail['order_detail_id']; // $params['clerk_code'] = $clerk_log_model['clerk_code']; // return StoreClerkLog::getPlatformStoreOrderDetail($params); case ClerkEnum::HAPPINESS_CLERK_CODE_PRE: $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]); if (empty($clerk_log_model)) return []; $clerk_log_model['extra'] = json_decode($clerk_log_model['extra'], true); $params['order_no'] = $clerk_log_model['extra']['order_no']; return HappinessClerkLog::getPlatformStoreOrderDetail($params); break; default: return []; } } }