Quellcode durchsuchen

接入 deploy-web

kulley vor 7 Jahren
Ursprung
Commit
b1be2a8d19

+ 132 - 18
src/app/basicVersion/exampleShow/DeployCloudChoose.js

@@ -5,6 +5,9 @@ import {graphqlUrl} from "../../../config";
 import {SHOW_CLOUD} from "../../../gql";
 import {request} from 'graphql-request'
 import axios from 'axios';
+import {deployAll} from "../../../config";
+import {ADD_APIGWPATH, ADD_APIGROUP, ADD_DEPLOY, ADD_PROJECT} from "../../../gql";
+import {idGen, pushPostfix, removeSpace, shiftPrefix} from "../../../func";
 
 const {Content} = Layout;
 axios.defaults.withCredentials = true;
@@ -14,7 +17,8 @@ class DeployCloudChoose extends Component {
         super();
         this.state = {
             userID: 'demo',
-            secretId: '',
+            cloudID: 'tencent_CloudID',
+            secretID: '',
             secretKey: '',
             appId: '',
             disabled: false
@@ -34,7 +38,8 @@ class DeployCloudChoose extends Component {
                         switch (cloud.cloudName) {
                             case 'tencent':
                                 this.setState({
-                                    secretId: cloud.secretId,
+                                    cloudID: cloud.id,
+                                    secretID: cloud.secretId,
                                     secretKey: cloud.secretKey,
                                     appId: cloud.appId
                                 });
@@ -59,10 +64,10 @@ class DeployCloudChoose extends Component {
         if (this.props.location && this.props.location.state) {
             switch (this.props.location.state.schemaID) {
                 case 'order_schemaID':
-                    bucketName = 'order';
+                    bucketName = 'appointment';
                     break;
                 case 'ecommerce_schemaID':
-                    bucketName = 'ec';
+                    bucketName = 'e-commerce';
                     break;
                 default:
                     break;
@@ -71,36 +76,145 @@ class DeployCloudChoose extends Component {
         if (bucketName === '') {
             console.log('state, 没有传值');
         } else {
+            let _this = this;
+
             // 开始调用
             console.log('开始调用');
             this.setState({
                 disabled: true
             });
-            let _this = this;
-            axios.post('http://deploy.ioobot.cn/api/deploy-all',
+
+            let now = new Date().getTime(),
+                functionName = this.state.userID + '_' + bucketName.substr(0, 2) + '_' + now,
+                serviceName = this.state.userID + '_' + bucketName.substr(0, 2) + '_' + now,
+                resources = [`${bucketName}/schema.edn`, `${bucketName}/resolve-map.edn`, `${bucketName}/mongodb/mongo-config.edn`, `${bucketName}/mongodb/deploy-conf.edn`];
+
+            console.log(now, functionName, serviceName, resources);
+            axios.post(deployAll,
                 {
-                    'fc-name': this.state.userID + new Date().getTime(),
+                    'fc-name': functionName,
                     'bucket': 'native-fc',
                     'object-file': 'fc-only.zip',
                     'res-bucket': 'case',
-                    'resources': '["appointment/schema.edn" "appointment/resolve-map.edn" "appointment/mongodb/mongo-config.edn"  "appointment/mongodb/deploy-conf.edn"]',
-                    'service-name': this.state.userID + new Date().getTime(),
+                    'resources': resources,
+                    'service-name': serviceName,
                     'path': "/*"
                 })
                 .then(function (response) {
-                    _this.setState({
-                        disabled: false
-                    });
-                    _this.props.changeTabBar('my-deploy');
-                    _this.props.history.push({
-                        pathname: `/common/deploy`,
-                        state: {}
-                    });
+                    console.log(response);
+                    // 处理数据
+                    let result = response['data']['apigw-result'];
+                    let apiData = result['api-info'];
+                    let serviceData = result['service-info'];
+
+                    // 存数据
+                    let pathID = idGen('path'),
+                        groupID = idGen('group'),
+                        deployID = idGen('deploy'),
+                        projectID = idGen('project');
+
+                    let {apiId, path, method} = apiData;
+                    let {serviceName, serviceId, subDomain} = serviceData;
+
+                    let {userID, cloudID} = _this.state;
+
+                    let pathVarObj = {
+                        id: idGen('path'),
+                        user_id: userID,
+                        apiGWGroup_id: pathID,
+                        deploy_id: deployID,
+                        apiGWName: functionName,
+                        requestMethod: method,
+                        apiGWPath: path,
+                        apiId: apiId,
+                        apiGWDesc: '',
+                        serviceType: 'SCF',
+                        timeout: 300,
+                        createdAt: now,
+                        updatedAt: ''
+                    };
+
+                    let projectVarObj = {
+                        id: projectID,
+                        projectType: 'case',
+                        cloud_id: cloudID,
+                        user_id: userID,
+                        projectName: functionName,
+                        database_id: '',
+                        apiGWGroup_id: '',
+                        deploy_id: '',
+                        case_id: '',
+                        wxConfig_id: '',
+                        schema_id: '',
+                        createdAt: now,
+                        updatedAt: '',
+                        projectStatus: 'deployed'
+                    };
+
+                    let groupVarObj = {
+                        id: groupID,
+                        cloud_id: cloudID,
+                        user_id: userID,
+                        userStatus: '',
+                        userDomain: '',
+                        groupName: serviceName,
+                        frontType: '',
+                        region: '',
+                        environmentName: '',
+                        defaultDomain: subDomain,
+                        status: '',
+                        serviceId: serviceId,
+                        createdAt: now,
+                        updatedAt: ''
+                    };
+
+                    let deployVarObj = {
+                        id: deployID,
+                        cloud_id: cloudID,
+                        functionName,
+                        cosObjectName: '',
+                        region: '',
+                        cosBucketRegion: '',
+                        description: '',
+                        cosBucketName: '',
+                        vpcId: '',
+                        subnetId: '',
+                        memorySize: 512,
+                        timeout: 300,
+                        handler: '',
+                        serviceName: "",
+                        fc_id: '',
+                        createdAt: now,
+                        updatedAt: ''
+                    };
+
+                    let add_apigwpath = request(graphqlUrl, ADD_APIGWPATH, pathVarObj),
+                        add_project = request(graphqlUrl, ADD_PROJECT, projectVarObj),
+                        add_apigroup = request(graphqlUrl, ADD_APIGROUP, groupVarObj),
+                        add_deploy = request(graphqlUrl, ADD_DEPLOY, deployVarObj);
+
+                    Promise.all([add_apigwpath, add_project, add_apigroup, add_deploy])
+                        .then(value => {
+                            console.log(value);
 
+                            // 展示数据
+                            _this.setState({
+                                disabled: false
+                            });
+                            _this.props.changeTabBar('my-deploy');
+                            _this.props.history.push({
+                                pathname: `/common/deploy`,
+                                state: {
 
+                                }
+                            });
+                        })
+                        .catch(err => {
+                            console.log(err);
+                        });
                 })
                 .catch(function (error) {
-                    console.log(error);
+                    console.log('axios error', error);
                 });
         }
     }

+ 3 - 1
src/app/developVersion/graphqlService/component/schema/Create.js

@@ -56,12 +56,14 @@ class Create extends Component {
             apiGWGroup_id: '',
             projectName: removeSpace(schemaName),
             deploy_id: '',
+            case_id: '',
             projectId,
             projectType: 'graphql',
             cloud_id: '',
             user_id: userID,
             wxConfig_id: '',
-            schema_id: schemaId
+            schema_id: schemaId,
+            projectStatus: 'created'
         };
 
         this.setState({

+ 1 - 0
src/app/developVersion/graphqlService/component/schema/Schema.jsx

@@ -540,6 +540,7 @@ class CopySchemaButton extends Component {
             apiGWGroup_id: '',
             projectName,
             deploy_id: '',
+            case_id: '',
             projectId,
             projectType: 'graphql',
             cloud_id: '',

+ 1 - 0
src/app/developVersion/wechatService/wxCreate/WxCreate.js

@@ -82,6 +82,7 @@ class WxCreate extends Component {
             user_id: userID,
             wxConfig_id: wxConfigId,
             schema_id: '',
+            case_id: '',
             projectStatus: 'created'
         };
 

+ 5 - 1
src/config.js

@@ -37,6 +37,9 @@ const removeAPI = backendGQ + '/removeapi';
 // 通过在该数组中添加 userID,可以管理 trialcase 的增删改查
 const manageUsers = ['xy_1_je9{d\'\'_32sD+'];
 
+// fc 配置
+const deployAll = 'http://deploy.ioobot.cn/api/deploy-all';
+
 export {
     getIdUrl,
     loginUrl,
@@ -48,5 +51,6 @@ export {
     graphqlUrl,
     manageUsers,
     removeFC,
-    removeAPI
+    removeAPI,
+    deployAll
 }

+ 28 - 3
src/gql.js

@@ -217,7 +217,7 @@ const UPDATE_SCHEMA_PROJECT_NAME = `
 
 const ADD_PROJECT_AND_SCHEMA = `
              mutation ADD_PROJECT_AND_SCHEMA($schemaId: ID!, $user_id: ID!, $schemaName: String!, $schemaData: String!, $schemaCreatedAt: String, $schemaUpdatedAt: String, $schemaState: String, $reference: String,
-                 , $projectStatus: String, $projectCreatedAt: String, $projectUpdatedAt: String, $database_id: ID, $apiGWGroup_id: ID, $projectName: String, $deploy_id: ID, $projectId: ID!, $projectType: String, $cloud_id: ID, $user_id: ID, $wxConfig_id: ID, $schema_id: ID) {
+                 , $projectStatus: String, $projectCreatedAt: String, $projectUpdatedAt: String, $database_id: ID, $case_id: ID, $apiGWGroup_id: ID, $projectName: String, $deploy_id: ID, $projectId: ID!, $projectType: String, $cloud_id: ID, $user_id: ID, $wxConfig_id: ID, $schema_id: ID) {
                      create_schema(
                          id: $schemaId,
                          user_id: $user_id,
@@ -249,6 +249,7 @@ const ADD_PROJECT_AND_SCHEMA = `
                          wxConfig_id: $wxConfig_id,
                          schema_id: $schema_id
                          projectStatus: $projectStatus
+                         case_id: $case_id
                      ) {
                          projectStatus
                          updatedAt
@@ -274,9 +275,22 @@ const ADD_PROJECT_AND_SCHEMA = `
                  }
              `;
 
+const ADD_PROJECT = `
+            mutation createproject($updatedAt: String, $database_id: ID, $apiGWGroup_id: ID, $case_id: ID, $createdAt: String, $projectStatus: String, $projectName: String, $deploy_id: ID, $notification_id: ID, $id: ID!, $projectType: String, $cloud_id: ID, $user_id: ID, $wxConfig_id: ID, $schema_id: ID) {
+                    createproject: create_project(updatedAt: $updatedAt database_id: $database_id case_id: $case_id apiGWGroup_id: $apiGWGroup_id createdAt: $createdAt projectStatus: $projectStatus projectName: $projectName deploy_id: $deploy_id notification_id: $notification_id id: $id projectType: $projectType cloud_id: $cloud_id user_id: $user_id wxConfig_id: $wxConfig_id schema_id: $schema_id) {
+                             projectStatus
+                             updatedAt
+                             createdAt   
+                             projectName
+                             id
+                             projectType
+                    }
+            }
+`;
+
 const ADD_PROJECT_AND_WX = `
              mutation ADD_PROJECT_AND_WX($wxUpdatedAt: String, $mch_id: String, $appName: String, $notify_url: String, $appSecret: String, $wxCreatedAt: String, $appID: String, $token: String, $spbill_create_ip: String, $enter_url: String, $wxConfigId: ID!, $pay_api_key: String, $user_id: ID, $body: String, $welcome_words: String, $attach: String
-                 , $projectStatus: String, $projectCreatedAt: String, $projectUpdatedAt: String, $database_id: ID, $apiGWGroup_id: ID, $projectName: String, $deploy_id: ID, $projectId: ID!, $projectType: String, $cloud_id: ID, $user_id: ID, $wxConfig_id: ID, $schema_id: ID) {
+                 , $projectStatus: String, $projectCreatedAt: String, $projectUpdatedAt: String, $database_id: ID, $case_id: ID, $apiGWGroup_id: ID, $projectName: String, $deploy_id: ID, $projectId: ID!, $projectType: String, $cloud_id: ID, $user_id: ID, $wxConfig_id: ID, $schema_id: ID) {
                      create_wxConfig(
                          createdAt: $wxCreatedAt 
                          updatedAt: $wxUpdatedAt
@@ -324,6 +338,7 @@ const ADD_PROJECT_AND_WX = `
                          wxConfig_id: $wxConfig_id,
                          schema_id: $schema_id
                          projectStatus: $projectStatus
+                         case_id: $case_id
                      ) {
                          projectStatus
                          updatedAt
@@ -387,6 +402,9 @@ const CASE_AND_PROJECT = `
                     createdAt
                     projectName
                     id
+                    case_id {
+                        id
+                    }
                     projectType
                     wxConfig_id {
                         id
@@ -412,6 +430,9 @@ const SHOW_PROJECT = `
                      createdAt
                      projectName
                      id
+                     case_id {
+                        id
+                     }
                      projectType
                      wxConfig_id {
                          id
@@ -834,6 +855,9 @@ const GET_PROJECT = `
                       handler
                       functionName
                     }
+                    case_id {
+                        id
+                    }
                     id
                     projectType
                     cloud_id {
@@ -1046,5 +1070,6 @@ export {
     UPDATE_PROJECT_ONLY_STATUS,
     ADD_NOTIFICATION,
     UPDATE_NOTIFICATION,
-    SHOW_CASE
+    SHOW_CASE,
+    ADD_PROJECT
 }