db->beginTransaction(); try { $mall_id = $order['mall_id']; $user_id = $order['user_id']; $upgrade_uid = 0; // 获取身份 $model = $identity_obj::findOne(['mall_id' => $mall_id, 'user_id' => $user_id, 'status' => StatusEnum::ENABLED]); if (empty($model)) { $model = new $identity_obj; $model->mall_id = $mall_id; $model->user_id = $user_id; $model->level = 0; $model->upgrade_level_at = 0; $model->loadDefaultValues(); } $where = []; $where[] = ['mall_id' => $mall_id]; $where[] = ['status' => StatusEnum::ENABLED]; $where[] = ['>', 'level' , $model->level]; $params = []; $params['where'] = $where; $params['order'] = $order_by; // 获取等级 $level_list = $level_obj::lists($params); $can_upgrade_level = 0; $upgrade_status = 0; $flag = false; if (!empty($level_list)) { foreach ($level_list as $level_arr) { $can_upgrade_level = $level_arr['level']; //开启购买升级商品 if ($level_arr['store_cashier_order_is_up']&&$level_arr['is_auto_upgrade']) { $upgrade_status = UpgradeEnum::UPGRADE_STATUS_STORE_CASHIER_ORDER; $flag = true; break; } //插件等级是否只能一级一级往上升级($order_by = 'level asc') if($is_open_level_limit){ break; } } var_dump($flag); if ($flag) { $model->level = $can_upgrade_level; $model->upgrade_status = $upgrade_status; $model->upgrade_level_at = time(); $model->upgrade_boss_at = !$model->upgrade_boss_at && $model->level >= 2 ? $model->upgrade_level_at : 0; if (!$model->save()) throw new Exception("{用户ID:$user_id},订单ID:{$order['id']},". AddonsEnum::getAddonsNameMap($identity_desc) ."门店收银台订单升级失败"); $upgrade_uid = $user_id; } } $trans->commit(); return $upgrade_uid; } catch (Exception $e) { $trans->rollBack(); $exception = FormatHelper::exception($e, AddonsEnum::getAddonsNameMap($identity_desc) . "购物升级失败"); $this->setError($exception); return false; } } }