diff --git a/.gitignore b/.gitignore index b64bbcf..dfa99d5 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,6 @@ !.gitkeep *.iml - # ember-try .node_modules.ember-try/ bower.json.ember-try diff --git a/server/.gitignore b/server/.gitignore index 9c192f2..d769958 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -7,4 +7,6 @@ target/ bin/ crm/src/main/resources/static/ crm/src/main/resources/application.properties +crm/src/main/resources/application.yml crm/src/main/resources/log4j2.xml +crm/src/main/resources/logback.xml diff --git a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java index 2d435e3..63c8705 100644 --- a/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java +++ b/server/crm/src/main/java/com/pudonghot/ambition/crm/service/support/ExportTaskServiceSupport.java @@ -69,6 +69,11 @@ public class ExportTaskServiceSupport val exportFile = customerService.exportCSV(employeeKey); val distDir = new File(new File(exportLocation), DateFormatUtils.format(now, "yyyyMMdd")); + + if (!distDir.exists()) { + distDir.mkdirs(); + } + FileUtils.moveFileToDirectory(exportFile, distDir, true); exportTask.setStatus(EnumExportTaskStatus.DONE); exportTask.setLocation(new File(distDir, exportFile.getName()).getPath()); diff --git a/server/crm/src/main/resources/application.yml b/server/crm/src/main/resources/application.yml deleted file mode 100644 index 5f428ab..0000000 --- a/server/crm/src/main/resources/application.yml +++ /dev/null @@ -1,46 +0,0 @@ -server: - port: 8088 - -spring: - jackson: - default-property-inclusion: NON_NULL - time-zone: GMT+8 - serialization: - write-dates-as-timestamps: true - fail-on-empty-beans: false - servlet: - multipart: - max-file-size: 512MB - max-request-size: 512MB - -datasource: - database-name: ambition-crm - host: 172.16.4.6 - password: MySQL2b||!2b - port: 3306 - username: root - -database: - backup-dir: d:/data/database_backups - restore-shell: /data/program/mysql-backup/bin/mysql_restore.sh - -file: - base-dir: /Users/donghuang/Documents/Workspaces/ambition-crm/files/ - base-path: http://127.0.0.1:1217/lm-f/ - -export: - location: d:/data/export - -tigon: - shiro: - session: - validation: - scheduler: - enabled: true - filter-chain: > - /auth/login=anon - /=anon - /index.html=anon - /assets/**=anon - /f/**=anon - /**=user diff --git a/server/crm/src/main/resources/application_prod.yml b/server/crm/src/main/resources/application_prod.yml index 4a2a995..c92a72d 100644 --- a/server/crm/src/main/resources/application_prod.yml +++ b/server/crm/src/main/resources/application_prod.yml @@ -32,12 +32,13 @@ file: base-dir: /data/program/lemo-crm/files base-path: http://116.62.189.211/f/ -shiro: - session: - timeout: 21600000 - validation: - scheduler: - enabled: true +tigon: + shiro: + session: + timeout: 21600000 + validation: + scheduler: + enabled: true filter-chain: > /auth/login=anon /=anon diff --git a/server/crm/src/main/resources/application_test.yml b/server/crm/src/main/resources/application_test.yml index 511bdbc..4a2a995 100644 --- a/server/crm/src/main/resources/application_test.yml +++ b/server/crm/src/main/resources/application_test.yml @@ -1,18 +1,47 @@ -datasource: - database-name: ambition_crm - host: 127.0.0.1 - password: 696@2^~)oZ@^#*Q - port: 3306 - username: root server: - port: 80 -shiro: - session: - validation: - scheduler: - enabled: true + port: 8100 + spring: - http: - multipart: - max-file-size: 1024MB - max-request-size: 1024MB + http: + multipart: + max-file-size: 1024MB + max-request-size: 1024MB + jackson: + default-property-inclusion: NON_NULL + time-zone: GMT+8 + serialization: + write-dates-as-timestamps: true + fail-on-empty-beans: false + servlet: + multipart: + max-file-size: 1024MB + max-request-size: 1024MB + +datasource: + database-name: ambition_crm + host: 127.0.0.1 + password: 696@2^~)oZ@^#*Q + port: 3306 + username: root + +database: + backup-dir: /data/program/mysql-backup/backup/ambition_crm + restore-shell: /data/program/mysql-backup/bin/mysql-restore.sh + +file: + base-dir: /data/program/lemo-crm/files + base-path: http://116.62.189.211/f/ + +shiro: + session: + timeout: 21600000 + validation: + scheduler: + enabled: true + filter-chain: > + /auth/login=anon + /=anon + /index.html=anon + /assets/**=anon + /f/**=anon + /**=user diff --git a/server/pom.xml b/server/pom.xml index 84f3f82..de9aabd 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -409,11 +409,11 @@ src/main/resources false - config_*.properties - application_*.properties - application_*.yaml - application_*.yml - log4j2_*.xml + application*.properties + application*.yaml + application*.yml + log4j2*.xml + logback*.xml @@ -425,11 +425,11 @@ **/*.txt - config_*.properties - application_*.properties - application_*.yaml - application_*.yml - log4j2_*.xml + application*.properties + application*.yaml + application*.yml + log4j2*.xml + logback*.xml diff --git a/web/app/components/ace-checkbox.js b/web/app/components/ace-checkbox.js index 85f92e8..a1ba0c8 100644 --- a/web/app/components/ace-checkbox.js +++ b/web/app/components/ace-checkbox.js @@ -1,5 +1,5 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ classNames: ['checkbox'] }); diff --git a/web/app/components/ace-login.js b/web/app/components/ace-login.js index d4f034a..3097032 100644 --- a/web/app/components/ace-login.js +++ b/web/app/components/ace-login.js @@ -1,7 +1,7 @@ -import Ember from 'ember'; +import Component from '@ember/component'; import $ from 'jquery'; -export default Ember.Component.extend({ +export default Component.extend({ classNames: ['container-fluid'], errors: {}, model: { diff --git a/web/app/components/date-cell.js b/web/app/components/date-cell.js index 2d42fb6..ea3b1db 100644 --- a/web/app/components/date-cell.js +++ b/web/app/components/date-cell.js @@ -1,7 +1,7 @@ -import Ember from 'ember'; +import Component from '@ember/component'; import { alias } from '@ember/object/computed'; -export default Ember.Component.extend({ +export default Component.extend({ tagName: 'span', value: alias('model'), format: 'YYYY-MM-DD H:mm:ss' diff --git a/web/app/components/form-content.js b/web/app/components/form-content.js index 7b9fd51..083ebb1 100644 --- a/web/app/components/form-content.js +++ b/web/app/components/form-content.js @@ -1,5 +1,5 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ classNames: ['page-content'] }); diff --git a/web/app/components/gender-cell.js b/web/app/components/gender-cell.js index e815f7a..4b22da0 100644 --- a/web/app/components/gender-cell.js +++ b/web/app/components/gender-cell.js @@ -1,5 +1,5 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ tagName: 'span' }); diff --git a/web/app/components/grid-header.js b/web/app/components/grid-header.js index 19bc333..6bcc8ce 100644 --- a/web/app/components/grid-header.js +++ b/web/app/components/grid-header.js @@ -1,6 +1,6 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ classNames: ['widget-header'], dropdownMenu: true, 'search-box': true diff --git a/web/app/components/home-board.js b/web/app/components/home-board.js index 33f867b..83ce237 100644 --- a/web/app/components/home-board.js +++ b/web/app/components/home-board.js @@ -1,7 +1,8 @@ import Ember from 'ember'; +import Component from '@ember/component'; import $ from 'jquery'; -export default Ember.Component.extend({ +export default Component.extend({ classNames: ['page-content', 'no-padding', 'desktop'], init() { let me = this; diff --git a/web/app/components/input-spinner.js b/web/app/components/input-spinner.js index 09b4712..a49564d 100644 --- a/web/app/components/input-spinner.js +++ b/web/app/components/input-spinner.js @@ -1,6 +1,7 @@ import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ step: 1, value: 0, classNames: ['ace-spinner', 'middle'], diff --git a/web/app/components/main-content.js b/web/app/components/main-content.js index 7b9fd51..083ebb1 100644 --- a/web/app/components/main-content.js +++ b/web/app/components/main-content.js @@ -1,5 +1,5 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ classNames: ['page-content'] }); diff --git a/web/app/components/modal-list-select.js b/web/app/components/modal-list-select.js index 926b613..bb93d73 100644 --- a/web/app/components/modal-list-select.js +++ b/web/app/components/modal-list-select.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ }); diff --git a/web/app/components/nav-list.js b/web/app/components/nav-list.js index 926b613..bb93d73 100644 --- a/web/app/components/nav-list.js +++ b/web/app/components/nav-list.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ }); diff --git a/web/app/components/query-criterion.js b/web/app/components/query-criterion.js index 674da41..3423d8b 100644 --- a/web/app/components/query-criterion.js +++ b/web/app/components/query-criterion.js @@ -1,6 +1,7 @@ -import Ember from 'ember'; +import { computed } from '@ember/object' +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ classNames: ['form-group'], optionsKeyMapping: { dateAdded: 'model.dateAddedList', @@ -12,7 +13,7 @@ export default Ember.Component.extend({ salesperson: 'model.salespersonList', status: 'model.statusList' }, - valOptions: Ember.computed('criterion.col', function() { + valOptions: computed('criterion.col', function() { let me = this; let optionsKey = me.get('optionsKeyMapping.' + me.get('criterion.col')); optionsKey && me.set('criterion.val', ''); diff --git a/web/app/components/sortable-list-item.js b/web/app/components/sortable-list-item.js index 2679646..344f340 100644 --- a/web/app/components/sortable-list-item.js +++ b/web/app/components/sortable-list-item.js @@ -1,6 +1,6 @@ -import Ember from 'ember'; +import Component from '@ember/component'; -export default Ember.Component.extend({ +export default Component.extend({ tagName: 'li', classNames: ['clearfix'], classNameBindings: ['selected:selected'], diff --git a/web/app/components/week-goal-completion-rate.js b/web/app/components/week-goal-completion-rate.js index e359741..b2eed37 100644 --- a/web/app/components/week-goal-completion-rate.js +++ b/web/app/components/week-goal-completion-rate.js @@ -1,7 +1,8 @@ -import Ember from 'ember'; +import { computed } from '@ember/object' +import Component from '@ember/component'; -const WeekGoalCompletionRateComponent = Ember.Component.extend({ - rate: Ember.computed('goal', 'goal.goal', 'goal.done', function() { +const WeekGoalCompletionRateComponent = Component.extend({ + rate: computed('goal', 'goal.goal', 'goal.done', function() { let me = this; let goal = me.get('goal.goal'); let done = me.get('goal.done'); diff --git a/web/app/components/week-goal/completion-rate.js b/web/app/components/week-goal/completion-rate.js index 28e0551..205cb58 100644 --- a/web/app/components/week-goal/completion-rate.js +++ b/web/app/components/week-goal/completion-rate.js @@ -1,14 +1,15 @@ -import Ember from 'ember'; +import { computed } from '@ember/object' +import Component from '@ember/component'; -const WeekGoalCompletionRateComponent = Ember.Component.extend({ +const WeekGoalCompletionRateComponent = Component.extend({ tagName: '', 'completed-icon': true, 'timeout-icon': true, - completed: Ember.computed('goal', 'goal.goal', 'goal.done', function() { + completed: computed('goal', 'goal.goal', 'goal.done', function() { let me = this; return me.get('goal.goal') > 0 && me.get('goal.goal') == me.get('goal.done'); }), - rate: Ember.computed('goal', 'goal.goal', 'goal.done', function() { + rate: computed('goal', 'goal.goal', 'goal.done', function() { let me = this; let goal = me.get('goal.goal'); let done = me.get('goal.done'); diff --git a/web/app/components/week-goal/total-completion-rate.js b/web/app/components/week-goal/total-completion-rate.js index 3945373..a374808 100644 --- a/web/app/components/week-goal/total-completion-rate.js +++ b/web/app/components/week-goal/total-completion-rate.js @@ -1,19 +1,20 @@ -import Ember from 'ember'; +import { computed } from '@ember/object' +import Component from '@ember/component'; -const WeekGoalTotalCompletionRateComponent = Ember.Component.extend({ +const WeekGoalTotalCompletionRateComponent = Component.extend({ tagName: '', goals: [], - completed: Ember.computed('goals', 'goals.@each.goal', 'goals.@each.done', function() { + completed: computed('goals', 'goals.@each.goal', 'goals.@each.done', function() { let me = this; return me.get('goal') > 0 && me.get('goal') == me.get('done'); }), - goal: Ember.computed('goals.@each.goal', function() { + goal: computed('goals.@each.goal', function() { return this.get('goals').map(it => it.goal).reduce((pv, g) => pv + parseInt(g), 0); }), - done: Ember.computed('goals.@each.done', function() { + done: computed('goals.@each.done', function() { return this.get('goals').map(it => it.done).reduce((pv, g) => pv + parseInt(g), 0); }), - totalRate: Ember.computed('goal', 'done', function() { + totalRate: computed('goal', 'done', function() { let me = this; let goal = me.get('goal'); let done = me.get('done'); diff --git a/web/app/components/week-goal/total-done.js b/web/app/components/week-goal/total-done.js index 09a54db..d2b87fe 100644 --- a/web/app/components/week-goal/total-done.js +++ b/web/app/components/week-goal/total-done.js @@ -1,8 +1,9 @@ -import Ember from 'ember'; +import { computed } from '@ember/object' +import Component from '@ember/component'; -const WeekGoalTotalGoalComponent = Ember.Component.extend({ +const WeekGoalTotalGoalComponent = Component.extend({ tagName: '', - totalDone: Ember.computed('goals.@each.done', function() { + totalDone: computed('goals.@each.done', function() { return this.get('goals').mapBy('done').reduce((pv, g) => pv + parseInt(g), 0); }) }); diff --git a/web/app/components/week-goal/total-goal.js b/web/app/components/week-goal/total-goal.js index e7dd268..265f50e 100644 --- a/web/app/components/week-goal/total-goal.js +++ b/web/app/components/week-goal/total-goal.js @@ -1,8 +1,9 @@ -import Ember from 'ember'; +import { computed } from '@ember/object' +import Component from '@ember/component'; -const WeekGoalTotalGoalComponent = Ember.Component.extend({ +const WeekGoalTotalGoalComponent = Component.extend({ tagName: '', - totalGoal: Ember.computed('goals.@each.goal', function() { + totalGoal: computed('goals.@each.goal', function() { return this.get('goals').mapBy('goal').reduce((pv, g) => pv + parseInt(g), 0); }) }); diff --git a/web/app/instance-initializers/tooltip.js b/web/app/instance-initializers/tooltip.js index 4276251..727b843 100644 --- a/web/app/instance-initializers/tooltip.js +++ b/web/app/instance-initializers/tooltip.js @@ -1,4 +1,4 @@ -import Ember from 'ember'; +import Component from '@ember/component'; import $ from 'jquery'; export function initialize(/* appInstance */) { $(function() { @@ -6,7 +6,7 @@ export function initialize(/* appInstance */) { ''; }); - Ember.Component.reopen({ + Component.reopen({ didInsertElement() { let me = this; me._super(...arguments); @@ -29,7 +29,7 @@ export function initialize(/* appInstance */) { $('[data-rel=tooltip]', me.element).tooltip(); } catch(e) { - Ember.Logger.warn('Init tooltip error caused', e); + console.warn('Init tooltip error caused', e); } } } diff --git a/web/app/services/week-goal/service.js b/web/app/services/week-goal/service.js index b147ca6..ca16d4e 100644 --- a/web/app/services/week-goal/service.js +++ b/web/app/services/week-goal/service.js @@ -1,4 +1,3 @@ -import Ember from 'ember'; import BaseService from '../service'; export default BaseService.extend({ diff --git a/web/app/templates/export-task/list.hbs b/web/app/templates/export-task/list.hbs index ad0fe99..4602d6d 100644 --- a/web/app/templates/export-task/list.hbs +++ b/web/app/templates/export-task/list.hbs @@ -17,6 +17,9 @@ File Downloaded + + Note + Actions @@ -46,12 +49,17 @@ {{/if}} + + {{it.note}} +
+ {{#if (eq it.status 'DONE')}} Download + {{/if}}
diff --git a/web/package.json b/web/package.json index 049810c..b7ec519 100644 --- a/web/package.json +++ b/web/package.json @@ -16,7 +16,6 @@ "author": "Shaun Chyxion", "license": "MIT", "devDependencies": { - "@ember/jquery": "1.1.0", "@ember/optional-features": "^1.3.0", "@ember/test-helpers": "^2.8.1", "bootbox": "5.1.3",