gaoshuaixing 3 years ago
parent
commit
173aad31f9

+ 0 - 0
app/lang/zh.json → app/common/constants.js


+ 0 - 10
app/const/statusCode.js

@@ -1,10 +0,0 @@
-'use strict';
-
-let StatusCode;
-(function(StatusCode) {
-  // 系统
-  StatusCode[(StatusCode.SUCCESS = 0)] = 'SUCCESS';
-  StatusCode[(StatusCode.SYS_API_ERROR = 10001)] = 'SYS_API_ERROR' // api错误
-})(StatusCode || (StatusCode = {}));
-
-module.exports = StatusCode;

+ 0 - 8
app/const/storageKey.js

@@ -1,8 +0,0 @@
-'use strict';
-
-module.exports = {
-  EGG_CONFIG: 'egg_config',
-  ELECTRON_IPC: 'electron_ipc',
-  PREFERENCES: 'preferences',
-  TEST_DATA: 'test_data'
-};

+ 5 - 1
app/controller/example.js

@@ -4,6 +4,7 @@ const BaseController = require('./base');
 const os = require('os');
 const fs = require('fs');
 const path = require('path');
+const Utils = require('ee-core').Utils;
 
 class ExampleController extends BaseController {
 
@@ -71,10 +72,13 @@ class ExampleController extends BaseController {
     self.sendSuccess(data);
   }
 
+  /**
+   * 上传文件
+   */  
   async uploadFile() {
     const self = this;
     const { ctx, service } = this;
-    let tmpDir = service.storage.getStorageDir();
+    let tmpDir = Utils.getLogDir();
     const file = ctx.request.files[0];
 
     try {

+ 0 - 4
app/lang/en.json

@@ -1,4 +0,0 @@
-{
-  "SUCCESS": "",
-  "SYS_API_ERROR": ""
-}

+ 2 - 2
app/router/index.js

@@ -6,10 +6,10 @@
 module.exports = app => {
   const { router, controller } = app;
   // home
-  router.get('/', controller.v1.home.index);
+  router.get('/', controller.home.index);
 
   // html
-  router.get('/home', controller.v1.home.index);
+  router.get('/home', controller.home.index);
 
   // 引入其他路由
   require('./example')(app);

+ 0 - 22
app/schedule/test.js

@@ -1,22 +0,0 @@
-'use strict';
-
-const Subscription = require('egg').Subscription;
-
-/**
- * test
- */
-
-class Test extends Subscription {
-  static get schedule() {
-    return {
-      interval: '360m',
-      type: 'worker',
-      immediate: false,
-      disable: true,
-    };
-  }
-
-  async subscribe() {}
-}
-
-module.exports = Test;

+ 13 - 15
app/service/example.js

@@ -13,22 +13,19 @@ class ExampleService extends Service {
   }
 
   async openLocalDir(dir) {
-    const self = this;
 
-    await self.ipcCall('example.openDir', dir);
+    await socketClient.call('controller.example.openDir', dir);
 
     return true;
   }
 
   async executeJS(str) {
-    const self = this;
-    let result = await self.ipcCall('example.executeJS', str);
+    let result = await socketClient.call('controller.example.executeJS', str);
     return result;
   }
 
   async setShortcut(shortcutStr) {
-    const self = this;
-    let result = await self.ipcCall('example.setShortcut', shortcutStr);
+    let result = await socketClient.call('controller.example.setShortcut', shortcutStr);
     return result;
   }
 
@@ -70,31 +67,33 @@ class ExampleService extends Service {
   }
 
   async autoLaunchEnable() {
-    const callResult = await this.ipcCall('example.autoLaunchEnable');
+    const callResult = await socketClient.call('controller.example.autoLaunchEnable');
 
     return callResult.data;
   }
 
   async autoLaunchDisable() {
-    const callResult = await this.ipcCall('example.autoLaunchDisable');
+    const callResult = await socketClient.call('controller.example.autoLaunchDisable');
 
     return callResult.data;
   }
 
   async autoLaunchIsEnabled() {
-    const callResult = await this.ipcCall('example.autoLaunchIsEnabled');
+    const callResult = await socketClient.call('controller.example.autoLaunchIsEnabled');
 
     return callResult.data;
   }
 
   async openSoftware(softName) {
-    const callResult = await this.ipcCall('example.openSoftware', softName);
+    const callResult = await socketClient.call('controller.example.openSoftware', softName);
     
     return callResult.data;
   }
 
   async selectDir() {
-    const result = await this.ipcCall('example.selectDir');
+
+    const result = await socketClient.call('controller.example.selectDir');
+    console.log('selectDir: result:', result);
     if (!result.data) {
       return '';
     }
@@ -103,21 +102,20 @@ class ExampleService extends Service {
   }
 
   async messageShow() {
-    await this.ipcCall('example.messageShow');
+    await socketClient.call('controller.example.messageShow');
 
     return true;
   } 
 
   async messageShowConfirm() {
-    await this.ipcCall('example.messageShowConfirm');
+    await socketClient.call('controller.example.messageShowConfirm');
 
     return true;
   }   
 
   async loadExtension(filePath) {
-    const self = this;
 
-    await self.ipcCall('example.loadExtension', filePath);
+    await socketClient.call('controller.example.loadExtension', filePath);
 
     return true;
   }

+ 59 - 1
electron/controller/example.js

@@ -1,11 +1,22 @@
 'use strict';
 
+const _ = require('lodash');
 const Controller = require('ee-core').Controller;
-const { app } = require('electron');
+const {app, dialog, BrowserWindow, BrowserView, Notification, powerMonitor, screen, nativeTheme} = require('electron');
 
+/**
+ * 示例控制器
+ * @class
+ */
 class ExampleController extends Controller {
 
   /**
+   * 所有方法接收两个参数
+   * args 前端传的参数
+   * @param event - IpcMainEvent 文档:https://www.electronjs.org/docs/latest/api/structures/ipc-main-event
+   */
+
+  /**
    * test
    */
   async test (args) {
@@ -33,6 +44,53 @@ class ExampleController extends Controller {
     // event.reply(`${channel}`, '另外的数据');
     return reply;
   }
+
+  /**
+   * 消息提示对话框
+   */
+  messageShow () {
+    dialog.showMessageBoxSync({
+      type: 'info', // "none", "info", "error", "question" 或者 "warning"
+      title: '自定义标题-message',
+      message: '自定义消息内容',
+      detail: '其它的额外信息'
+    })
+  
+    return '打开了消息框';
+  }
+
+  /**
+   * 消息提示与确认对话框
+   */
+  messageShowConfirm () {
+    const res = dialog.showMessageBoxSync({
+      type: 'info',
+      title: '自定义标题-message',
+      message: '自定义消息内容',
+      detail: '其它的额外信息',
+      cancelId: 1, // 用于取消对话框的按钮的索引
+      defaultId: 0, // 设置默认选中的按钮
+      buttons: ['确认', '取消'], // 按钮及索引
+    })
+    let data = (res === 0) ? '点击确认按钮' : '点击取消按钮';
+  
+    return data;
+  }
+
+  /**
+   * 选择目录
+   */
+  selectDir () {
+    const filePaths = dialog.showOpenDialogSync({
+      properties: ['openDirectory', 'createDirectory']
+    });
+    console.log('[example] [selectDir] filePaths:', filePaths);
+    if (_.isEmpty(filePaths)) {
+      return null
+    }
+
+    return filePaths[0];
+  }  
 }
 
 module.exports = ExampleController;

+ 27 - 17
frontend/src/api/main.js

@@ -1,28 +1,38 @@
 import request from '@/utils/request'
 
-const mainApi = {
-  openDir: '/api/v1/example/openLocalDir',
-  uploadFile: '/api/v1/example/uploadFile',
-  executeJS: '/api/v1/example/executeJS',
-  setShortcut: '/api/v1/example/setShortcut',
-  autoLaunchEnable: '/api/v1/example/autoLaunchEnable',
-  autoLaunchDisable: '/api/v1/example/autoLaunchDisable',
-  autoLaunchIsEnabled: '/api/v1/example/autoLaunchIsEnabled',
-  openSoftware: '/api/v1/example/openSoftware',
-  selectFileDir: '/api/v1/example/selectFileDir',
-  messageShow: '/api/v1/example/messageShow',
-  messageShowConfirm: '/api/v1/example/messageShowConfirm',
-  dbOperation: '/api/v1/example/dbOperation',
-  testElectronApi: '/api/v1/example/testElectronApi',
+const eggApiroute = {
+  openDir: '/api/example/openLocalDir',
+  uploadFile: '/api/example/uploadFile',
+  executeJS: '/api/example/executeJS',
+  setShortcut: '/api/example/setShortcut',
+  autoLaunchEnable: '/api/example/autoLaunchEnable',
+  autoLaunchDisable: '/api/example/autoLaunchDisable',
+  autoLaunchIsEnabled: '/api/example/autoLaunchIsEnabled',
+  openSoftware: '/api/example/openSoftware',
+  selectFileDir: '/api/example/selectFileDir',
+  messageShow: '/api/example/messageShow',
+  messageShowConfirm: '/api/example/messageShowConfirm',
+  dbOperation: '/api/example/dbOperation',
+  testElectronApi: '/api/example/testElectronApi',
+}
+
+const ipcApiRoute = {
+  messageShow: 'controller.example.messageShow',
+  messageShowConfirm: 'controller.example.messageShowConfirm',
 }
 
 /**
- * local api
+ * 访问egg api
  */
-export function localApi (uri, parameter) {
+const requestEggApi = (uri, parameter) => {
   return request({
-    url: mainApi[uri],
+    url: eggApiroute[uri],
     method: 'post',
     data: parameter
   })
+}
+
+export {
+  requestEggApi,
+  ipcApiRoute
 }

+ 3 - 3
frontend/src/views/base/db/Index.vue

@@ -132,7 +132,7 @@
   </div>
 </template>
 <script>
-import { localApi } from '@/api/main'
+import { requestEggApi } from '@/api/main'
 
 export default {
   data() {
@@ -156,7 +156,7 @@ export default {
       const params = {
         action: 'all',
       }
-      localApi('dbOperation', params).then(res => {
+      requestEggApi('dbOperation', params).then(res => {
         if (res.code !== 0) {
           return false
         }
@@ -184,7 +184,7 @@ export default {
       if (ac == 'add' && this.name.length == 0) {
         self.$message.error(`请填写数据`);
       }
-      localApi('dbOperation', params).then(res => {
+      requestEggApi('dbOperation', params).then(res => {
         if (res.code !== 0) {
           return false
         }

+ 12 - 14
frontend/src/views/base/file/Index.vue

@@ -6,22 +6,20 @@
       </span>
     </div>  
     <div class="one-block-2">
-      <!-- dev调试时,action参数:请填写你本地完整的api地址,如:http://localhost:7068/api/v1/example/uploadFile -->
+      <!-- dev调试时,action参数:请填写你本地完整的api地址,如:http://localhost:7068/api/example/uploadFile -->
       <a-upload-dragger
         name="file"
         :multiple="true"
         :action="action_url"
-        @change="handleChange"
+        @change="uploadStatus"
       >
         <p class="ant-upload-drag-icon">
           <a-icon type="inbox" />
         </p>
         <p class="ant-upload-text">
-          Click or drag file to this area to upload
+          点击 或 拖动到此处
         </p>
         <p class="ant-upload-hint">
-          Support for a single or bulk upload. Strictly prohibit from uploading company data or other
-          band files
         </p>
       </a-upload-dragger>
     </div>
@@ -84,7 +82,7 @@
   </div>
 </template>
 <script>
-import { localApi } from '@/api/main'
+import { requestEggApi, ipcApiRoute } from '@/api/main'
 
 const fileList = [
   {
@@ -109,7 +107,7 @@ export default {
   data() {
     return {
       file_list: fileList,
-      action_url: process.env.VUE_APP_API_BASE_URL + '/api/v1/example/uploadFile',
+      action_url: process.env.VUE_APP_API_BASE_URL + '/api/example/uploadFile',
       image_info: [],
       num: 0,
 			dir_path: "D:\\www\\xing\\electron-egg",
@@ -120,7 +118,7 @@ export default {
       const params = {
         'id': id
       }
-      localApi('openDir', params).then(res => {
+      requestEggApi('openDir', params).then(res => {
         if (res.code !== 0) {
           return false
         }
@@ -128,7 +126,7 @@ export default {
         console.log('err:', err)
       })
     },
-		handleChange(info) {
+		uploadStatus(info) {
       const status = info.file.status;
       if (status !== 'uploading') {
         console.log(info.file);
@@ -153,7 +151,7 @@ export default {
       }
     },
     selectDir() {
-      localApi('selectFileDir', {}).then(res => {
+      requestEggApi('selectFileDir', {}).then(res => {
         if (res.code !== 0) {
           return false
         }
@@ -167,7 +165,7 @@ export default {
       const self = this;
       console.log('[messageShow] type:', type)
       if (type == 'http') {
-        localApi('messageShow', {}).then(res => {
+        requestEggApi('messageShow', {}).then(res => {
           if (res.code !== 0) {
             return false
           }
@@ -176,7 +174,7 @@ export default {
           self.$message.error(err + '异常')
         })
       } else { 
-        self.$ipcCallMain('example.messageShow', '').then(r => {
+        self.$ipcCallMain(ipcApiRoute.messageShow, '').then(r => {
           self.$message.info(r);
         })
       }
@@ -185,7 +183,7 @@ export default {
       const self = this;
       console.log('[messageShowConfirm] type:', type)
       if (type == 'http') {
-        localApi('messageShowConfirm', {}).then(res => {
+        requestEggApi('messageShowConfirm', {}).then(res => {
           if (res.code !== 0) {
             return false
           }
@@ -194,7 +192,7 @@ export default {
           self.$message.error(err + '异常')
         })
       } else {
-        self.$ipcCallMain('example.messageShowConfirm', '').then(r => {
+        self.$ipcCallMain(ipcApiRoute.messageShowConfirm, '').then(r => {
           self.$message.info(r);
         })
       }

+ 2 - 2
frontend/src/views/base/shortcut/Index.vue

@@ -36,7 +36,7 @@
   </div>
 </template>
 <script>
-import { localApi } from '@/api/main'
+import { requestEggApi } from '@/api/main'
 
 export default {
   components: {},
@@ -64,7 +64,7 @@ export default {
         name: '窗口最小化',
         cmd: shortcutStr
       }
-      localApi('setShortcut', params).then(res => {
+      requestEggApi('setShortcut', params).then(res => {
         if (res.code !== 0) {
           // this.$message.info('error')
           return false

+ 2 - 2
frontend/src/views/base/socket/Index.vue

@@ -43,7 +43,7 @@
   </div>
 </template>
 <script>
-import { localApi } from '@/api/main'
+import { requestEggApi } from '@/api/main'
 export default {
   data() {
     return {
@@ -75,7 +75,7 @@ export default {
       })
     },
     executeJSHandle(value) {
-      localApi('executeJS', {str: value}).then(res => {
+      requestEggApi('executeJS', {str: value}).then(res => {
         if (res.code == 0) {
           console.log(res.data);
         }

+ 2 - 2
frontend/src/views/base/software/Index.vue

@@ -22,7 +22,7 @@
   </div>
 </template>
 <script>
-import { localApi } from '@/api/main'
+import { requestEggApi } from '@/api/main'
 
 const data = [
   {
@@ -39,7 +39,7 @@ export default {
   },
   methods: {
     openSoft (id) {
-			localApi('openSoftware', {id:id}).then(res => {
+			requestEggApi('openSoftware', {id:id}).then(res => {
 				if (res.code !== 0) {
 					this.$message.info(res.msg)
 					return false

+ 4 - 4
frontend/src/views/base/system/Index.vue

@@ -22,7 +22,7 @@
   </div>
 </template>
 <script>
-import { localApi } from '@/api/main'
+import { requestEggApi } from '@/api/main'
 
 export default {
   data () {
@@ -35,7 +35,7 @@ export default {
   },
   methods: {
     autoLaunchInit () {
-      localApi('autoLaunchIsEnabled', {}).then(res => {
+      requestEggApi('autoLaunchIsEnabled', {}).then(res => {
         if (res.code !== 0) {
           return false
         }
@@ -49,7 +49,7 @@ export default {
         'checkStatus': checkStatus
       }
       if (checkStatus) {
-        localApi('autoLaunchEnable', params).then(res => {
+        requestEggApi('autoLaunchEnable', params).then(res => {
           if (res.code !== 0) {
             return false
           }
@@ -58,7 +58,7 @@ export default {
           console.log('err:', err)
         })
       } else {
-        localApi('autoLaunchDisable', params).then(res => {
+        requestEggApi('autoLaunchDisable', params).then(res => {
           if (res.code !== 0) {
             return false
           }

+ 2 - 2
frontend/src/views/base/testapi/Index.vue

@@ -11,7 +11,7 @@
   </div>
 </template>
 <script>
-import { localApi } from '@/api/main'
+import { requestEggApi } from '@/api/main'
 
 export default {
   data() {
@@ -24,7 +24,7 @@ export default {
       const params = {
         id: id
       }
-			localApi('testElectronApi', params).then(res => {
+			requestEggApi('testElectronApi', params).then(res => {
 				if (res.code !== 0) {
 					return false
 				}

+ 2 - 1
package.json

@@ -104,6 +104,7 @@
     "egg-cluster": "^1.27.1",
     "egg-cors": "^2.2.3",
     "egg-scripts": "^2.15.2",
-    "egg-view-ejs": "^2.0.1"
+    "egg-view-ejs": "^2.0.1",
+    "lodash": "^4.17.21"
   }
 }