作者 Administrator

合并分支 'dev' 到 'master'

Dev



查看合并请求 !4
正在显示 79 个修改的文件 包含 2807 行增加85 行删除

要显示太多修改。

为保证性能只显示 79 of 79+ 个文件。

@@ -6,6 +6,8 @@ @@ -6,6 +6,8 @@
6 # Folders 6 # Folders
7 _obj 7 _obj
8 _test 8 _test
  9 +public/file
  10 +logs
9 11
10 # Architecture specific extensions/prefixes 12 # Architecture specific extensions/prefixes
11 *.[568vq] 13 *.[568vq]
@@ -23,3 +25,4 @@ _testmain.go @@ -23,3 +25,4 @@ _testmain.go
23 *.test 25 *.test
24 .log 26 .log
25 .idea 27 .idea
  28 +
1 -FROM golang:latest  
2 -MAINTAINER linmadan <772181827@qq.com> 1 +FROM 192.168.0.243:5000/mmm/mmm-worth:20201122
  2 +#FROM golang:latest
  3 +#MAINTAINER linmadan <772181827@qq.com>
3 ENV APP_DIR $GOPATH/src/mmm-worth 4 ENV APP_DIR $GOPATH/src/mmm-worth
4 RUN mkdir -p $APP_DIR 5 RUN mkdir -p $APP_DIR
5 WORKDIR $APP_DIR/ 6 WORKDIR $APP_DIR/
@@ -10,6 +11,6 @@ COPY ./main.go main.go @@ -10,6 +11,6 @@ COPY ./main.go main.go
10 RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"] 11 RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"]
11 ENV GO111MODULE on 12 ENV GO111MODULE on
12 ENV GOPROXY https://goproxy.io 13 ENV GOPROXY https://goproxy.io
13 -RUN ["go","mod","tidy"] 14 +#RUN ["go","mod","tidy"]
14 RUN ["go","build"] 15 RUN ["go","build"]
15 ENTRYPOINT ["./mmm-worth"] 16 ENTRYPOINT ["./mmm-worth"]
@@ -39,9 +39,6 @@ spec: @@ -39,9 +39,6 @@ spec:
39 operator: In 39 operator: In
40 values: 40 values:
41 - cn-hangzhou.i-bp1djh1xn7taumbue1ze 41 - cn-hangzhou.i-bp1djh1xn7taumbue1ze
42 - - cn-hangzhou.i-bp1djh1xn7taumbue1zd  
43 - - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb  
44 - - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy  
45 containers: 42 containers:
46 - name: mmm-worth 43 - name: mmm-worth
47 image: 192.168.0.243:5000/mmm/mmm-worth:dev 44 image: 192.168.0.243:5000/mmm/mmm-worth:dev
@@ -57,11 +54,11 @@ spec: @@ -57,11 +54,11 @@ spec:
57 - name: POSTGRESQL_USER 54 - name: POSTGRESQL_USER
58 value: "postgres" 55 value: "postgres"
59 - name: POSTGRESQL_PASSWORD 56 - name: POSTGRESQL_PASSWORD
60 - value: "postgres_15432" 57 + value: "eagle1010"
61 - name: POSTGRESQL_HOST 58 - name: POSTGRESQL_HOST
62 - value: "101.37.68.23" 59 + value: "114.55.200.59"
63 - name: POSTGRESQL_PORT 60 - name: POSTGRESQL_PORT
64 - value: "15432" 61 + value: "31543"
65 - name: LOG_LEVEL 62 - name: LOG_LEVEL
66 value: "debug" 63 value: "debug"
67 - name: ERROR_BASE_CODE 64 - name: ERROR_BASE_CODE
@@ -39,9 +39,6 @@ spec: @@ -39,9 +39,6 @@ spec:
39 operator: In 39 operator: In
40 values: 40 values:
41 - cn-hangzhou.i-bp1djh1xn7taumbue1ze 41 - cn-hangzhou.i-bp1djh1xn7taumbue1ze
42 - - cn-hangzhou.i-bp1djh1xn7taumbue1zd  
43 - - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb  
44 - - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy  
45 containers: 42 containers:
46 - name: mmm-worth 43 - name: mmm-worth
47 image: 192.168.0.243:5000/mmm/mmm-worth:test 44 image: 192.168.0.243:5000/mmm/mmm-worth:test
@@ -57,11 +54,11 @@ spec: @@ -57,11 +54,11 @@ spec:
57 - name: POSTGRESQL_USER 54 - name: POSTGRESQL_USER
58 value: "postgres" 55 value: "postgres"
59 - name: POSTGRESQL_PASSWORD 56 - name: POSTGRESQL_PASSWORD
60 - value: "postgres_15432" 57 + value: "eagle1010"
61 - name: POSTGRESQL_HOST 58 - name: POSTGRESQL_HOST
62 - value: "101.37.68.23" 59 + value: "114.55.200.59"
63 - name: POSTGRESQL_PORT 60 - name: POSTGRESQL_PORT
64 - value: "15432" 61 + value: "31543"
65 - name: LOG_LEVEL 62 - name: LOG_LEVEL
66 value: "debug" 63 value: "debug"
67 - name: ERROR_BASE_CODE 64 - name: ERROR_BASE_CODE
@@ -3,6 +3,7 @@ module gitlab.fjmaimaimai.com/linmadan/mmm-worth @@ -3,6 +3,7 @@ module gitlab.fjmaimaimai.com/linmadan/mmm-worth
3 go 1.14 3 go 1.14
4 4
5 require ( 5 require (
  6 + github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1
6 github.com/ajg/form v1.5.1 // indirect 7 github.com/ajg/form v1.5.1 // indirect
7 github.com/astaxie/beego v1.12.1 8 github.com/astaxie/beego v1.12.1
8 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect 9 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect
@@ -13,13 +14,14 @@ require ( @@ -13,13 +14,14 @@ require (
13 github.com/gorilla/websocket v1.4.2 // indirect 14 github.com/gorilla/websocket v1.4.2 // indirect
14 github.com/imkira/go-interpol v1.1.0 // indirect 15 github.com/imkira/go-interpol v1.1.0 // indirect
15 github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect 16 github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect
16 - github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 17 + github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb
17 github.com/mattn/go-colorable v0.1.6 // indirect 18 github.com/mattn/go-colorable v0.1.6 // indirect
18 github.com/moul/http2curl v1.0.0 // indirect 19 github.com/moul/http2curl v1.0.0 // indirect
19 github.com/onsi/ginkgo v1.10.3 20 github.com/onsi/ginkgo v1.10.3
20 github.com/onsi/gomega v1.7.1 21 github.com/onsi/gomega v1.7.1
21 github.com/sergi/go-diff v1.1.0 // indirect 22 github.com/sergi/go-diff v1.1.0 // indirect
22 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect 23 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
  24 + github.com/shopspring/decimal v1.2.0
23 github.com/smartystreets/goconvey v1.6.4 // indirect 25 github.com/smartystreets/goconvey v1.6.4 // indirect
24 github.com/valyala/fasthttp v1.9.0 // indirect 26 github.com/valyala/fasthttp v1.9.0 // indirect
25 github.com/xeipuuv/gojsonschema v1.2.0 // indirect 27 github.com/xeipuuv/gojsonschema v1.2.0 // indirect
@@ -27,6 +29,7 @@ require ( @@ -27,6 +29,7 @@ require (
27 github.com/yudai/gojsondiff v1.0.0 // indirect 29 github.com/yudai/gojsondiff v1.0.0 // indirect
28 github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect 30 github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
29 github.com/yudai/pp v2.0.1+incompatible // indirect 31 github.com/yudai/pp v2.0.1+incompatible // indirect
  32 + golang.org/x/tools v0.0.0-20200117065230-39095c1d176c
30 ) 33 )
31 34
32 replace gitlab.fjmaimaimai.com/linmadan/mmm-worth => ../mmm-worth 35 replace gitlab.fjmaimaimai.com/linmadan/mmm-worth => ../mmm-worth
  1 +github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1 h1:j56fC19WoD3z+u+ZHxm2XwRGyS1XmdSMk7058BLhdsM=
  2 +github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1/go.mod h1:gXEhMjm1VadSGjAzyDlBxmdYglP8eJpYWxpwJnmXRWw=
1 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= 3 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
2 github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= 4 github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
3 github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM= 5 github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM=
@@ -79,11 +81,15 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -79,11 +81,15 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
79 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= 81 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
80 github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 h1:zJZsqJ1wFMYb2yrja5S3OZ+oASx4irRksZ8+emFs56M= 82 github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 h1:zJZsqJ1wFMYb2yrja5S3OZ+oASx4irRksZ8+emFs56M=
81 github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk= 83 github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk=
  84 +github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb h1:Ocxw5BWyRrRkTHSsTmQx0UnGsAYZDOwa3K9oGlXF8Jo=
  85 +github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk=
82 github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= 86 github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
83 github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 87 github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
84 github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= 88 github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
85 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= 89 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
86 github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= 90 github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
  91 +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
  92 +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
87 github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs= 93 github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
88 github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= 94 github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
89 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= 95 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -98,10 +104,16 @@ github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6J @@ -98,10 +104,16 @@ github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6J
98 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 104 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
99 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 105 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
100 github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= 106 github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
  107 +github.com/richardlehane/mscfb v1.0.3 h1:rD8TBkYWkObWO0oLDFCbwMeZ4KoalxQy+QgniCj3nKI=
  108 +github.com/richardlehane/mscfb v1.0.3/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
  109 +github.com/richardlehane/msoleps v1.0.1 h1:RfrALnSNXzmXLbGct/P2b4xkFz4e8Gmj/0Vj9M9xC1o=
  110 +github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
101 github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= 111 github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
102 github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= 112 github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
103 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo= 113 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo=
104 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= 114 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg=
  115 +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
  116 +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
105 github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= 117 github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
106 github.com/siddontang/ledisdb v0.0.0-20181029004158-becf5f38d373/go.mod h1:mF1DpOSOUiJRMR+FDqaqu3EBqrybQtrDDszLUZ6oxPg= 118 github.com/siddontang/ledisdb v0.0.0-20181029004158-becf5f38d373/go.mod h1:mF1DpOSOUiJRMR+FDqaqu3EBqrybQtrDDszLUZ6oxPg=
107 github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA= 119 github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
@@ -119,6 +131,8 @@ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0 @@ -119,6 +131,8 @@ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0
119 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 131 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
120 github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= 132 github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
121 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 133 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
  134 +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
  135 +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
122 github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= 136 github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
123 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= 137 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
124 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= 138 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
@@ -134,6 +148,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo @@ -134,6 +148,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo
134 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= 148 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
135 github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= 149 github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
136 github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= 150 github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
  151 +github.com/xuri/efp v0.0.0-20200605144744-ba689101faaf h1:spotWVWg9DP470pPFQ7LaYtUqDpWEOS/BUrSmwFZE4k=
  152 +github.com/xuri/efp v0.0.0-20200605144744-ba689101faaf/go.mod h1:uBiSUepVYMhGTfDeBKKasV4GpgBlzJ46gXUBAqV8qLk=
137 github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= 153 github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY=
138 github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= 154 github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
139 github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= 155 github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=
@@ -150,6 +166,11 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U @@ -150,6 +166,11 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
150 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 166 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
151 golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf h1:fnPsqIDRbCSgumaMCRpoIoF2s4qxv0xSSS0BVZUE/ss= 167 golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf h1:fnPsqIDRbCSgumaMCRpoIoF2s4qxv0xSSS0BVZUE/ss=
152 golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 168 golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
  169 +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
  170 +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM=
  171 +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
  172 +golang.org/x/image v0.0.0-20200922025426-e59bae62ef32 h1:E+SEVulmY8U4+i6vSB88YSc2OKAFfvbHPU/uDTdQu7M=
  173 +golang.org/x/image v0.0.0-20200922025426-e59bae62ef32/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
153 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= 174 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
154 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 175 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
155 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 176 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -160,6 +181,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL @@ -160,6 +181,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
160 golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 181 golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
161 golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7MvYXnkV9/iQNo1lX6g= 182 golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7MvYXnkV9/iQNo1lX6g=
162 golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 183 golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
  184 +golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA=
  185 +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
163 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 186 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
164 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 187 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
165 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 188 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -173,12 +196,17 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w @@ -173,12 +196,17 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w
173 golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 196 golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
174 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= 197 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
175 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 198 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  199 +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
  200 +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
176 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 201 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
177 golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= 202 golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
178 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 203 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
  204 +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
  205 +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
179 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 206 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
180 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 207 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
181 golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= 208 golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
  209 +golang.org/x/tools v0.0.0-20200117065230-39095c1d176c h1:FodBYPZKH5tAN2O60HlglMwXGAeV/4k+NKbli79M/2c=
182 golang.org/x/tools v0.0.0-20200117065230-39095c1d176c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= 210 golang.org/x/tools v0.0.0-20200117065230-39095c1d176c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
183 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 211 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
184 google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= 212 google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
@@ -198,5 +226,7 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -198,5 +226,7 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
198 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 226 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
199 gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= 227 gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
200 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 228 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  229 +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
  230 +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
201 mellium.im/sasl v0.2.1 h1:nspKSRg7/SyO0cRGY71OkfHab8tf9kCts6a6oTDut0w= 231 mellium.im/sasl v0.2.1 h1:nspKSRg7/SyO0cRGY71OkfHab8tf9kCts6a6oTDut0w=
202 mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ= 232 mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ=
@@ -35,5 +35,10 @@ func main() { @@ -35,5 +35,10 @@ func main() {
35 } 35 }
36 } 36 }
37 }() 37 }()
  38 +
  39 + // excel文件路径映射
  40 + beego.SetStaticPath("/download", "download")
  41 + beego.SetStaticPath("/logs", "log")
  42 +
38 beego.Run() 43 beego.Run()
39 } 44 }
@@ -21,6 +21,7 @@ func (configService *ConfigService) ListTaskStatus(listTaskStatusQuery *query.Li @@ -21,6 +21,7 @@ func (configService *ConfigService) ListTaskStatus(listTaskStatusQuery *query.Li
21 4: "待验收", 21 4: "待验收",
22 5: "已完成", 22 5: "已完成",
23 7: "待确认", 23 7: "待确认",
  24 + 8: "已过期",
24 } 25 }
25 var list []map[string]interface{} 26 var list []map[string]interface{}
26 for key, value := range taskStatusMap { 27 for key, value := range taskStatusMap {
@@ -165,7 +166,7 @@ func (configService *ConfigService) ListBidTimeMatch(listBidTimeMatchQuery *quer @@ -165,7 +166,7 @@ func (configService *ConfigService) ListBidTimeMatch(listBidTimeMatchQuery *quer
165 }, nil 166 }, nil
166 } 167 }
167 168
168 -// 返回员工权限字典列表(1任务管理,2素币管理,3成员管理) 169 +// 返回员工权限字典列表(1任务管理,2素币管理,3成员管理,4标签管理,5排行榜管理
169 func (configService *ConfigService) ListEmployeePermission(listEmployeePermissionQuery *query.ListEmployeePermissionQuery) (interface{}, error) { 170 func (configService *ConfigService) ListEmployeePermission(listEmployeePermissionQuery *query.ListEmployeePermissionQuery) (interface{}, error) {
170 if err := listEmployeePermissionQuery.ValidateQuery(); err != nil { 171 if err := listEmployeePermissionQuery.ValidateQuery(); err != nil {
171 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 172 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
@@ -175,6 +176,7 @@ func (configService *ConfigService) ListEmployeePermission(listEmployeePermissio @@ -175,6 +176,7 @@ func (configService *ConfigService) ListEmployeePermission(listEmployeePermissio
175 2: "素币管理", 176 2: "素币管理",
176 3: "成员管理", 177 3: "成员管理",
177 4: "标签管理", 178 4: "标签管理",
  179 + 5: "排行榜管理",
178 } 180 }
179 var list []map[string]interface{} 181 var list []map[string]interface{}
180 for key, value := range employeePermissionMap { 182 for key, value := range employeePermissionMap {
@@ -2,7 +2,6 @@ package command @@ -2,7 +2,6 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 -  
6 "github.com/astaxie/beego/validation" 5 "github.com/astaxie/beego/validation"
7 ) 6 )
8 7
@@ -2,6 +2,7 @@ package command @@ -2,6 +2,7 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "time"
5 6
6 "github.com/astaxie/beego/validation" 7 "github.com/astaxie/beego/validation"
7 ) 8 )
@@ -15,6 +16,8 @@ type CreateEmployeeCommand struct { @@ -15,6 +16,8 @@ type CreateEmployeeCommand struct {
15 EmployeeAccount string `json:"employeeAccount,omitempty"` 16 EmployeeAccount string `json:"employeeAccount,omitempty"`
16 // 员工头像URL 17 // 员工头像URL
17 EmployeeAvatarUrl string `json:"employeeAvatarUrl,omitempty"` 18 EmployeeAvatarUrl string `json:"employeeAvatarUrl,omitempty"`
  19 + // 创建时间
  20 + CreateTime time.Time `json:"createTime"`
18 } 21 }
19 22
20 func (createEmployeeCommand *CreateEmployeeCommand) ValidateCommand() error { 23 func (createEmployeeCommand *CreateEmployeeCommand) ValidateCommand() error {
@@ -2,7 +2,6 @@ package command @@ -2,7 +2,6 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 -  
6 "github.com/astaxie/beego/validation" 5 "github.com/astaxie/beego/validation"
7 ) 6 )
8 7
@@ -2,6 +2,7 @@ package command @@ -2,6 +2,7 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "time"
5 6
6 "github.com/astaxie/beego/validation" 7 "github.com/astaxie/beego/validation"
7 ) 8 )
@@ -17,6 +18,8 @@ type UpdateEmployeeCommand struct { @@ -17,6 +18,8 @@ type UpdateEmployeeCommand struct {
17 EmployeeAvatarUrl string `json:"employeeAvatarUrl,omitempty"` 18 EmployeeAvatarUrl string `json:"employeeAvatarUrl,omitempty"`
18 // 员工权限集合 19 // 员工权限集合
19 Permissions []int `json:"permissions,omitempty"` 20 Permissions []int `json:"permissions,omitempty"`
  21 + // 创建时间
  22 + CreateTime time.Time `json:"createTime"`
20 } 23 }
21 24
22 func (updateEmployeeCommand *UpdateEmployeeCommand) ValidateCommand() error { 25 func (updateEmployeeCommand *UpdateEmployeeCommand) ValidateCommand() error {
@@ -13,6 +13,8 @@ type ListEmployeeQuery struct { @@ -13,6 +13,8 @@ type ListEmployeeQuery struct {
13 EmployeeNameMatch string `json:"employeeNameMatch,omitempty"` 13 EmployeeNameMatch string `json:"employeeNameMatch,omitempty"`
14 // 查询偏离量 14 // 查询偏离量
15 Offset int `json:"offset,omitempty"` 15 Offset int `json:"offset,omitempty"`
  16 + // 员工状态(启用或者禁用)
  17 + Status int `json:"status"`
16 // 查询限制 18 // 查询限制
17 Limit int `json:"limit,omitempty"` 19 Limit int `json:"limit,omitempty"`
18 } 20 }
@@ -8,6 +8,7 @@ import ( @@ -8,6 +8,7 @@ import (
8 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/employee/query" 8 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/employee/query"
9 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" 9 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory"
10 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" 10 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
  11 + "time"
11 ) 12 )
12 13
13 // 员工服务 14 // 员工服务
@@ -36,6 +37,7 @@ func (employeeService *EmployeeService) CreateEmployee(createEmployeeCommand *co @@ -36,6 +37,7 @@ func (employeeService *EmployeeService) CreateEmployee(createEmployeeCommand *co
36 EmployeeAccount: createEmployeeCommand.EmployeeAccount, 37 EmployeeAccount: createEmployeeCommand.EmployeeAccount,
37 }, 38 },
38 SuMoney: 0, 39 SuMoney: 0,
  40 + CreateTime: time.Now(),
39 } 41 }
40 var employeeRepository domain.EmployeeRepository 42 var employeeRepository domain.EmployeeRepository
41 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ 43 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
@@ -122,6 +124,7 @@ func (employeeService *EmployeeService) UpdateEmployee(updateEmployeeCommand *co @@ -122,6 +124,7 @@ func (employeeService *EmployeeService) UpdateEmployee(updateEmployeeCommand *co
122 if employee == nil { 124 if employee == nil {
123 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateEmployeeCommand.Uid))) 125 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateEmployeeCommand.Uid)))
124 } 126 }
  127 + updateEmployeeCommand.CreateTime = time.Now()
125 if err := employee.Update(tool_funs.SimpleStructToMap(updateEmployeeCommand)); err != nil { 128 if err := employee.Update(tool_funs.SimpleStructToMap(updateEmployeeCommand)); err != nil {
126 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) 129 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
127 } 130 }
@@ -180,6 +183,7 @@ func (employeeService *EmployeeService) ListEmployee(listEmployeeQuery *query.Li @@ -180,6 +183,7 @@ func (employeeService *EmployeeService) ListEmployee(listEmployeeQuery *query.Li
180 if err := listEmployeeQuery.ValidateQuery(); err != nil { 183 if err := listEmployeeQuery.ValidateQuery(); err != nil {
181 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 184 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
182 } 185 }
  186 +
183 transactionContext, err := factory.CreateTransactionContext(nil) 187 transactionContext, err := factory.CreateTransactionContext(nil)
184 if err != nil { 188 if err != nil {
185 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 189 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -190,6 +194,7 @@ func (employeeService *EmployeeService) ListEmployee(listEmployeeQuery *query.Li @@ -190,6 +194,7 @@ func (employeeService *EmployeeService) ListEmployee(listEmployeeQuery *query.Li
190 defer func() { 194 defer func() {
191 transactionContext.RollbackTransaction() 195 transactionContext.RollbackTransaction()
192 }() 196 }()
  197 +
193 var employeeRepository domain.EmployeeRepository 198 var employeeRepository domain.EmployeeRepository
194 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ 199 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
195 "transactionContext": transactionContext, 200 "transactionContext": transactionContext,
@@ -198,7 +203,13 @@ func (employeeService *EmployeeService) ListEmployee(listEmployeeQuery *query.Li @@ -198,7 +203,13 @@ func (employeeService *EmployeeService) ListEmployee(listEmployeeQuery *query.Li
198 } else { 203 } else {
199 employeeRepository = value 204 employeeRepository = value
200 } 205 }
201 - if count, employees, err := employeeRepository.Find(tool_funs.SimpleStructToMap(listEmployeeQuery)); err != nil { 206 +
  207 + if count, employees, err := employeeRepository.Find(map[string]interface{}{
  208 + "companyId": listEmployeeQuery.CompanyId,
  209 + "employeeNameMatch": listEmployeeQuery.EmployeeNameMatch,
  210 + "offset": listEmployeeQuery.Offset,
  211 + "limit": listEmployeeQuery.Limit,
  212 + }); err != nil {
202 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 213 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
203 } else { 214 } else {
204 if err := transactionContext.CommitTransaction(); err != nil { 215 if err := transactionContext.CommitTransaction(); err != nil {
@@ -28,3 +28,19 @@ func CreateNotificationDao(options map[string]interface{}) (*dao.NotificationDao @@ -28,3 +28,19 @@ func CreateNotificationDao(options map[string]interface{}) (*dao.NotificationDao
28 } 28 }
29 return dao.NewNotificationDao(transactionContext) 29 return dao.NewNotificationDao(transactionContext)
30 } 30 }
  31 +
  32 +func CreateCashPoolDao(options map[string]interface{}) (*dao.CashPoolDao, error) {
  33 + var transactionContext *pg.TransactionContext
  34 + if value, ok := options["transactionContext"]; ok {
  35 + transactionContext = value.(*pg.TransactionContext)
  36 + }
  37 + return dao.NewCashPoolDao(transactionContext)
  38 +}
  39 +
  40 +func CreateListIntervalDao(options map[string]interface{}) (*dao.ListIntervalDao, error) {
  41 + var transactionContext *pg.TransactionContext
  42 + if value, ok := options["transactionContext"]; ok {
  43 + transactionContext = value.(*pg.TransactionContext)
  44 + }
  45 + return dao.NewListIntervalDao(transactionContext)
  46 +}
@@ -109,3 +109,6 @@ func CreateExchangeSuMoneyService(options map[string]interface{}) (service.Excha @@ -109,3 +109,6 @@ func CreateExchangeSuMoneyService(options map[string]interface{}) (service.Excha
109 } 109 }
110 return domainService.NewExchangeSuMoneyService(transactionContext) 110 return domainService.NewExchangeSuMoneyService(transactionContext)
111 } 111 }
  112 +
  113 +
  114 +
@@ -85,3 +85,35 @@ func CreateSentNotificationRepository(options map[string]interface{}) (domain.Se @@ -85,3 +85,35 @@ func CreateSentNotificationRepository(options map[string]interface{}) (domain.Se
85 } 85 }
86 return repository.NewSentNotificationRepository(transactionContext) 86 return repository.NewSentNotificationRepository(transactionContext)
87 } 87 }
  88 +
  89 +func CreateCashPoolRepository(options map[string]interface{}) (domain.CashPoolRepository, error) {
  90 + var transactionContext *pg.TransactionContext
  91 + if value, ok := options["transactionContext"]; ok {
  92 + transactionContext = value.(*pg.TransactionContext)
  93 + }
  94 + return repository.NewCashPoolRepository(transactionContext)
  95 +}
  96 +
  97 +func CreateExchangeCashActivityRepository(options map[string]interface{}) (domain.ExchangeActivityRepository, error) {
  98 + var transactionContext *pg.TransactionContext
  99 + if value, ok := options["transactionContext"]; ok {
  100 + transactionContext = value.(*pg.TransactionContext)
  101 + }
  102 + return repository.NewExchangeCashActivityRepository(transactionContext)
  103 +}
  104 +
  105 +func CreateExchangeCashPersonListRepository(options map[string]interface{}) (domain.ExchangeCashPersonListRepository, error) {
  106 + var transactionContext *pg.TransactionContext
  107 + if value, ok := options["transactionContext"]; ok {
  108 + transactionContext = value.(*pg.TransactionContext)
  109 + }
  110 + return repository.NewExchangeCashPersonListRepository(transactionContext)
  111 +}
  112 +
  113 +func CreateListIntervalRepository(options map[string]interface{}) (domain.ListIntervalRepository, error) {
  114 + var transactionContext *pg.TransactionContext
  115 + if value, ok := options["transactionContext"]; ok {
  116 + transactionContext = value.(*pg.TransactionContext)
  117 + }
  118 + return repository.NewListIntervalRepository(transactionContext)
  119 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +type CreateListIntervalCommand struct {
  10 + CompanyId int `json:"companyId" valid:"Required"` // 公司id
  11 + ListIntervalStartTime time.Time `json:"listIntervalStartTime"` // 排行榜开始时间
  12 + ListIntervalEndTime time.Time `json:"listIntervalEndTime"` // 排行榜结束时间
  13 +}
  14 +
  15 +func (createListIntervalCommand *CreateListIntervalCommand) ValidateCommand() error {
  16 + valid := validation.Validation{}
  17 + b, err := valid.Valid(createListIntervalCommand)
  18 + if err != nil {
  19 + return err
  20 + }
  21 + if !b {
  22 + for _, validErr := range valid.Errors {
  23 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  24 + }
  25 + }
  26 + return nil
  27 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type RemoveListIntervalCommand struct {
  9 + ListIntervalId int `json:"listIntervalId" valid:"Required"` // 排行榜Id
  10 +}
  11 +
  12 +func (removeListIntervalCommand *RemoveListIntervalCommand) ValidateCommand() error {
  13 + valid := validation.Validation{}
  14 + b, err := valid.Valid(removeListIntervalCommand)
  15 + if err != nil {
  16 + return err
  17 + }
  18 + if !b {
  19 + for _, validErr := range valid.Errors {
  20 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  21 + }
  22 + }
  23 + return nil
  24 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +type UpdateListIntervalCommand struct {
  10 + ListIntervalId int `json:"listIntervalId" valid:"Required"` // 排行榜id
  11 + ListIntervalStartTime time.Time `json:"listIntervalStartTime"` // 排行榜开始时间
  12 + ListIntervalEndTime time.Time `json:"listIntervalEndTime"` // 排行榜结束时间
  13 +}
  14 +
  15 +func (updateListIntervalCommand *UpdateListIntervalCommand) ValidateCommand() error {
  16 + valid := validation.Validation{}
  17 + b, err := valid.Valid(updateListIntervalCommand)
  18 + if err != nil {
  19 + return err
  20 + }
  21 + if !b {
  22 + for _, validErr := range valid.Errors {
  23 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  24 + }
  25 + }
  26 + return nil
  27 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type GetListIntervalQuery struct {
  9 + ListIntervalId int `json:"listIntervalId"` // 排行榜id
  10 +}
  11 +
  12 +func (getListIntervalQuery *GetListIntervalQuery) ValidateQuery() error {
  13 + valid := validation.Validation{}
  14 + b, err := valid.Valid(getListIntervalQuery)
  15 + if err != nil {
  16 + return err
  17 + }
  18 + if !b {
  19 + for _, validErr := range valid.Errors {
  20 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  21 + }
  22 + }
  23 + return nil
  24 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type ListListIntervalQuery struct {
  9 + CompanyId int `json:"companyId"` // 公司id
  10 + Offset int `json:"offset,omitempty"` // 查询偏离量
  11 + Limit int `json:"limit,omitempty"` // 查询限制
  12 + }
  13 +
  14 +func (listListIntervalQuery *ListListIntervalQuery) ValidateQuery() error {
  15 + valid := validation.Validation{}
  16 + b, err := valid.Valid(listListIntervalQuery)
  17 + if err != nil {
  18 + return err
  19 + }
  20 + if !b {
  21 + for _, validErr := range valid.Errors {
  22 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  23 + }
  24 + }
  25 + return nil
  26 +}
  1 +package service
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/linmadan/egglib-go/utils/tool_funs"
  7 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory"
  8 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/command"
  9 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/query"
  10 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao"
  12 + "time"
  13 +)
  14 +
  15 +type ListIntervalService struct {
  16 +}
  17 +
  18 +// 创建排行榜时间
  19 +func (listIntervalService *ListIntervalService) CreateListInterval(createListIntervalCommand *command.CreateListIntervalCommand) (interface{}, error) {
  20 + if err := createListIntervalCommand.ValidateCommand(); err != nil {
  21 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  22 + }
  23 + transactionContext, err := factory.CreateTransactionContext(nil)
  24 + if err != nil {
  25 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  26 + }
  27 + if err := transactionContext.StartTransaction(); err != nil {
  28 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  29 + }
  30 + defer func() {
  31 + transactionContext.RollbackTransaction()
  32 + }()
  33 +
  34 + // 排行榜时间仓储初始化
  35 + var listIntervalRepository domain.ListIntervalRepository
  36 + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{
  37 + "transactionContext": transactionContext,
  38 + }); err != nil {
  39 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  40 + } else {
  41 + listIntervalRepository = value
  42 + }
  43 +
  44 + // 排行榜管理DAO初始化
  45 + var listIntervalDao *dao.ListIntervalDao
  46 + if value, err := factory.CreateListIntervalDao(map[string]interface{}{
  47 + "transactionContext": transactionContext,
  48 + }); err != nil {
  49 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  50 + } else {
  51 + listIntervalDao = value
  52 + }
  53 +
  54 + // 获取当前最新排行榜时间
  55 + listListIntervalQuery := &query.ListListIntervalQuery {
  56 + CompanyId: createListIntervalCommand.CompanyId,
  57 + Offset: 0,
  58 + Limit: 1,
  59 + }
  60 +
  61 + // 获取上个年榜时间
  62 + _, listIntervals, err := listIntervalRepository.Find(tool_funs.SimpleStructToMap(listListIntervalQuery))
  63 + if err != nil {
  64 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  65 + }
  66 +
  67 + startTime := time.Date(createListIntervalCommand.ListIntervalStartTime.Local().Year(), createListIntervalCommand.ListIntervalStartTime.Local().Month(), createListIntervalCommand.ListIntervalStartTime.Local().Day(), 0, 0, 0, 0, time.Local)
  68 + endTime := time.Date(createListIntervalCommand.ListIntervalEndTime.Local().Year(), createListIntervalCommand.ListIntervalEndTime.Local().Month(), createListIntervalCommand.ListIntervalEndTime.Local().Day(), 23, 59, 59, 0, time.Local)
  69 +
  70 + // 判断年榜时间是否重叠
  71 + if len(listIntervals) > 0 {
  72 + ok := listIntervalDao.RankPeriodCheckTime(startTime.Local().Unix(), endTime.Local().Unix(), 0, listIntervals[0].CompanyId)
  73 + if !ok {
  74 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
  75 + }
  76 + }
  77 +
  78 + // 创建排行榜时间
  79 + newListInterval := &domain.ListInterval {
  80 + CompanyId: createListIntervalCommand.CompanyId,
  81 + IntervalStartTime: startTime,
  82 + IntervalEndTime: endTime,
  83 + }
  84 + listInterval, err := listIntervalRepository.Save(newListInterval)
  85 + if err != nil {
  86 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  87 + }
  88 + if err := transactionContext.CommitTransaction(); err != nil {
  89 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  90 + }
  91 + return listInterval, nil
  92 +}
  93 +
  94 +// 返回排行榜时间列表
  95 +func (listIntervalService *ListIntervalService) ListListInterval(listListIntervalQuery *query.ListListIntervalQuery) (interface{}, error) {
  96 + if err := listListIntervalQuery.ValidateQuery(); err != nil {
  97 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  98 + }
  99 + transactionContext, err := factory.CreateTransactionContext(nil)
  100 + if err != nil {
  101 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  102 + }
  103 + if err := transactionContext.StartTransaction(); err != nil {
  104 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  105 + }
  106 + defer func() {
  107 + transactionContext.RollbackTransaction()
  108 + }()
  109 +
  110 + var listIntervalRepository domain.ListIntervalRepository
  111 + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{
  112 + "transactionContext": transactionContext,
  113 + }); err != nil {
  114 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  115 + } else {
  116 + listIntervalRepository = value
  117 + }
  118 +
  119 + if count, listIntervals, err := listIntervalRepository.Find(tool_funs.SimpleStructToMap(listListIntervalQuery)); err != nil {
  120 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  121 + } else {
  122 + if err := transactionContext.CommitTransaction(); err != nil {
  123 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  124 + }
  125 + return map[string]interface{}{
  126 + "count": count,
  127 + "listIntervals": listIntervals,
  128 + }, nil
  129 + }
  130 +}
  131 +
  132 +// 返回排行榜时间
  133 +func (listIntervalService *ListIntervalService) GetListInterval(getListIntervalQuery *query.GetListIntervalQuery) (interface{}, error) {
  134 + if err := getListIntervalQuery.ValidateQuery(); err != nil {
  135 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  136 + }
  137 + transactionContext, err := factory.CreateTransactionContext(nil)
  138 + if err != nil {
  139 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  140 + }
  141 + if err := transactionContext.StartTransaction(); err != nil {
  142 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  143 + }
  144 + defer func() {
  145 + transactionContext.RollbackTransaction()
  146 + }()
  147 +
  148 + var listIntervalRepository domain.ListIntervalRepository
  149 + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{
  150 + "transactionContext": transactionContext,
  151 + }); err != nil {
  152 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  153 + } else {
  154 + listIntervalRepository = value
  155 + }
  156 +
  157 + listInterval, err := listIntervalRepository.FindOne(map[string]interface{}{"listId": getListIntervalQuery.ListIntervalId})
  158 + if err != nil {
  159 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  160 + }
  161 + if listInterval == nil {
  162 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getListIntervalQuery.ListIntervalId)))
  163 + } else {
  164 + if err := transactionContext.CommitTransaction(); err != nil {
  165 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  166 + }
  167 + return listInterval, nil
  168 + }
  169 +}
  170 +
  171 +// 更新排行榜时间
  172 +func (listIntervalService *ListIntervalService) UpdateListInterval(updateListIntervalCommand *command.UpdateListIntervalCommand) (interface{}, error) {
  173 + if err := updateListIntervalCommand.ValidateCommand(); err != nil {
  174 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  175 + }
  176 +
  177 + transactionContext, err := factory.CreateTransactionContext(nil)
  178 + if err != nil {
  179 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  180 + }
  181 + if err := transactionContext.StartTransaction(); err != nil {
  182 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  183 + }
  184 + defer func() {
  185 + transactionContext.RollbackTransaction()
  186 + }()
  187 +
  188 + // 排行榜管理仓储初始化
  189 + var listIntervalRepository domain.ListIntervalRepository
  190 + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{
  191 + "transactionContext": transactionContext,
  192 + }); err != nil {
  193 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  194 + } else {
  195 + listIntervalRepository = value
  196 + }
  197 +
  198 + // 排行榜管理DAO初始化
  199 + var listIntervalDao *dao.ListIntervalDao
  200 + if value, err := factory.CreateListIntervalDao(map[string]interface{}{
  201 + "transactionContext": transactionContext,
  202 + }); err != nil {
  203 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  204 + } else {
  205 + listIntervalDao = value
  206 + }
  207 +
  208 + // 获取当前年榜
  209 + listIntervalFound, err := listIntervalRepository.FindOne(map[string]interface{}{"listId": updateListIntervalCommand.ListIntervalId})
  210 + if err != nil {
  211 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  212 + }
  213 + if listIntervalFound == nil {
  214 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateListIntervalCommand.ListIntervalId)))
  215 + }
  216 +
  217 + // 当前更新的开始结束时间
  218 + startTime := time.Date(updateListIntervalCommand.ListIntervalStartTime.Local().Year(), updateListIntervalCommand.ListIntervalStartTime.Local().Month(), updateListIntervalCommand.ListIntervalStartTime.Local().Day(), 0, 0, 0, 0, time.Local)
  219 + endTime := time.Date(updateListIntervalCommand.ListIntervalEndTime.Local().Year(), updateListIntervalCommand.ListIntervalEndTime.Local().Month(), updateListIntervalCommand.ListIntervalEndTime.Local().Day(), 23, 59, 59, 0, time.Local)
  220 +
  221 + updateListIntervalCommand.ListIntervalStartTime = startTime
  222 + updateListIntervalCommand.ListIntervalEndTime = endTime
  223 +
  224 + // 判断年榜时间是否重叠
  225 + ok := listIntervalDao.RankPeriodCheckTime(startTime.Unix(), endTime.Unix(), listIntervalFound.ListIntervalId, listIntervalFound.CompanyId)
  226 + if !ok {
  227 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
  228 + }
  229 +
  230 + // 更新年榜
  231 + if err := listIntervalFound.Update(tool_funs.SimpleStructToMap(updateListIntervalCommand)); err != nil {
  232 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  233 + }
  234 + if listIntervalUpdated, err := listIntervalRepository.Save(listIntervalFound); err != nil {
  235 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  236 + } else {
  237 + if err := transactionContext.CommitTransaction(); err != nil {
  238 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  239 + }
  240 + return listIntervalUpdated, nil
  241 + }
  242 +}
  243 +
  244 +// 移除排行榜时间
  245 +func (listIntervalService *ListIntervalService) RemoveListInterval(removeListIntervalCommand *command.RemoveListIntervalCommand) (interface{}, error) {
  246 + if err := removeListIntervalCommand.ValidateCommand(); err != nil {
  247 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  248 + }
  249 + transactionContext, err := factory.CreateTransactionContext(nil)
  250 + if err != nil {
  251 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  252 + }
  253 + if err := transactionContext.StartTransaction(); err != nil {
  254 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  255 + }
  256 + defer func() {
  257 + transactionContext.RollbackTransaction()
  258 + }()
  259 +
  260 + var listIntervalRepository domain.ListIntervalRepository
  261 + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{
  262 + "transactionContext": transactionContext,
  263 + }); err != nil {
  264 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  265 + } else {
  266 + listIntervalRepository = value
  267 + }
  268 +
  269 + listInterval, err := listIntervalRepository.FindOne(map[string]interface{}{"listId": removeListIntervalCommand.ListIntervalId})
  270 + if err != nil {
  271 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  272 + }
  273 + if listInterval == nil {
  274 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeListIntervalCommand.ListIntervalId)))
  275 + }
  276 +
  277 + if listInterval, err := listIntervalRepository.Remove(listInterval); err != nil {
  278 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  279 + } else {
  280 + if err := transactionContext.CommitTransaction(); err != nil {
  281 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  282 + }
  283 + return listInterval, nil
  284 + }
  285 +}
  286 +
  287 +func NewListIntervalService(options map[string] interface{}) *ListIntervalService {
  288 + newListIntervalService := &ListIntervalService{}
  289 + return newListIntervalService
  290 +}
@@ -28,6 +28,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned @@ -28,6 +28,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned
28 defer func() { 28 defer func() {
29 transactionContext.RollbackTransaction() 29 transactionContext.RollbackTransaction()
30 }() 30 }()
  31 +
31 var notificationRepository domain.NotificationRepository 32 var notificationRepository domain.NotificationRepository
32 if value, err := factory.CreateNotificationRepository(map[string]interface{}{ 33 if value, err := factory.CreateNotificationRepository(map[string]interface{}{
33 "transactionContext": transactionContext, 34 "transactionContext": transactionContext,
@@ -36,6 +37,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned @@ -36,6 +37,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned
36 } else { 37 } else {
37 notificationRepository = value 38 notificationRepository = value
38 } 39 }
  40 +
39 var sentNotificationRepository domain.SentNotificationRepository 41 var sentNotificationRepository domain.SentNotificationRepository
40 if value, err := factory.CreateSentNotificationRepository(map[string]interface{}{ 42 if value, err := factory.CreateSentNotificationRepository(map[string]interface{}{
41 "transactionContext": transactionContext, 43 "transactionContext": transactionContext,
@@ -44,6 +46,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned @@ -44,6 +46,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned
44 } else { 46 } else {
45 sentNotificationRepository = value 47 sentNotificationRepository = value
46 } 48 }
  49 +
47 var taskDao *dao.TaskDao 50 var taskDao *dao.TaskDao
48 if value, err := factory.CreateTaskDao(map[string]interface{}{ 51 if value, err := factory.CreateTaskDao(map[string]interface{}{
49 "transactionContext": transactionContext, 52 "transactionContext": transactionContext,
@@ -52,6 +55,13 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned @@ -52,6 +55,13 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned
52 } else { 55 } else {
53 taskDao = value 56 taskDao = value
54 } 57 }
  58 +
  59 + // 更新已过期竞标任务状态
  60 + if err := taskDao.UpdateExpiredPlannedCompletionTimeBidTask(); err != nil {
  61 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  62 + }
  63 +
  64 + // 返回快过期任务并发送消息
55 if tasks, err := taskDao.ListNearThePlannedCompletionTimeTask(); err != nil { 65 if tasks, err := taskDao.ListNearThePlannedCompletionTimeTask(); err != nil {
56 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 66 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
57 } else { 67 } else {
@@ -88,6 +98,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned @@ -88,6 +98,7 @@ func (notificationService *NotificationService) SystemNotificationNearThePlanned
88 } 98 }
89 } 99 }
90 } 100 }
  101 +
91 if err := transactionContext.CommitTransaction(); err != nil { 102 if err := transactionContext.CommitTransaction(); err != nil {
92 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 103 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
93 } else { 104 } else {
@@ -108,6 +119,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime @@ -108,6 +119,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime
108 defer func() { 119 defer func() {
109 transactionContext.RollbackTransaction() 120 transactionContext.RollbackTransaction()
110 }() 121 }()
  122 +
111 var notificationRepository domain.NotificationRepository 123 var notificationRepository domain.NotificationRepository
112 if value, err := factory.CreateNotificationRepository(map[string]interface{}{ 124 if value, err := factory.CreateNotificationRepository(map[string]interface{}{
113 "transactionContext": transactionContext, 125 "transactionContext": transactionContext,
@@ -116,6 +128,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime @@ -116,6 +128,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime
116 } else { 128 } else {
117 notificationRepository = value 129 notificationRepository = value
118 } 130 }
  131 +
119 var sentNotificationRepository domain.SentNotificationRepository 132 var sentNotificationRepository domain.SentNotificationRepository
120 if value, err := factory.CreateSentNotificationRepository(map[string]interface{}{ 133 if value, err := factory.CreateSentNotificationRepository(map[string]interface{}{
121 "transactionContext": transactionContext, 134 "transactionContext": transactionContext,
@@ -124,6 +137,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime @@ -124,6 +137,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime
124 } else { 137 } else {
125 sentNotificationRepository = value 138 sentNotificationRepository = value
126 } 139 }
  140 +
127 var taskDao *dao.TaskDao 141 var taskDao *dao.TaskDao
128 if value, err := factory.CreateTaskDao(map[string]interface{}{ 142 if value, err := factory.CreateTaskDao(map[string]interface{}{
129 "transactionContext": transactionContext, 143 "transactionContext": transactionContext,
@@ -132,6 +146,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime @@ -132,6 +146,7 @@ func (notificationService *NotificationService) SystemNotificationNearBidEndTime
132 } else { 146 } else {
133 taskDao = value 147 taskDao = value
134 } 148 }
  149 +
135 if tasks, err := taskDao.ListNearBidEndTimeTask(); err != nil { 150 if tasks, err := taskDao.ListNearBidEndTimeTask(); err != nil {
136 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 151 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
137 } else { 152 } else {
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +type EmployeesContributionsStatisticsCommand struct {
  10 + CompanyId int `json:"companyId" valid:"Required"` // 公司id
  11 + StartTime time.Time `json:"startTime"` // 年榜开始时间
  12 + EndTime time.Time `json:"endTime"` // 年榜结束时间
  13 +}
  14 +
  15 +func (employeesContributionsStatisticsCommand *EmployeesContributionsStatisticsCommand) ValidateCommand() error {
  16 + valid := validation.Validation{}
  17 + b, err := valid.Valid(employeesContributionsStatisticsCommand)
  18 + if err != nil {
  19 + return err
  20 + }
  21 + if !b {
  22 + for _, validErr := range valid.Errors {
  23 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  24 + }
  25 + }
  26 + return nil
  27 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/astaxie/beego/validation"
  8 +)
  9 +
  10 +type EmployeesSuMoneyStatisticsCommand struct {
  11 + CompanyId int `json:"companyId" valid:"Required"` // 公司id
  12 + StartTime time.Time `json:"startTime"` // 年榜开始时间
  13 + EndTime time.Time `json:"endTime"` // 年榜结束时间
  14 +}
  15 +
  16 +func (employeesSuMoneyStatisticsCommand *EmployeesSuMoneyStatisticsCommand) ValidateCommand() error {
  17 + valid := validation.Validation{}
  18 + b, err := valid.Valid(employeesSuMoneyStatisticsCommand)
  19 + if err != nil {
  20 + return err
  21 + }
  22 + if !b {
  23 + for _, validErr := range valid.Errors {
  24 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  25 + }
  26 + }
  27 + return nil
  28 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +type EmployeesRankingListStatisticsCommand struct {
  10 + CompanyId int `json:"companyId" valid:"Required"` // 公司id
  11 + StartTime time.Time `json:"startTime"` // 年榜开始时间
  12 + EndTime time.Time `json:"endTime"` // 年榜结束时间
  13 + Offset int `json:"offset,omitempty"` // 查询偏离量
  14 + Limit int `json:"limit,omitempty"` // 查询限制
  15 +}
  16 +
  17 +func (employeesRankingListStatisticsCommand *EmployeesRankingListStatisticsCommand) ValidateCommand() error {
  18 + valid := validation.Validation{}
  19 + b, err := valid.Valid(employeesRankingListStatisticsCommand)
  20 + if err != nil {
  21 + return err
  22 + }
  23 + if !b {
  24 + for _, validErr := range valid.Errors {
  25 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  26 + }
  27 + }
  28 + return nil
  29 +}
  30 +
@@ -9,6 +9,7 @@ import ( @@ -9,6 +9,7 @@ import (
9 type PersonTaskStatisticsCommand struct { 9 type PersonTaskStatisticsCommand struct {
10 // 统一用户UID 10 // 统一用户UID
11 Uid int64 `json:"uid" valid:"Required"` 11 Uid int64 `json:"uid" valid:"Required"`
  12 + CompanyId int `json:"companyId" valid:"Required"`
12 } 13 }
13 14
14 func (personTaskStatisticsCommand *PersonTaskStatisticsCommand) ValidateCommand() error { 15 func (personTaskStatisticsCommand *PersonTaskStatisticsCommand) ValidateCommand() error {
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/validation"
  7 +)
  8 +
  9 +// 获取系统现金值
  10 +type SystemCashStatisticsCommand struct {
  11 + CompanyId int64 `json:"companyId" valid:"Required"` // 公司ID
  12 +}
  13 +
  14 +func (systemCashStatisticsCommand *SystemCashStatisticsCommand) ValidateCommand() error {
  15 + valid := validation.Validation{}
  16 + b, err := valid.Valid(systemCashStatisticsCommand)
  17 + if err != nil {
  18 + return err
  19 + }
  20 + if !b {
  21 + for _, validErr := range valid.Errors {
  22 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  23 + }
  24 + }
  25 + return nil
  26 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +// 获取系统素币值
  9 +type SystemSuMoneyStatisticsCommand struct {
  10 + CompanyId int64 `json:"companyId" valid:"Required"` // 公司ID
  11 +}
  12 +
  13 +func (systemSuMoneyStatisticsCommand *SystemSuMoneyStatisticsCommand) ValidateCommand() error {
  14 + valid := validation.Validation{}
  15 + b, err := valid.Valid(systemSuMoneyStatisticsCommand)
  16 + if err != nil {
  17 + return err
  18 + }
  19 + if !b {
  20 + for _, validErr := range valid.Errors {
  21 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  22 + }
  23 + }
  24 + return nil
  25 +}
  26 +
@@ -2,10 +2,13 @@ package service @@ -2,10 +2,13 @@ package service
2 2
3 import ( 3 import (
4 "github.com/linmadan/egglib-go/core/application" 4 "github.com/linmadan/egglib-go/core/application"
  5 + "github.com/linmadan/egglib-go/utils/tool_funs"
5 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" 6 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory"
6 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/statistics/command" 7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/statistics/command"
  8 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/query"
7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" 9 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
8 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao" 10 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao"
  11 + "time"
9 ) 12 )
10 13
11 // 数据统计服务 14 // 数据统计服务
@@ -27,6 +30,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN @@ -27,6 +30,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN
27 defer func() { 30 defer func() {
28 transactionContext.RollbackTransaction() 31 transactionContext.RollbackTransaction()
29 }() 32 }()
  33 +
30 var employeeDao *dao.EmployeeDao 34 var employeeDao *dao.EmployeeDao
31 if value, err := factory.CreateEmployeeDao(map[string]interface{}{ 35 if value, err := factory.CreateEmployeeDao(map[string]interface{}{
32 "transactionContext": transactionContext, 36 "transactionContext": transactionContext,
@@ -35,6 +39,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN @@ -35,6 +39,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN
35 } else { 39 } else {
36 employeeDao = value 40 employeeDao = value
37 } 41 }
  42 +
38 var employeeRepository domain.EmployeeRepository 43 var employeeRepository domain.EmployeeRepository
39 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ 44 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
40 "transactionContext": transactionContext, 45 "transactionContext": transactionContext,
@@ -43,6 +48,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN @@ -43,6 +48,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN
43 } else { 48 } else {
44 employeeRepository = value 49 employeeRepository = value
45 } 50 }
  51 +
46 employee, err := employeeRepository.FindOne(map[string]interface{}{ 52 employee, err := employeeRepository.FindOne(map[string]interface{}{
47 "uid": personNotificationStatisticsCommand.Uid, 53 "uid": personNotificationStatisticsCommand.Uid,
48 }) 54 })
@@ -52,6 +58,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN @@ -52,6 +58,7 @@ func (statisticsService *StatisticsService) PersonNotificationStatistics(personN
52 if employee == nil { 58 if employee == nil {
53 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业员工") 59 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业员工")
54 } 60 }
  61 +
55 if personNotificationStatistics, err := employeeDao.CalculatePersonUnReadNotification(personNotificationStatisticsCommand.Uid); err != nil { 62 if personNotificationStatistics, err := employeeDao.CalculatePersonUnReadNotification(personNotificationStatisticsCommand.Uid); err != nil {
56 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 63 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
57 } else { 64 } else {
@@ -77,6 +84,7 @@ func (statisticsService *StatisticsService) SystemTaskStatistics(systemTaskStati @@ -77,6 +84,7 @@ func (statisticsService *StatisticsService) SystemTaskStatistics(systemTaskStati
77 defer func() { 84 defer func() {
78 transactionContext.RollbackTransaction() 85 transactionContext.RollbackTransaction()
79 }() 86 }()
  87 +
80 var taskDao *dao.TaskDao 88 var taskDao *dao.TaskDao
81 if value, err := factory.CreateTaskDao(map[string]interface{}{ 89 if value, err := factory.CreateTaskDao(map[string]interface{}{
82 "transactionContext": transactionContext, 90 "transactionContext": transactionContext,
@@ -85,6 +93,7 @@ func (statisticsService *StatisticsService) SystemTaskStatistics(systemTaskStati @@ -85,6 +93,7 @@ func (statisticsService *StatisticsService) SystemTaskStatistics(systemTaskStati
85 } else { 93 } else {
86 taskDao = value 94 taskDao = value
87 } 95 }
  96 +
88 if systemTaskStatistics, err := taskDao.CalculateSystemTask(systemTaskStatisticsCommand.CompanyId); err != nil { 97 if systemTaskStatistics, err := taskDao.CalculateSystemTask(systemTaskStatisticsCommand.CompanyId); err != nil {
89 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 98 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
90 } else { 99 } else {
@@ -110,6 +119,7 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati @@ -110,6 +119,7 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati
110 defer func() { 119 defer func() {
111 transactionContext.RollbackTransaction() 120 transactionContext.RollbackTransaction()
112 }() 121 }()
  122 +
113 var taskDao *dao.TaskDao 123 var taskDao *dao.TaskDao
114 if value, err := factory.CreateTaskDao(map[string]interface{}{ 124 if value, err := factory.CreateTaskDao(map[string]interface{}{
115 "transactionContext": transactionContext, 125 "transactionContext": transactionContext,
@@ -118,6 +128,7 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati @@ -118,6 +128,7 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati
118 } else { 128 } else {
119 taskDao = value 129 taskDao = value
120 } 130 }
  131 +
121 var employeeRepository domain.EmployeeRepository 132 var employeeRepository domain.EmployeeRepository
122 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ 133 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
123 "transactionContext": transactionContext, 134 "transactionContext": transactionContext,
@@ -126,6 +137,7 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati @@ -126,6 +137,7 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati
126 } else { 137 } else {
127 employeeRepository = value 138 employeeRepository = value
128 } 139 }
  140 +
129 employee, err := employeeRepository.FindOne(map[string]interface{}{ 141 employee, err := employeeRepository.FindOne(map[string]interface{}{
130 "uid": personTaskStatisticsCommand.Uid, 142 "uid": personTaskStatisticsCommand.Uid,
131 }) 143 })
@@ -135,7 +147,8 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati @@ -135,7 +147,8 @@ func (statisticsService *StatisticsService) PersonTaskStatistics(personTaskStati
135 if employee == nil { 147 if employee == nil {
136 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业员工") 148 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业员工")
137 } 149 }
138 - if personTaskStatistics, err := taskDao.CalculatePersonTask(personTaskStatisticsCommand.Uid); err != nil { 150 +
  151 + if personTaskStatistics, err := taskDao.CalculatePersonTask(personTaskStatisticsCommand.Uid, personTaskStatisticsCommand.CompanyId); err != nil {
139 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 152 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
140 } else { 153 } else {
141 if err := transactionContext.CommitTransaction(); err != nil { 154 if err := transactionContext.CommitTransaction(); err != nil {
@@ -160,6 +173,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone @@ -160,6 +173,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone
160 defer func() { 173 defer func() {
161 transactionContext.RollbackTransaction() 174 transactionContext.RollbackTransaction()
162 }() 175 }()
  176 +
163 var employeeDao *dao.EmployeeDao 177 var employeeDao *dao.EmployeeDao
164 if value, err := factory.CreateEmployeeDao(map[string]interface{}{ 178 if value, err := factory.CreateEmployeeDao(map[string]interface{}{
165 "transactionContext": transactionContext, 179 "transactionContext": transactionContext,
@@ -168,6 +182,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone @@ -168,6 +182,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone
168 } else { 182 } else {
169 employeeDao = value 183 employeeDao = value
170 } 184 }
  185 +
171 var employeeRepository domain.EmployeeRepository 186 var employeeRepository domain.EmployeeRepository
172 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ 187 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
173 "transactionContext": transactionContext, 188 "transactionContext": transactionContext,
@@ -176,6 +191,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone @@ -176,6 +191,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone
176 } else { 191 } else {
177 employeeRepository = value 192 employeeRepository = value
178 } 193 }
  194 +
179 employee, err := employeeRepository.FindOne(map[string]interface{}{ 195 employee, err := employeeRepository.FindOne(map[string]interface{}{
180 "uid": personSuMoneyStatisticsCommand.Uid, 196 "uid": personSuMoneyStatisticsCommand.Uid,
181 }) 197 })
@@ -185,6 +201,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone @@ -185,6 +201,7 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone
185 if employee == nil { 201 if employee == nil {
186 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业员工") 202 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的企业员工")
187 } 203 }
  204 +
188 if personSuMoneyStatistics, err := employeeDao.CalculatePersonSuMoney(personSuMoneyStatisticsCommand.Uid); err != nil { 205 if personSuMoneyStatistics, err := employeeDao.CalculatePersonSuMoney(personSuMoneyStatisticsCommand.Uid); err != nil {
189 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 206 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
190 } else { 207 } else {
@@ -196,6 +213,327 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone @@ -196,6 +213,327 @@ func (statisticsService *StatisticsService) PersonSuMoneyStatistics(personSuMone
196 } 213 }
197 } 214 }
198 215
  216 +// 获取系统素币统计
  217 +func (statisticsService *StatisticsService) SystemSuMoneyStatistics(systemSuMoneyStatisticsCommand *command.SystemSuMoneyStatisticsCommand) (interface{}, error) {
  218 + if err := systemSuMoneyStatisticsCommand.ValidateCommand(); err != nil {
  219 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  220 + }
  221 + transactionContext, err := factory.CreateTransactionContext(nil)
  222 + if err != nil {
  223 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  224 + }
  225 + if err := transactionContext.StartTransaction(); err != nil {
  226 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  227 + }
  228 + defer func() {
  229 + transactionContext.RollbackTransaction()
  230 + }()
  231 +
  232 + var employeeDao *dao.EmployeeDao
  233 + if value, err := factory.CreateEmployeeDao(map[string]interface{}{
  234 + "transactionContext": transactionContext,
  235 + }); err != nil {
  236 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  237 + } else {
  238 + employeeDao = value
  239 + }
  240 +
  241 + if systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(systemSuMoneyStatisticsCommand.CompanyId); err != nil {
  242 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  243 + } else {
  244 + if err := transactionContext.CommitTransaction(); err != nil {
  245 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  246 + }
  247 + return systemSuMoneyStatistics, nil
  248 + }
  249 +}
  250 +
  251 +// 获取系统现金统计
  252 +func (statisticsService *StatisticsService) SystemCashStatistics(systemCashStatisticsCommand *command.SystemCashStatisticsCommand) (interface{}, error) {
  253 + if err := systemCashStatisticsCommand.ValidateCommand(); err != nil {
  254 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  255 + }
  256 + transactionContext, err := factory.CreateTransactionContext(nil)
  257 + if err != nil {
  258 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  259 + }
  260 + if err := transactionContext.StartTransaction(); err != nil {
  261 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  262 + }
  263 + defer func() {
  264 + transactionContext.RollbackTransaction()
  265 + }()
  266 +
  267 + var employeeDao *dao.EmployeeDao
  268 + if value, err := factory.CreateEmployeeDao(map[string]interface{}{
  269 + "transactionContext": transactionContext,
  270 + }); err != nil {
  271 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  272 + } else {
  273 + employeeDao = value
  274 + }
  275 +
  276 + // 判断现金池是否存在
  277 + var cashPoolRepository domain.CashPoolRepository
  278 + if value, err := factory.CreateCashPoolRepository(map[string] interface{} {
  279 + "transactionContext": transactionContext,
  280 + }); err != nil {
  281 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  282 + } else {
  283 + cashPoolRepository = value
  284 + }
  285 +
  286 + countCashPools, _, err := cashPoolRepository.Find(tool_funs.SimpleStructToMap(systemCashStatisticsCommand))
  287 + if err != nil {
  288 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  289 + }
  290 + if countCashPools == 0 { // 现金池为空时处理
  291 + return map[string]interface{} {
  292 + "systemExchangedCash" : 0,
  293 + "systemUnExchangeCash": 0,
  294 + }, nil
  295 + }
  296 +
  297 + if systemCashStatistics, err := employeeDao.CalculateSystemCash(systemCashStatisticsCommand.CompanyId); err != nil {
  298 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  299 + } else {
  300 + if err := transactionContext.CommitTransaction(); err != nil {
  301 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  302 + }
  303 + return systemCashStatistics, nil
  304 + }
  305 +}
  306 +
  307 +// 获取公司员工财富值分组统计
  308 +func (statisticsService *StatisticsService) EmployeesSuMoneyStatistics(employeesSuMoneyStatisticsCommand *command.EmployeesSuMoneyStatisticsCommand) (interface{}, error) {
  309 + if err := employeesSuMoneyStatisticsCommand.ValidateCommand(); err != nil {
  310 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  311 + }
  312 +
  313 + transactionContext, err := factory.CreateTransactionContext(nil)
  314 + if err != nil {
  315 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  316 + }
  317 + if err := transactionContext.StartTransaction(); err != nil {
  318 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  319 + }
  320 + defer func() {
  321 + transactionContext.RollbackTransaction()
  322 + }()
  323 +
  324 + var employeeDao *dao.EmployeeDao
  325 + if value, err := factory.CreateEmployeeDao(map[string]interface{}{
  326 + "transactionContext": transactionContext,
  327 + }); err != nil {
  328 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  329 + } else {
  330 + employeeDao = value
  331 + }
  332 +
  333 + if employeesSuMoneyStatisticsCommand.StartTime.IsZero() && employeesSuMoneyStatisticsCommand.EndTime.IsZero() {
  334 + employeesSuMoneyStatisticsCommand.StartTime = time.Date(1971, time.Month(1), 1, 0, 0, 0, 0, time.Now().Location())
  335 + employeesSuMoneyStatisticsCommand.EndTime = time.Now().Local()
  336 + }
  337 +
  338 + if employeesSuMoneyStatistics, err := employeeDao.CalculateEmployeesSuMoney(employeesSuMoneyStatisticsCommand.CompanyId, employeesSuMoneyStatisticsCommand.StartTime, employeesSuMoneyStatisticsCommand.EndTime); err != nil {
  339 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  340 + } else {
  341 + if err := transactionContext.CommitTransaction(); err != nil {
  342 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  343 + }
  344 + return employeesSuMoneyStatistics, nil
  345 + }
  346 +}
  347 +
  348 +// 获取公司员工贡献值分组统计
  349 +func (statisticsService *StatisticsService) EmployeesContributionsStatistics(employeesContributionsStatisticsCommand *command.EmployeesContributionsStatisticsCommand) (interface{}, error) {
  350 + if err := employeesContributionsStatisticsCommand.ValidateCommand(); err != nil {
  351 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  352 + }
  353 + transactionContext, err := factory.CreateTransactionContext(nil)
  354 + if err != nil {
  355 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  356 + }
  357 + if err := transactionContext.StartTransaction(); err != nil {
  358 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  359 + }
  360 + defer func() {
  361 + transactionContext.RollbackTransaction()
  362 + }()
  363 +
  364 + var employeeDao *dao.EmployeeDao
  365 + if value, err := factory.CreateEmployeeDao(map[string]interface{}{
  366 + "transactionContext": transactionContext,
  367 + }); err != nil {
  368 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  369 + } else {
  370 + employeeDao = value
  371 + }
  372 +
  373 + if employeesContributionsStatisticsCommand.StartTime.IsZero() && employeesContributionsStatisticsCommand.EndTime.IsZero() {
  374 + employeesContributionsStatisticsCommand.StartTime = time.Date(1971, time.Month(1), 1, 0, 0, 0, 0, time.Now().Location())
  375 + employeesContributionsStatisticsCommand.EndTime = time.Now().Local()
  376 + }
  377 +
  378 + if employeesContributionsStatistics, err := employeeDao.CalculateEmployeesContributions(employeesContributionsStatisticsCommand.CompanyId, employeesContributionsStatisticsCommand.StartTime, employeesContributionsStatisticsCommand.EndTime); err != nil {
  379 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  380 + } else {
  381 + if err := transactionContext.CommitTransaction(); err != nil {
  382 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  383 + }
  384 + return employeesContributionsStatistics, nil
  385 + }
  386 +}
  387 +
  388 +// 贡献值、财富值榜单
  389 +func (statisticsService *StatisticsService) ContributionsWealthRanking(contributionsWealthRankingQuery *query.ContributionsWealthRankingQuery) (interface{}, error) {
  390 + if err := contributionsWealthRankingQuery.ValidateQuery(); err != nil {
  391 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  392 + }
  393 +
  394 + transactionContext, err := factory.CreateTransactionContext(nil)
  395 + if err != nil {
  396 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  397 + }
  398 + if err := transactionContext.StartTransaction(); err != nil {
  399 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  400 + }
  401 + defer func() {
  402 + transactionContext.RollbackTransaction()
  403 + }()
  404 +
  405 + // 员工仓储初始化
  406 + var employeeRepository domain.EmployeeRepository
  407 + if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
  408 + "transactionContext": transactionContext,
  409 + }); err != nil {
  410 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  411 + } else {
  412 + employeeRepository = value
  413 + }
  414 +
  415 + // 员工DAO初始化
  416 + var employeeDao *dao.EmployeeDao
  417 + if value, err := factory.CreateEmployeeDao(map[string]interface{}{
  418 + "transactionContext": transactionContext,
  419 + }); err != nil {
  420 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  421 + } else {
  422 + employeeDao = value
  423 + }
  424 +
  425 + if contributionsWealthRankingQuery.RankingType == 1 { // 返回总榜
  426 + contributionsWealthRankingQuery.StartTime = time.Date(0001, 01, 01, 0, 0, 0, 0, time.UTC)
  427 + contributionsWealthRankingQuery.EndTime = time.Date(0001, 01, 01, 0, 0, 0, 0, time.UTC)
  428 + } else if contributionsWealthRankingQuery.RankingType == 2 { // 返回年榜
  429 + // 获取公司最新年榜
  430 + var listIntervalRepository domain.ListIntervalRepository
  431 + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{
  432 + "transactionContext": transactionContext,
  433 + }); err != nil {
  434 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  435 + } else {
  436 + listIntervalRepository = value
  437 + }
  438 +
  439 + listListIntervalQuery := map[string]interface{} {
  440 + "companyId": contributionsWealthRankingQuery.CompanyId,
  441 + }
  442 +
  443 + if _, listIntervals, err := listIntervalRepository.FindAll(listListIntervalQuery); err != nil {
  444 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  445 + } else {
  446 + if len(listIntervals) == 0 { // 未配置年榜
  447 + contributionsWealthRankingQuery.StartTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  448 + contributionsWealthRankingQuery.EndTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  449 + } else if len(listIntervals) == 1 { // 只配置了一个年榜
  450 + currentTime := time.Now().Unix()
  451 + if currentTime >= listIntervals[0].IntervalStartTime.Unix() && currentTime <= listIntervals[0].IntervalEndTime.Unix() {
  452 + contributionsWealthRankingQuery.StartTime = listIntervals[0].IntervalStartTime
  453 + contributionsWealthRankingQuery.EndTime = listIntervals[0].IntervalEndTime
  454 + } else { // 当前时间处于空档期
  455 + contributionsWealthRankingQuery.StartTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  456 + contributionsWealthRankingQuery.EndTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  457 + }
  458 + } else if len(listIntervals) > 1 { // 配置了多个年榜,判断当前时间是否在榜单里
  459 + currentTime := time.Now().Unix()
  460 + for _, listInterval := range listIntervals {
  461 + if currentTime >= listInterval.IntervalStartTime.Unix() && currentTime <= listInterval.IntervalEndTime.Unix() {
  462 + contributionsWealthRankingQuery.StartTime = listInterval.IntervalStartTime
  463 + contributionsWealthRankingQuery.EndTime = listInterval.IntervalEndTime
  464 + break
  465 + } else { // 当前时间处于空档期
  466 + contributionsWealthRankingQuery.StartTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  467 + contributionsWealthRankingQuery.EndTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  468 + continue
  469 + }
  470 + }
  471 + } else {
  472 + contributionsWealthRankingQuery.StartTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  473 + contributionsWealthRankingQuery.EndTime = time.Date(0001, 01, 02, 0, 0, 0, 0, time.Local)
  474 + }
  475 + }
  476 + }
  477 +
  478 + // 默认返回总榜
  479 + if contributionsWealthRankingStatistics, err := employeeDao.ContributionsWealthRanking(tool_funs.SimpleStructToMap(contributionsWealthRankingQuery)); err != nil {
  480 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  481 + } else {
  482 + uidName := map[int64]interface{}{}
  483 + if _, employees, err := employeeRepository.FindAll(map[string]interface{}{
  484 + "companyId": contributionsWealthRankingQuery.CompanyId,
  485 + }); err != nil {
  486 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  487 + } else {
  488 + for _, employee := range employees {
  489 + uidName[employee.EmployeeInfo.Uid] = employee.EmployeeInfo.EmployeeName
  490 + }
  491 + }
  492 +
  493 + // 财富值排行榜
  494 + for i, _ := range contributionsWealthRankingStatistics.(map[string]interface{})["employeesWealth"].([]struct{Uid int64;EmployeeName string;EmployeeSuMoney float64;Ranking int}) {
  495 + uid := contributionsWealthRankingStatistics.(map[string]interface{})["employeesWealth"].([]struct{Uid int64;EmployeeName string;EmployeeSuMoney float64;Ranking int})[i].Uid
  496 + if uidName[uid] != nil {
  497 + contributionsWealthRankingStatistics.(map[string]interface{})["employeesWealth"].([]struct{Uid int64;EmployeeName string;EmployeeSuMoney float64;Ranking int})[i].EmployeeName = uidName[uid].(string)
  498 + }
  499 + }
  500 +
  501 + // 个人财富值
  502 + if contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeWealth"] != nil {
  503 + currentEmployeeWealth := contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeWealth"].(struct{Uid int64;EmployeeName string;EmployeeSuMoney float64;Ranking int})
  504 + uidWealth := contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeWealth"].(struct{Uid int64;EmployeeName string;EmployeeSuMoney float64;Ranking int}).Uid
  505 + if uidName[uidWealth] != nil {
  506 + currentEmployeeWealth.EmployeeName = uidName[uidWealth].(string)
  507 + }
  508 + contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeWealth"] = currentEmployeeWealth
  509 + }
  510 +
  511 + // 贡献值排行版
  512 + for i, _ := range contributionsWealthRankingStatistics.(map[string]interface{})["employeesContributions"].([]struct { Uid int64; EmployeeName string; EmployeesContributions float64; Ranking int }) {
  513 + uid := contributionsWealthRankingStatistics.(map[string]interface{})["employeesContributions"].([]struct{Uid int64;EmployeeName string;EmployeesContributions float64;Ranking int})[i].Uid
  514 + if uidName[uid] != nil {
  515 + contributionsWealthRankingStatistics.(map[string]interface{})["employeesContributions"].([]struct{Uid int64;EmployeeName string;EmployeesContributions float64;Ranking int})[i].EmployeeName = uidName[uid].(string)
  516 + }
  517 + }
  518 +
  519 + // 个人贡献值
  520 + if contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeContributions"] != nil {
  521 + currentEmployeeContributions := contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeContributions"].(struct{Uid int64;EmployeeName string;EmployeesContributions float64;Ranking int})
  522 + uidContributions := contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeContributions"].(struct{Uid int64;EmployeeName string;EmployeesContributions float64;Ranking int}).Uid
  523 + if uidName[uidContributions] != nil {
  524 + currentEmployeeContributions.EmployeeName = uidName[uidContributions].(string)
  525 + }
  526 + contributionsWealthRankingStatistics.(map[string]interface{})["currentEmployeeContributions"] = currentEmployeeContributions
  527 + }
  528 +
  529 + if err := transactionContext.CommitTransaction(); err != nil {
  530 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  531 + }
  532 +
  533 + return contributionsWealthRankingStatistics, nil
  534 + }
  535 +}
  536 +
199 func NewStatisticsService(options map[string]interface{}) *StatisticsService { 537 func NewStatisticsService(options map[string]interface{}) *StatisticsService {
200 newStatisticsService := &StatisticsService{} 538 newStatisticsService := &StatisticsService{}
201 return newStatisticsService 539 return newStatisticsService
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +type ContributionsTransactionRecordStatisticsCommand struct {
  10 + // 统一用户UID
  11 + Uid int64 `json:"uid" valid:"Required"`
  12 + // 事务时间区间-开始时间
  13 + TransactionStartTime time.Time `json:"transactionStartTime,omitempty"`
  14 + // 事务时间区间-截止时间
  15 + TransactionEndTime time.Time `json:"transactionEndTime,omitempty"`
  16 +}
  17 +
  18 +func (contributionsTransactionRecordStatisticsCommand *ContributionsTransactionRecordStatisticsCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(contributionsTransactionRecordStatisticsCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/validation"
  7 +)
  8 +
  9 +// 创建现金池
  10 +type CreateCashPoolCommand struct {
  11 + CompanyId int64 `json:"companyId" valid:"Required"` // 公司ID
  12 + Cash float64 `json:"cash" valid:"Required"` // 投入的现金值
  13 +}
  14 +
  15 +func (createCashPoolCommand *CreateCashPoolCommand) ValidateCommand() error {
  16 + valid := validation.Validation{}
  17 + rt, err := valid.Valid(createCashPoolCommand)
  18 + if err != nil {
  19 + return err
  20 + }
  21 + if !rt {
  22 + for _, validErr := range valid.Errors {
  23 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  24 + }
  25 + }
  26 + return nil
  27 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +// 创建现金兑换活动
  10 +type CreateExchangeCashActivityCommand struct {
  11 + CompanyId int64 `json:"companyId" valid:"Required"` // 公司id
  12 + ExchangeActivityName string `json:"exchangeActivityName"` // 活动名称
  13 + Deadline time.Time `json:"deadline"` // 活动截止时间
  14 + ExchangeRate float64 `json:"exchangeRate"` // 兑换汇率
  15 + CreateTime time.Time `json:"createTime"` // 创建时间
  16 +}
  17 +
  18 +func (createExchangeActivityCommand *CreateExchangeCashActivityCommand) ValidateCommand() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(createExchangeActivityCommand)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type CreateExchangeCashPersonCommand struct {
  9 + Uid int64 `json:"uid"` // 统一用户id
  10 + PersonName string `json:"personName,omitempty"` // 兑换现金人员名称
  11 + Operator int64 `json:"operator"` // 操作人
  12 + PersonAccount string `json:"personAccount,omitempty"` // 手机账号
  13 + ExchangeCashActivityId int64 `json:"exchangeCashActivityId" valid:"Required"` // 参与的兑换活动id
  14 + ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换素币值
  15 +}
  16 +
  17 +func (createExchangeCashPersonCommand *CreateExchangeCashPersonCommand) ValidateCommand() error {
  18 + valid := validation.Validation{}
  19 + b, err := valid.Valid(createExchangeCashPersonCommand)
  20 + if err != nil {
  21 + return err
  22 + }
  23 + if !b {
  24 + for _, validErr := range valid.Errors {
  25 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  26 + }
  27 + }
  28 + return nil
  29 +}
@@ -7,14 +7,10 @@ import ( @@ -7,14 +7,10 @@ import (
7 ) 7 )
8 8
9 type ExchangeSuMoneyCommand struct { 9 type ExchangeSuMoneyCommand struct {
10 - // 兑换人UID  
11 - Uid int64 `json:"uid" valid:"Required"`  
12 - // 素币值  
13 - SuMoney float64 `json:"suMoney" valid:"Required"`  
14 - // 操作人UID  
15 - Operator int64 `json:"operator,omitempty"`  
16 - // 兑换描述  
17 - ExchangeDescription string `json:"exchangeDescription" valid:"Required"` 10 + Uid int64 `json:"uid" valid:"Required"` // 兑换人UID
  11 + SuMoney float64 `json:"suMoney" valid:"Required"` // 素币值
  12 + Operator int64 `json:"operator,omitempty"` // 操作人UID
  13 + ExchangeDescription string `json:"exchangeDescription" valid:"Required"` // 兑换描述
18 } 14 }
19 15
20 func (exchangeSuMoneyCommand *ExchangeSuMoneyCommand) ValidateCommand() error { 16 func (exchangeSuMoneyCommand *ExchangeSuMoneyCommand) ValidateCommand() error {
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type ExportExchangeCashListCommand struct {
  9 + Ids []int `json:"ids"`
  10 + Where map[string]interface{} `json:"where"`
  11 +}
  12 +
  13 +func (exportExchangeCashListCommand *ExportExchangeCashListCommand) ValidateCommand() error {
  14 + valid := validation.Validation{}
  15 + b, err := valid.Valid(exportExchangeCashListCommand)
  16 + if err != nil {
  17 + return err
  18 + }
  19 + if !b {
  20 + for _, validErr := range valid.Errors {
  21 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  22 + }
  23 + }
  24 + return nil
  25 +}
  26 +
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type ExportSuMoneyCommand struct {
  9 + Ids []int `json:"ids"` // 员工uid
  10 + Where map[string]interface{} `json:"where"`
  11 +}
  12 +
  13 +func (exportSuMoneyCommand *ExportSuMoneyCommand) ValidateCommand() error {
  14 + valid := validation.Validation{}
  15 + b, err := valid.Valid(exportSuMoneyCommand)
  16 + if err != nil {
  17 + return err
  18 + }
  19 + if !b {
  20 + for _, validErr := range valid.Errors {
  21 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  22 + }
  23 + }
  24 + return nil
  25 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type ExportTransactionRecordCommand struct {
  9 + Ids []int `json:"ids"`
  10 + Where map[string]interface{} `json:"where"`
  11 +}
  12 +
  13 +func (exportTransactionRecordCommand *ExportTransactionRecordCommand) ValidateCommand() error {
  14 + valid := validation.Validation{}
  15 + b, err := valid.Valid(exportTransactionRecordCommand)
  16 + if err != nil {
  17 + return err
  18 + }
  19 + if !b {
  20 + for _, validErr := range valid.Errors {
  21 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  22 + }
  23 + }
  24 + return nil
  25 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type ImportExchangeCashListCommand struct {
  9 + Where map[string]interface{} `json:"where"`
  10 +}
  11 +
  12 +func (importExchangeCashListCommand *ImportExchangeCashListCommand) ValidateCommand() error {
  13 + valid := validation.Validation{}
  14 + b, err := valid.Valid(importExchangeCashListCommand)
  15 + if err != nil {
  16 + return err
  17 + }
  18 + if !b {
  19 + for _, validErr := range valid.Errors {
  20 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  21 + }
  22 + }
  23 + return nil
  24 +}
@@ -7,16 +7,11 @@ import ( @@ -7,16 +7,11 @@ import (
7 ) 7 )
8 8
9 type OperationSuMoneyCommand struct { 9 type OperationSuMoneyCommand struct {
10 - // 素币拥有者UID  
11 - Uid int64 `json:"uid" valid:"Required"`  
12 - // 操作类型(1增加,2扣除)  
13 - OperationType int `json:"operationType" valid:"Required"`  
14 - // 素币值  
15 - SuMoney float64 `json:"suMoney" valid:"Required"`  
16 - // 操作人UID  
17 - Operator int64 `json:"operator,omitempty"`  
18 - // 理由描述  
19 - OperationDescription string `json:"operationDescription" valid:"Required"` 10 + Uid int64 `json:"uid" valid:"Required"` // 素币拥有者UID
  11 + OperationType int `json:"operationType" valid:"Required"` // 操作类型(1增加,2扣除, 3兑换物资, 4兑换现金)
  12 + SuMoney float64 `json:"suMoney" valid:"Required"` // 素币值
  13 + Operator int64 `json:"operator,omitempty"` // 操作人UID
  14 + OperationDescription string `json:"operationDescription" valid:"Required"` // 理由描述
20 } 15 }
21 16
22 func (operationSuMoneyCommand *OperationSuMoneyCommand) ValidateCommand() error { 17 func (operationSuMoneyCommand *OperationSuMoneyCommand) ValidateCommand() error {
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/validation"
  7 +)
  8 +
  9 +// 删除兑换现金活动
  10 +type RemoveExchangeCashActivityCommand struct {
  11 + ActivityId int64 `json:"activityId" valid:"Required"`
  12 +}
  13 +
  14 +func (removeExchangeCashActivityCommand *RemoveExchangeCashActivityCommand) ValidateCommand() error {
  15 + valid := validation.Validation{}
  16 + b, err := valid.Valid(removeExchangeCashActivityCommand)
  17 + if err != nil {
  18 + return err
  19 + }
  20 + if !b {
  21 + for _, validErr := range valid.Errors {
  22 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  23 + }
  24 + }
  25 + return nil
  26 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +// 移除兑换现金人员
  9 +type RemoveExchangeCashPersonCommand struct {
  10 + ListId int64 `json:"listId" valid:"Required"` // 兑换现金人员编号
  11 + Operator int64 `json:"operator,omitempty"` // 操作人
  12 +}
  13 +
  14 +func (removeExchangeCashPersonCommand *RemoveExchangeCashPersonCommand) ValidateCommand() error {
  15 + valid := validation.Validation{}
  16 + b, err := valid.Valid(removeExchangeCashPersonCommand)
  17 + if err != nil {
  18 + return err
  19 + }
  20 + if !b {
  21 + for _, validErr := range valid.Errors {
  22 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  23 + }
  24 + }
  25 + return nil
  26 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type SearchExchangeCashActivityCommand struct {
  9 + ActivityNameMatch string `json:"activityNameMatch"` // 兑换现金活动名称
  10 + CompanyId int64 `json:"companyId"` // 公司id
  11 + Deadline string `json:"deadline,omitempty"` // 截止时间筛选
  12 + Offset int `json:"offset,omitempty"` // 查询偏移量
  13 + Limit int `json:"limit,omitempty"` // 查询限制条目
  14 +}
  15 +
  16 +func (searchExchangeCashActivityCommand *SearchExchangeCashActivityCommand) ValidateCommand() error {
  17 + valid := validation.Validation{}
  18 + b, err := valid.Valid(searchExchangeCashActivityCommand)
  19 + if err != nil {
  20 + return err
  21 + }
  22 + if !b {
  23 + for _, validErr := range valid.Errors {
  24 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  25 + }
  26 + }
  27 + return nil
  28 +}
  29 +
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type SearchExchangeCashPersonCommand struct {
  9 + ListName string `json:"listName"` // 兑换素币人员名称
  10 +}
  11 +
  12 +func (searchExchangeCashPersonCommand *SearchExchangeCashPersonCommand) ValidateCommand() error {
  13 + valid := validation.Validation{}
  14 + b, err := valid.Valid(searchExchangeCashPersonCommand)
  15 + if err != nil {
  16 + return err
  17 + }
  18 + if !b {
  19 + for _, validErr := range valid.Errors {
  20 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  21 + }
  22 + }
  23 + return nil
  24 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type SearchSuMoneyTransactionCommand struct {
  9 + EmployeeName string `json:"employeeName"` // 员工姓名
  10 +}
  11 +
  12 +func (searchSuMoneyTransactionCommand *SearchSuMoneyTransactionCommand) ValidateCommand() error {
  13 + valid := validation.Validation{}
  14 + b, err := valid.Valid(searchSuMoneyTransactionCommand)
  15 + if err != nil {
  16 + return err
  17 + }
  18 + if !b {
  19 + for _, validErr := range valid.Errors {
  20 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  21 + }
  22 + }
  23 + return nil
  24 +}
@@ -9,17 +9,20 @@ import ( @@ -9,17 +9,20 @@ import (
9 9
10 type SearchSuMoneyTransactionRecordCommand struct { 10 type SearchSuMoneyTransactionRecordCommand struct {
11 // 统一用户UID 11 // 统一用户UID
12 - Uid int64 `json:"uid" valid:"Required"` 12 + //Uid int64 `json:"uid" valid:"Required"`
  13 + Uid int64 `json:"uid"`
13 // 记录类型(1兑换,2任务奖励,3增加,4扣除) 14 // 记录类型(1兑换,2任务奖励,3增加,4扣除)
14 RecordType int `json:"recordType,omitempty"` 15 RecordType int `json:"recordType,omitempty"`
15 // 记录类型列表(1兑换,2任务奖励,3增加,4扣除) 16 // 记录类型列表(1兑换,2任务奖励,3增加,4扣除)
16 RecordTypes []int `json:"recordTypes,omitempty"` 17 RecordTypes []int `json:"recordTypes,omitempty"`
17 - // 操作人UID  
18 // 事务时间区间-开始时间 18 // 事务时间区间-开始时间
19 TransactionStartTime time.Time `json:"transactionStartTime,omitempty"` 19 TransactionStartTime time.Time `json:"transactionStartTime,omitempty"`
20 // 事务时间区间-截止时间 20 // 事务时间区间-截止时间
21 TransactionEndTime time.Time `json:"transactionEndTime,omitempty"` 21 TransactionEndTime time.Time `json:"transactionEndTime,omitempty"`
  22 + // 操作人UID
22 Operator int64 `json:"operator,omitempty"` 23 Operator int64 `json:"operator,omitempty"`
  24 + // 关联人员姓名
  25 + EmployeeMatchName string `json:"employeeMatchName"`
23 // 查询偏离量 26 // 查询偏离量
24 Offset int `json:"offset,omitempty"` 27 Offset int `json:"offset,omitempty"`
25 // 查询限制 28 // 查询限制
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type UpdateCashPoolCommand struct {
  9 + CashPoolId int64 `json:"cashPoolId"` // 现金池编号
  10 + ExchangedCash float64 `json:"exchangedCash"` // 已兑换现金
  11 + ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换素币
  12 + UnExchangeCash float64 `json:"unExchangeCash"` // 未兑换现金
  13 + UnExchangeSuMoney float64 `json:"unExchangeSuMoney"` // 未兑换素币
  14 + Rate float64 `json:"rate"` // 平均兑换汇率
  15 + Cash float64 `json:"cash"`
  16 + //CompanyId int64 `json:"companyId"`
  17 + LastRate float64 `json:"lastRate"`
  18 + //CreateTime time.Time `json:"createTime"`
  19 +}
  20 +
  21 +func (updateCashPoolCommand *UpdateCashPoolCommand) ValidateCommand() error {
  22 + valid := validation.Validation{}
  23 + b, err := valid.Valid(updateCashPoolCommand)
  24 + if err != nil {
  25 + return err
  26 + }
  27 + if !b {
  28 + for _, validErr := range valid.Errors {
  29 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  30 + }
  31 + }
  32 + return nil
  33 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +type UpdateExchangeCashActivityCommand struct {
  10 + ExchangeCashActivityId int64 `json:"exchangeCashActivityId"` // 兑换现金活动id
  11 + ExchangeActivityName string `json:"exchangeActivityName"` // 活动名称
  12 + Deadline time.Time `json:"deadline"` // 活动截止时间
  13 + CountDown int64 `json:"countDown"` // 活动倒计时
  14 + ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换素币
  15 + ExchangedCash float64 `json:"exchangedCash"` // 已兑换现金
  16 + ExchangeRate float64 `json:"exchangeRate"` // 兑换汇率
  17 +}
  18 +
  19 +func (updateExchangeCashActivity *UpdateExchangeCashActivityCommand) ValidateCommand() error {
  20 + valid := validation.Validation{}
  21 + b, err := valid.Valid(updateExchangeCashActivity)
  22 + if err != nil {
  23 + return err
  24 + }
  25 + if !b {
  26 + for _, validErr := range valid.Errors {
  27 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  28 + }
  29 + }
  30 + return nil
  31 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type UpdateExchangeCashPersonCommand struct {
  9 + ListId int64 `json:"listId" valid:"Required"` // 兑换现金人员编号
  10 + ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换的素币(需要和当前的已兑换素币进行比较,少于当前已兑换素币则生成一条扣除素币记录,大于当前已兑换素币则生成一条增加素币记录)
  11 + ExchangedCash float64 `json:"exchangedCash"` // 已兑换现金
  12 + Operator int64 `json:"operator,omitempty"` // 操作人
  13 +}
  14 +
  15 +func (updateExchangeCashPersonCommand *UpdateExchangeCashPersonCommand) ValidateCommand() error {
  16 + valid := validation.Validation{}
  17 + b, err := valid.Valid(updateExchangeCashPersonCommand)
  18 + if err != nil {
  19 + return err
  20 + }
  21 + if !b {
  22 + for _, validErr := range valid.Errors {
  23 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  24 + }
  25 + }
  26 + return nil
  27 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 + "time"
  7 +)
  8 +
  9 +type ContributionsWealthRankingQuery struct {
  10 + CompanyId int64 `json:"companyId" valid:"Required"` // 公司ID
  11 + RankingType int `json:"rankingType" valid:"Required"` // 榜单类型,区分总榜和年榜 1:总榜,2:年榜
  12 + Offset int `json:"offset,omitempty"` // 查询偏离量
  13 + Limit int `json:"limit,omitempty"` // 查询限制
  14 + Uid int64 `json:"uid" valid:"Required"` // 统一用户id
  15 + StartTime time.Time `json:"startTime"` // 榜单开始时间,由后台根据榜单类型后去
  16 + EndTime time.Time `json:"endTime"` // 榜单结束更新,由后台根据榜单类型获取
  17 +}
  18 +
  19 +func (contributionsWealthRankingQuery *ContributionsWealthRankingQuery) ValidateQuery() error {
  20 + valid := validation.Validation{}
  21 + b, err := valid.Valid(contributionsWealthRankingQuery)
  22 + if err != nil {
  23 + return err
  24 + }
  25 + if !b {
  26 + for _, validErr := range valid.Errors {
  27 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  28 + }
  29 + }
  30 + return nil
  31 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type ExchangeListRankingQuery struct {
  9 + ActivityId int64 `json:"activityId"`
  10 + CompanyId int64 `json:"companyId"` // 公司ID
  11 + Offset int `json:"offset,omitempty"` // 查询偏离量
  12 + Limit int `json:"limit,omitempty"` // 查询限制
  13 + Uid int64 `json:"uid"` // 统一用户id
  14 +}
  15 +
  16 +func (exchangeListRankingQuery *ExchangeListRankingQuery) ValidateCommand() error {
  17 + valid := validation.Validation{}
  18 + b, err := valid.Valid(exchangeListRankingQuery)
  19 + if err != nil {
  20 + return err
  21 + }
  22 + if !b {
  23 + for _, validErr := range valid.Errors {
  24 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  25 + }
  26 + }
  27 + return nil
  28 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +// 获取现金池
  9 +type GetCashPoolQuery struct {
  10 + CompanyId int64 `json:"companyId" valid:"Required"` // 公司id
  11 +}
  12 +
  13 +func (getCashPoolQuery *GetCashPoolQuery) ValidateQuery() error {
  14 + valid := validation.Validation{}
  15 + b, err := valid.Valid(getCashPoolQuery)
  16 + if err != nil {
  17 + return err
  18 + }
  19 + if !b {
  20 + for _, validErr := range valid.Errors {
  21 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  22 + }
  23 + }
  24 + return nil
  25 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +// 获取兑换现金活动
  9 +type GetExchangeCashActivityQuery struct {
  10 + ExchangeCashActivityId int64 `json:"exchangeCashActivityId"` // 兑换现金活动id
  11 +}
  12 +
  13 +func (getExchangeCashActivityQuery *GetExchangeCashActivityQuery) ValidateQuery() error {
  14 + valid := validation.Validation{}
  15 + b, err := valid.Valid(getExchangeCashActivityQuery)
  16 + if err != nil {
  17 + return err
  18 + }
  19 + if !b {
  20 + for _, validErr := range valid.Errors {
  21 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  22 + }
  23 + }
  24 + return nil
  25 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/validation"
  7 +)
  8 +
  9 +type GetExchangeCashPersonQuery struct {
  10 + ExchangeCashPersonId int64 `json:"exchangeCashPersonId"` // 参与兑换现金活动人员id
  11 +}
  12 +
  13 +func (getExchangeCashPersonQuery *GetExchangeCashPersonQuery) ValidateQuery() error {
  14 + valid := validation.Validation{}
  15 + b, err := valid.Valid(getExchangeCashPersonQuery)
  16 + if err != nil {
  17 + return err
  18 + }
  19 + if !b {
  20 + for _, validErr := range valid.Errors {
  21 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  22 + }
  23 + }
  24 + return nil
  25 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +// 获取兑换现金活动列表
  9 +type ListExchangeCashActivityQuery struct {
  10 + CompanyId int64 `json:"companyId"` // 公司id
  11 + ActivityNameMatch string `json:"activityNameMatch,omitempty"` // 活动名称匹配
  12 + //Deadline time.Time `json:"deadline,omitempty"` // 截止时间筛选
  13 + IsEnd bool `json:"isEnd"` // 已结束活动和未结束活动筛选 true: 已结束活动 false: 未结束活动
  14 + Offset int `json:"offset,omitempty"` // 查询偏移量
  15 + Limit int `json:"limit,omitempty"` // 查询限制条目
  16 +}
  17 +
  18 +func (listExchangeCashActivityQuery *ListExchangeCashActivityQuery) ValidateQuery() error {
  19 + valid := validation.Validation{}
  20 + b, err := valid.Valid(listExchangeCashActivityQuery)
  21 + if err != nil {
  22 + return err
  23 + }
  24 + if !b {
  25 + for _, validErr := range valid.Errors {
  26 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  27 + }
  28 + }
  29 + return nil
  30 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +type ListExchangeCashActivityDeadlineQuery struct {
  9 + CompanyId int64 `json:"companyId"` // 公司id
  10 +}
  11 +
  12 +func (listExchangeCashActivityDeadlineQuery *ListExchangeCashActivityDeadlineQuery) ValidateQuery() error {
  13 + valid := validation.Validation{}
  14 + b, err := valid.Valid(listExchangeCashActivityDeadlineQuery)
  15 + if err != nil {
  16 + return err
  17 + }
  18 + if !b {
  19 + for _, validErr := range valid.Errors {
  20 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  21 + }
  22 + }
  23 + return nil
  24 +}
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego/validation"
  6 +)
  7 +
  8 +// 获取兑换活动兑换清单
  9 +type ListExchangeCashPersonQuery struct {
  10 + CompanyId int64 `json:"companyId"` // 公司id
  11 + ExchangeCashActivityId int64 `json:"exchangeCashActivityId"` // 兑换现金活动id
  12 + ExchangeCashPersonNameMatch string `json:"exchangeCashPersonNameMatch,omitempty"` // 兑换活动名称匹配
  13 + Offset int `json:"offset,omitempty"` // 查询偏离量
  14 + Limit int `json:"limit,omitempty"` // 查询限制
  15 +}
  16 +
  17 +func (listExchangeCashPersonQuery *ListExchangeCashPersonQuery) ValidateQuery() error {
  18 + valid := validation.Validation{}
  19 + b, err := valid.Valid(listExchangeCashPersonQuery)
  20 + if err != nil {
  21 + return err
  22 + }
  23 + if !b {
  24 + for _, validErr := range valid.Errors {
  25 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  26 + }
  27 + }
  28 + return nil
  29 +}
@@ -30,6 +30,18 @@ func (suMoneyService *SuMoneyService) OperationSuMoney(operationSuMoneyCommand * @@ -30,6 +30,18 @@ func (suMoneyService *SuMoneyService) OperationSuMoney(operationSuMoneyCommand *
30 defer func() { 30 defer func() {
31 transactionContext.RollbackTransaction() 31 transactionContext.RollbackTransaction()
32 }() 32 }()
  33 +
  34 + // 员工仓储初始化
  35 + var employeeRepository domain.EmployeeRepository
  36 + if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
  37 + "transactionContext": transactionContext,
  38 + }); err != nil {
  39 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  40 + } else {
  41 + employeeRepository = value
  42 + }
  43 +
  44 + // 操作素币服务初始化
33 var operationSuMoneyService service.OperationSuMoneyService 45 var operationSuMoneyService service.OperationSuMoneyService
34 if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ 46 if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{
35 "transactionContext": transactionContext, 47 "transactionContext": transactionContext,
@@ -38,6 +50,20 @@ func (suMoneyService *SuMoneyService) OperationSuMoney(operationSuMoneyCommand * @@ -38,6 +50,20 @@ func (suMoneyService *SuMoneyService) OperationSuMoney(operationSuMoneyCommand *
38 } else { 50 } else {
39 operationSuMoneyService = value 51 operationSuMoneyService = value
40 } 52 }
  53 +
  54 + // 判断当前员工是否有效
  55 + getEmployee := map[string]interface{}{
  56 + "uid": operationSuMoneyCommand.Uid,
  57 + "status": 1,
  58 + }
  59 + employeeFound, err := employeeRepository.FindOne(getEmployee)
  60 + if err != nil {
  61 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  62 + }
  63 + if employeeFound == nil {
  64 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的员工")
  65 + }
  66 +
41 if task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription); err != nil { 67 if task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription); err != nil {
42 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 68 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
43 } else { 69 } else {
@@ -63,6 +89,7 @@ func (suMoneyService *SuMoneyService) GetSuMoneyTransactionRecord(getSuMoneyTran @@ -63,6 +89,7 @@ func (suMoneyService *SuMoneyService) GetSuMoneyTransactionRecord(getSuMoneyTran
63 defer func() { 89 defer func() {
64 transactionContext.RollbackTransaction() 90 transactionContext.RollbackTransaction()
65 }() 91 }()
  92 +
66 var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository 93 var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository
67 if value, err := factory.CreateSuMoneyTransactionRecordRepository(map[string]interface{}{ 94 if value, err := factory.CreateSuMoneyTransactionRecordRepository(map[string]interface{}{
68 "transactionContext": transactionContext, 95 "transactionContext": transactionContext,
@@ -71,6 +98,7 @@ func (suMoneyService *SuMoneyService) GetSuMoneyTransactionRecord(getSuMoneyTran @@ -71,6 +98,7 @@ func (suMoneyService *SuMoneyService) GetSuMoneyTransactionRecord(getSuMoneyTran
71 } else { 98 } else {
72 suMoneyTransactionRecordRepository = value 99 suMoneyTransactionRecordRepository = value
73 } 100 }
  101 +
74 if suMoneyTransactionRecord, err := suMoneyTransactionRecordRepository.FindOne(map[string]interface{}{"suMoneyTransactionRecordId": getSuMoneyTransactionRecordQuery.SuMoneyTransactionRecordId}); err != nil { 102 if suMoneyTransactionRecord, err := suMoneyTransactionRecordRepository.FindOne(map[string]interface{}{"suMoneyTransactionRecordId": getSuMoneyTransactionRecordQuery.SuMoneyTransactionRecordId}); err != nil {
75 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 103 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
76 } else { 104 } else {
@@ -96,6 +124,7 @@ func (suMoneyService *SuMoneyService) ExchangeSuMoney(exchangeSuMoneyCommand *co @@ -96,6 +124,7 @@ func (suMoneyService *SuMoneyService) ExchangeSuMoney(exchangeSuMoneyCommand *co
96 defer func() { 124 defer func() {
97 transactionContext.RollbackTransaction() 125 transactionContext.RollbackTransaction()
98 }() 126 }()
  127 +
99 var exchangeSuMoneyService service.ExchangeSuMoneyService 128 var exchangeSuMoneyService service.ExchangeSuMoneyService
100 if value, err := factory.CreateExchangeSuMoneyService(map[string]interface{}{ 129 if value, err := factory.CreateExchangeSuMoneyService(map[string]interface{}{
101 "transactionContext": transactionContext, 130 "transactionContext": transactionContext,
@@ -104,6 +133,7 @@ func (suMoneyService *SuMoneyService) ExchangeSuMoney(exchangeSuMoneyCommand *co @@ -104,6 +133,7 @@ func (suMoneyService *SuMoneyService) ExchangeSuMoney(exchangeSuMoneyCommand *co
104 } else { 133 } else {
105 exchangeSuMoneyService = value 134 exchangeSuMoneyService = value
106 } 135 }
  136 +
107 if task, err := exchangeSuMoneyService.Exchange(exchangeSuMoneyCommand.Uid, exchangeSuMoneyCommand.Operator, exchangeSuMoneyCommand.SuMoney, exchangeSuMoneyCommand.ExchangeDescription); err != nil { 137 if task, err := exchangeSuMoneyService.Exchange(exchangeSuMoneyCommand.Uid, exchangeSuMoneyCommand.Operator, exchangeSuMoneyCommand.SuMoney, exchangeSuMoneyCommand.ExchangeDescription); err != nil {
108 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 138 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
109 } else { 139 } else {
@@ -129,6 +159,8 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon @@ -129,6 +159,8 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon
129 defer func() { 159 defer func() {
130 transactionContext.RollbackTransaction() 160 transactionContext.RollbackTransaction()
131 }() 161 }()
  162 +
  163 + // 素币事务记录仓储初始化
132 var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository 164 var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository
133 if value, err := factory.CreateSuMoneyTransactionRecordRepository(map[string]interface{}{ 165 if value, err := factory.CreateSuMoneyTransactionRecordRepository(map[string]interface{}{
134 "transactionContext": transactionContext, 166 "transactionContext": transactionContext,
@@ -137,20 +169,57 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon @@ -137,20 +169,57 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon
137 } else { 169 } else {
138 suMoneyTransactionRecordRepository = value 170 suMoneyTransactionRecordRepository = value
139 } 171 }
  172 +
  173 + // 获取素币兑换事务记录
140 if count, suMoneyTransactionRecords, err := suMoneyTransactionRecordRepository.Find(tool_funs.SimpleStructToMap(searchSuMoneyTransactionRecordCommand)); err != nil { 174 if count, suMoneyTransactionRecords, err := suMoneyTransactionRecordRepository.Find(tool_funs.SimpleStructToMap(searchSuMoneyTransactionRecordCommand)); err != nil {
141 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 175 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
142 } else { 176 } else {
143 if err := transactionContext.CommitTransaction(); err != nil { 177 if err := transactionContext.CommitTransaction(); err != nil {
144 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 178 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
145 } 179 }
  180 + var suMoneyTransactionRecordsFormat []interface{}
  181 + for _, suMoneyTransactionRecord := range suMoneyTransactionRecords {
  182 + suMoneyTransactionRecordFormat := map[string]interface{} {
  183 + "suMoneyTransactionRecordId": suMoneyTransactionRecord.SuMoneyTransactionRecordId,
  184 + "recordType": suMoneyTransactionRecord.RecordType,
  185 + "employee": map[string]interface{} {
  186 + "uid": suMoneyTransactionRecord.Employee.Uid,
  187 + "employeeName": suMoneyTransactionRecord.Employee.EmployeeName,
  188 + "employeeAccount": suMoneyTransactionRecord.Employee.EmployeeAccount,
  189 + "employeeAvatarUrl": suMoneyTransactionRecord.Employee.EmployeeAvatarUrl,
  190 + "isPrincipal": suMoneyTransactionRecord.Employee.IsPrincipal,
  191 + },
  192 + "suMoneyBeforeTransaction": suMoneyTransactionRecord.SuMoneyBeforeTransaction,
  193 + "currentSuMoney": suMoneyTransactionRecord.CurrentSuMoney,
  194 + "suMoney": suMoneyTransactionRecord.SuMoney,
  195 + "cashBeforeTransaction": suMoneyTransactionRecord.CashBeforeTransaction,
  196 + "currentCash": suMoneyTransactionRecord.CurrentCash,
  197 + "cash": suMoneyTransactionRecord.Cash,
  198 + "operator": map[string]interface{} {
  199 + "uid": suMoneyTransactionRecord.Operator.Uid,
  200 + "employeeName": suMoneyTransactionRecord.Operator.EmployeeName,
  201 + "employeeAccount": suMoneyTransactionRecord.Operator.EmployeeAccount,
  202 + "employeeAvatarUrl": suMoneyTransactionRecord.Operator.EmployeeAvatarUrl,
  203 + "isPrincipal": suMoneyTransactionRecord.Operator.IsPrincipal,
  204 + },
  205 + "recordDescription": suMoneyTransactionRecord.RecordDescription,
  206 + "createTime": suMoneyTransactionRecord.CreateTime.Local(),
  207 + }
  208 + suMoneyTransactionRecordsFormat = append(suMoneyTransactionRecordsFormat, suMoneyTransactionRecordFormat)
  209 + }
  210 +
  211 + if len(suMoneyTransactionRecordsFormat) == 0 {
  212 + suMoneyTransactionRecordsFormat = []interface{}{}
  213 + }
  214 +
146 return map[string]interface{}{ 215 return map[string]interface{}{
147 "count": count, 216 "count": count,
148 - "suMoneyTransactionRecords": suMoneyTransactionRecords, 217 + "suMoneyTransactionRecords": suMoneyTransactionRecordsFormat,
149 }, nil 218 }, nil
150 } 219 }
151 } 220 }
152 221
153 -// 素币事务记录统计 222 +// 素币事务记录统计(个人素币)
154 func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoneyTransactionRecordStatisticsCommand *command.SuMoneyTransactionRecordStatisticsCommand) (interface{}, error) { 223 func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoneyTransactionRecordStatisticsCommand *command.SuMoneyTransactionRecordStatisticsCommand) (interface{}, error) {
155 if err := suMoneyTransactionRecordStatisticsCommand.ValidateCommand(); err != nil { 224 if err := suMoneyTransactionRecordStatisticsCommand.ValidateCommand(); err != nil {
156 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 225 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
@@ -165,6 +234,8 @@ func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoney @@ -165,6 +234,8 @@ func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoney
165 defer func() { 234 defer func() {
166 transactionContext.RollbackTransaction() 235 transactionContext.RollbackTransaction()
167 }() 236 }()
  237 +
  238 + // 员工DAO初始化
168 var employeeDao *dao.EmployeeDao 239 var employeeDao *dao.EmployeeDao
169 if value, err := factory.CreateEmployeeDao(map[string]interface{}{ 240 if value, err := factory.CreateEmployeeDao(map[string]interface{}{
170 "transactionContext": transactionContext, 241 "transactionContext": transactionContext,
@@ -173,6 +244,7 @@ func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoney @@ -173,6 +244,7 @@ func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoney
173 } else { 244 } else {
174 employeeDao = value 245 employeeDao = value
175 } 246 }
  247 +
176 if calculateResult, err := employeeDao.CalculateSuMoneyTransactionRecord(suMoneyTransactionRecordStatisticsCommand.Uid, suMoneyTransactionRecordStatisticsCommand.TransactionStartTime, suMoneyTransactionRecordStatisticsCommand.TransactionEndTime); err != nil { 248 if calculateResult, err := employeeDao.CalculateSuMoneyTransactionRecord(suMoneyTransactionRecordStatisticsCommand.Uid, suMoneyTransactionRecordStatisticsCommand.TransactionStartTime, suMoneyTransactionRecordStatisticsCommand.TransactionEndTime); err != nil {
177 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 249 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
178 } else { 250 } else {
@@ -183,6 +255,123 @@ func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoney @@ -183,6 +255,123 @@ func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoney
183 } 255 }
184 } 256 }
185 257
  258 +// 贡献值事务记录统计(个人贡献值)
  259 +func (suMoneyService *SuMoneyService) ContributionsTransactionRecordStatistics(contributionsTransactionRecordStatisticsCommand *command.ContributionsTransactionRecordStatisticsCommand) (interface{}, error) {
  260 + if err := contributionsTransactionRecordStatisticsCommand.ValidateCommand(); err != nil {
  261 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  262 + }
  263 + transactionContext, err := factory.CreateTransactionContext(nil)
  264 + if err != nil {
  265 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  266 + }
  267 + if err := transactionContext.StartTransaction(); err != nil {
  268 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  269 + }
  270 + defer func() {
  271 + transactionContext.RollbackTransaction()
  272 + }()
  273 +
  274 + var employeeDao *dao.EmployeeDao
  275 + if value, err := factory.CreateEmployeeDao(map[string]interface{}{
  276 + "transactionContext": transactionContext,
  277 + }); err != nil {
  278 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  279 + } else {
  280 + employeeDao = value
  281 + }
  282 +
  283 + if calculateResult, err := employeeDao.CalculateContributionsTransactionRecord(contributionsTransactionRecordStatisticsCommand.Uid, contributionsTransactionRecordStatisticsCommand.TransactionStartTime, contributionsTransactionRecordStatisticsCommand.TransactionEndTime); err != nil {
  284 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  285 + } else {
  286 + if err := transactionContext.CommitTransaction(); err != nil {
  287 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  288 + }
  289 + return calculateResult, nil
  290 + }
  291 +}
  292 +
  293 +// 根据uid获取员工素币(导出素币流水)
  294 +func (suMoneyService *SuMoneyService) ListSuMoneyById(exportSuMoneyCommand *command.ExportSuMoneyCommand) ([]*domain.Employee, error) {
  295 + if err := exportSuMoneyCommand.ValidateCommand(); err != nil {
  296 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  297 + }
  298 +
  299 + transactionContext, err := factory.CreateTransactionContext(nil)
  300 + if err != nil {
  301 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  302 + }
  303 + if err := transactionContext.StartTransaction(); err != nil {
  304 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  305 + }
  306 + defer func() {
  307 + transactionContext.RollbackTransaction()
  308 + }()
  309 +
  310 + if len(exportSuMoneyCommand.Ids) == 0 && exportSuMoneyCommand.Where == nil {
  311 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未勾选需要导出的数据")
  312 + }
  313 +
  314 + // 员工仓储初始化
  315 + var employeeRepository domain.EmployeeRepository
  316 + if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
  317 + "transactionContext": transactionContext,
  318 + }); err != nil {
  319 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  320 + } else {
  321 + employeeRepository = value
  322 + }
  323 +
  324 + if _, employees, err := employeeRepository.FindByIds(tool_funs.SimpleStructToMap(exportSuMoneyCommand)); err != nil {
  325 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  326 + } else {
  327 + if err := transactionContext.CommitTransaction(); err != nil {
  328 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  329 + }
  330 + return employees, nil
  331 + }
  332 +}
  333 +
  334 +// 根据id获取事务记录(导出素币流水记录)
  335 +func (suMoneyService *SuMoneyService) ListSuMoneyTransactionRecordById(exportSuMoneyTransactionRecordCommand *command.ExportTransactionRecordCommand) ([]*domain.SuMoneyTransactionRecord, error) {
  336 + if err := exportSuMoneyTransactionRecordCommand.ValidateCommand(); err != nil {
  337 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  338 + }
  339 +
  340 + transactionContext, err := factory.CreateTransactionContext(nil)
  341 + if err != nil {
  342 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  343 + }
  344 + if err := transactionContext.StartTransaction(); err != nil {
  345 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  346 + }
  347 + defer func() {
  348 + transactionContext.RollbackTransaction()
  349 + }()
  350 +
  351 + if len(exportSuMoneyTransactionRecordCommand.Ids) == 0 && exportSuMoneyTransactionRecordCommand.Where == nil {
  352 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未勾选需要导出的数据")
  353 + }
  354 +
  355 + var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository
  356 + if value, err := factory.CreateSuMoneyTransactionRecordRepository(map[string]interface{}{
  357 + "transactionContext": transactionContext,
  358 + }); err != nil {
  359 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  360 + } else {
  361 + suMoneyTransactionRecordRepository = value
  362 + }
  363 +
  364 + if _, suMoneyTransactionRecords, err := suMoneyTransactionRecordRepository.FindById(tool_funs.SimpleStructToMap(exportSuMoneyTransactionRecordCommand)); err != nil {
  365 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  366 + } else {
  367 + if err := transactionContext.CommitTransaction(); err != nil {
  368 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  369 + }
  370 + return suMoneyTransactionRecords, nil
  371 + }
  372 +}
  373 +
  374 +
186 func NewSuMoneyService(options map[string]interface{}) *SuMoneyService { 375 func NewSuMoneyService(options map[string]interface{}) *SuMoneyService {
187 newSuMoneyService := &SuMoneyService{} 376 newSuMoneyService := &SuMoneyService{}
188 return newSuMoneyService 377 return newSuMoneyService
@@ -15,6 +15,8 @@ type AcceptanceTaskCommand struct { @@ -15,6 +15,8 @@ type AcceptanceTaskCommand struct {
15 Operator int64 `json:"operator" valid:"Required"` 15 Operator int64 `json:"operator" valid:"Required"`
16 // 任务参与者UID列表 16 // 任务参与者UID列表
17 Participators []int64 `json:"participators,omitempty"` 17 Participators []int64 `json:"participators,omitempty"`
  18 + // 实际奖励素币值
  19 + SuMoney float64 `jsons:"suMoney"`
18 // 任务贡献占比 20 // 任务贡献占比
19 TaskPercentage []*domain.TaskPercentageItem `json:"taskPercentage"` 21 TaskPercentage []*domain.TaskPercentageItem `json:"taskPercentage"`
20 // 引用资源解决分 22 // 引用资源解决分
@@ -29,6 +29,10 @@ type CreateTaskCommand struct { @@ -29,6 +29,10 @@ type CreateTaskCommand struct {
29 TaskNature int `json:"taskNature,omitempty"` 29 TaskNature int `json:"taskNature,omitempty"`
30 // 奖励素币 30 // 奖励素币
31 SuMoney float64 `json:"suMoney,omitempty"` 31 SuMoney float64 `json:"suMoney,omitempty"`
  32 + // 最小奖励素币
  33 + MinSuMoney float64 `json:"minSuMoney"`
  34 + // 最大奖励素币
  35 + MaxSuMoney float64 `json:"maxSuMoney"`
32 // 验收标准 36 // 验收标准
33 AcceptanceStandard string `json:"acceptanceStandard,omitempty"` 37 AcceptanceStandard string `json:"acceptanceStandard,omitempty"`
34 // 任务描述 38 // 任务描述
@@ -13,12 +13,18 @@ type SearchTaskCommand struct { @@ -13,12 +13,18 @@ type SearchTaskCommand struct {
13 Sponsor int64 `json:"sponsor,omitempty"` 13 Sponsor int64 `json:"sponsor,omitempty"`
14 // 任务内容匹配 14 // 任务内容匹配
15 TaskContentMatch string `json:"taskContentMatch,omitempty"` 15 TaskContentMatch string `json:"taskContentMatch,omitempty"`
  16 + // 任务名称匹配
  17 + TaskNameMatch string `json:"taskNameMatch,omitempty"`
16 // 任务类型 18 // 任务类型
17 TaskType int `json:"taskType,omitempty"` 19 TaskType int `json:"taskType,omitempty"`
18 // 任务类型ID列表 20 // 任务类型ID列表
19 TaskTypes []int `json:"taskTypes,omitempty"` 21 TaskTypes []int `json:"taskTypes,omitempty"`
20 // 任务状态 22 // 任务状态
21 TaskStatus int `json:"taskStatus,omitempty"` 23 TaskStatus int `json:"taskStatus,omitempty"`
  24 + // 任务状态ID列表
  25 + TaskStates []int `json:"taskStates,omitempty"`
  26 + // 任务状态ID列表
  27 + TaskStatuss []int `json:"taskStatuss,omitempty"`
22 // 项目归属 28 // 项目归属
23 ProjectBelongs []int `json:"projectBelongs,omitempty"` 29 ProjectBelongs []int `json:"projectBelongs,omitempty"`
24 // 客户价值 30 // 客户价值
@@ -23,8 +23,12 @@ type UpdateTaskCommand struct { @@ -23,8 +23,12 @@ type UpdateTaskCommand struct {
23 CustomerValues []int `json:"customerValues,omitempty"` 23 CustomerValues []int `json:"customerValues,omitempty"`
24 // 任务性质 24 // 任务性质
25 TaskNature int `json:"taskNature,omitempty"` 25 TaskNature int `json:"taskNature,omitempty"`
26 - // 奖励素币 26 + // 实际奖励素币
27 SuMoney float64 `json:"suMoney,omitempty"` 27 SuMoney float64 `json:"suMoney,omitempty"`
  28 + // 最小奖励素币
  29 + MinSuMoney float64 `json:"minSuMoney,omitempty"`
  30 + // 最大奖励素币
  31 + MaxSuMoney float64 `json:"maxSuMoney,omitempty"`
28 // 验收标准 32 // 验收标准
29 AcceptanceStandard string `json:"acceptanceStandard,omitempty"` 33 AcceptanceStandard string `json:"acceptanceStandard,omitempty"`
30 // 任务描述 34 // 任务描述
@@ -29,6 +29,10 @@ type TaskDto struct { @@ -29,6 +29,10 @@ type TaskDto struct {
29 TaskNature *domain.TaskNature `json:"taskNature"` 29 TaskNature *domain.TaskNature `json:"taskNature"`
30 // 奖励素币 30 // 奖励素币
31 SuMoney float64 `json:"suMoney"` 31 SuMoney float64 `json:"suMoney"`
  32 + // 最小奖励素币
  33 + MinSuMoney float64 `json:"minSuMoney"`
  34 + // 最大奖励素币
  35 + MaxSuMoney float64 `json:"maxSuMoney"`
32 // 验收标准 36 // 验收标准
33 AcceptanceStandard string `json:"acceptanceStandard"` 37 AcceptanceStandard string `json:"acceptanceStandard"`
34 // 任务描述 38 // 任务描述
@@ -99,6 +103,8 @@ func (dto *TaskDto) LoadDto(task *domain.Task, projectBelongMap map[int]*domain. @@ -99,6 +103,8 @@ func (dto *TaskDto) LoadDto(task *domain.Task, projectBelongMap map[int]*domain.
99 } 103 }
100 } 104 }
101 dto.SuMoney = task.SuMoney 105 dto.SuMoney = task.SuMoney
  106 + dto.MinSuMoney = task.MinSuMoney
  107 + dto.MaxSuMoney = task.MaxSuMoney
102 dto.AcceptanceStandard = task.AcceptanceStandard 108 dto.AcceptanceStandard = task.AcceptanceStandard
103 dto.TaskDescription = task.TaskDescription 109 dto.TaskDescription = task.TaskDescription
104 dto.TaskPictureUrls = task.TaskPictureUrls 110 dto.TaskPictureUrls = task.TaskPictureUrls
@@ -2,6 +2,8 @@ package service @@ -2,6 +2,8 @@ package service
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "time"
  6 +
5 "github.com/linmadan/egglib-go/core/application" 7 "github.com/linmadan/egglib-go/core/application"
6 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 8 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
7 "github.com/linmadan/egglib-go/utils/tool_funs" 9 "github.com/linmadan/egglib-go/utils/tool_funs"
@@ -13,7 +15,6 @@ import ( @@ -13,7 +15,6 @@ import (
13 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" 15 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
14 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain/service" 16 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain/service"
15 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao" 17 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao"
16 - "time"  
17 ) 18 )
18 19
19 // 任务服务 20 // 任务服务
@@ -25,6 +26,7 @@ func (taskService *TaskService) ConfirmRobTask(confirmRobTaskCommand *command.Co @@ -25,6 +26,7 @@ func (taskService *TaskService) ConfirmRobTask(confirmRobTaskCommand *command.Co
25 if err := confirmRobTaskCommand.ValidateCommand(); err != nil { 26 if err := confirmRobTaskCommand.ValidateCommand(); err != nil {
26 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 27 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
27 } 28 }
  29 +
28 transactionContext, err := factory.CreateTransactionContext(nil) 30 transactionContext, err := factory.CreateTransactionContext(nil)
29 if err != nil { 31 if err != nil {
30 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 32 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -35,6 +37,7 @@ func (taskService *TaskService) ConfirmRobTask(confirmRobTaskCommand *command.Co @@ -35,6 +37,7 @@ func (taskService *TaskService) ConfirmRobTask(confirmRobTaskCommand *command.Co
35 defer func() { 37 defer func() {
36 transactionContext.RollbackTransaction() 38 transactionContext.RollbackTransaction()
37 }() 39 }()
  40 +
38 var confirmRobTaskService service.ConfirmRobTaskService 41 var confirmRobTaskService service.ConfirmRobTaskService
39 if value, err := factory.CreateConfirmRobTaskService(map[string]interface{}{ 42 if value, err := factory.CreateConfirmRobTaskService(map[string]interface{}{
40 "transactionContext": transactionContext, 43 "transactionContext": transactionContext,
@@ -46,6 +49,7 @@ func (taskService *TaskService) ConfirmRobTask(confirmRobTaskCommand *command.Co @@ -46,6 +49,7 @@ func (taskService *TaskService) ConfirmRobTask(confirmRobTaskCommand *command.Co
46 TransactionContext: transactionContext.(*pgTransaction.TransactionContext), 49 TransactionContext: transactionContext.(*pgTransaction.TransactionContext),
47 }) 50 })
48 } 51 }
  52 +
49 if task, err := confirmRobTaskService.Confirm(confirmRobTaskCommand.TaskId, confirmRobTaskCommand.Operator, confirmRobTaskCommand.PlannedCompletionTime); err != nil { 53 if task, err := confirmRobTaskService.Confirm(confirmRobTaskCommand.TaskId, confirmRobTaskCommand.Operator, confirmRobTaskCommand.PlannedCompletionTime); err != nil {
50 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 54 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
51 } else { 55 } else {
@@ -61,6 +65,7 @@ func (taskService *TaskService) RejectTaskReceiver(rejectTaskReceiverCommand *co @@ -61,6 +65,7 @@ func (taskService *TaskService) RejectTaskReceiver(rejectTaskReceiverCommand *co
61 if err := rejectTaskReceiverCommand.ValidateCommand(); err != nil { 65 if err := rejectTaskReceiverCommand.ValidateCommand(); err != nil {
62 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 66 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
63 } 67 }
  68 +
64 transactionContext, err := factory.CreateTransactionContext(nil) 69 transactionContext, err := factory.CreateTransactionContext(nil)
65 if err != nil { 70 if err != nil {
66 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 71 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -71,6 +76,7 @@ func (taskService *TaskService) RejectTaskReceiver(rejectTaskReceiverCommand *co @@ -71,6 +76,7 @@ func (taskService *TaskService) RejectTaskReceiver(rejectTaskReceiverCommand *co
71 defer func() { 76 defer func() {
72 transactionContext.RollbackTransaction() 77 transactionContext.RollbackTransaction()
73 }() 78 }()
  79 +
74 var rejectTaskReceiverService service.RejectTaskReceiverService 80 var rejectTaskReceiverService service.RejectTaskReceiverService
75 if value, err := factory.CreateRejectTaskReceiverService(map[string]interface{}{ 81 if value, err := factory.CreateRejectTaskReceiverService(map[string]interface{}{
76 "transactionContext": transactionContext, 82 "transactionContext": transactionContext,
@@ -82,6 +88,7 @@ func (taskService *TaskService) RejectTaskReceiver(rejectTaskReceiverCommand *co @@ -82,6 +88,7 @@ func (taskService *TaskService) RejectTaskReceiver(rejectTaskReceiverCommand *co
82 TransactionContext: transactionContext.(*pgTransaction.TransactionContext), 88 TransactionContext: transactionContext.(*pgTransaction.TransactionContext),
83 }) 89 })
84 } 90 }
  91 +
85 if task, err := rejectTaskReceiverService.Reject(rejectTaskReceiverCommand.TaskId, rejectTaskReceiverCommand.Operator, rejectTaskReceiverCommand.RejectReason); err != nil { 92 if task, err := rejectTaskReceiverService.Reject(rejectTaskReceiverCommand.TaskId, rejectTaskReceiverCommand.Operator, rejectTaskReceiverCommand.RejectReason); err != nil {
86 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 93 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
87 } else { 94 } else {
@@ -97,6 +104,7 @@ func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand) @@ -97,6 +104,7 @@ func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand)
97 if err := robTaskCommand.ValidateCommand(); err != nil { 104 if err := robTaskCommand.ValidateCommand(); err != nil {
98 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 105 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
99 } 106 }
  107 +
100 transactionContext, err := factory.CreateTransactionContext(nil) 108 transactionContext, err := factory.CreateTransactionContext(nil)
101 if err != nil { 109 if err != nil {
102 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 110 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -107,6 +115,7 @@ func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand) @@ -107,6 +115,7 @@ func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand)
107 defer func() { 115 defer func() {
108 transactionContext.RollbackTransaction() 116 transactionContext.RollbackTransaction()
109 }() 117 }()
  118 +
110 var robTaskService service.RobTaskService 119 var robTaskService service.RobTaskService
111 if value, err := factory.CreateRobTaskService(map[string]interface{}{ 120 if value, err := factory.CreateRobTaskService(map[string]interface{}{
112 "transactionContext": transactionContext, 121 "transactionContext": transactionContext,
@@ -119,6 +128,7 @@ func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand) @@ -119,6 +128,7 @@ func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand)
119 TransactionContext: transactionContext.(*pgTransaction.TransactionContext), 128 TransactionContext: transactionContext.(*pgTransaction.TransactionContext),
120 }) 129 })
121 } 130 }
  131 +
122 if task, err := robTaskService.Rob(robTaskCommand.TaskId, robTaskCommand.Receiver); err != nil { 132 if task, err := robTaskService.Rob(robTaskCommand.TaskId, robTaskCommand.Receiver); err != nil {
123 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 133 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
124 } else { 134 } else {
@@ -134,6 +144,7 @@ func (taskService *TaskService) BidTask(bidTaskCommand *command.BidTaskCommand) @@ -134,6 +144,7 @@ func (taskService *TaskService) BidTask(bidTaskCommand *command.BidTaskCommand)
134 if err := bidTaskCommand.ValidateCommand(); err != nil { 144 if err := bidTaskCommand.ValidateCommand(); err != nil {
135 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 145 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
136 } 146 }
  147 +
137 transactionContext, err := factory.CreateTransactionContext(nil) 148 transactionContext, err := factory.CreateTransactionContext(nil)
138 if err != nil { 149 if err != nil {
139 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 150 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -144,6 +155,7 @@ func (taskService *TaskService) BidTask(bidTaskCommand *command.BidTaskCommand) @@ -144,6 +155,7 @@ func (taskService *TaskService) BidTask(bidTaskCommand *command.BidTaskCommand)
144 defer func() { 155 defer func() {
145 transactionContext.RollbackTransaction() 156 transactionContext.RollbackTransaction()
146 }() 157 }()
  158 +
147 var bidTaskService service.BidTaskService 159 var bidTaskService service.BidTaskService
148 if value, err := factory.CreateBidTaskService(map[string]interface{}{ 160 if value, err := factory.CreateBidTaskService(map[string]interface{}{
149 "transactionContext": transactionContext, 161 "transactionContext": transactionContext,
@@ -152,6 +164,7 @@ func (taskService *TaskService) BidTask(bidTaskCommand *command.BidTaskCommand) @@ -152,6 +164,7 @@ func (taskService *TaskService) BidTask(bidTaskCommand *command.BidTaskCommand)
152 } else { 164 } else {
153 bidTaskService = value 165 bidTaskService = value
154 } 166 }
  167 +
155 if task, err := bidTaskService.Bid(bidTaskCommand.TaskId, bidTaskCommand.Bidder); err != nil { 168 if task, err := bidTaskService.Bid(bidTaskCommand.TaskId, bidTaskCommand.Bidder); err != nil {
156 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 169 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
157 } else { 170 } else {
@@ -167,6 +180,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom @@ -167,6 +180,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom
167 if err := chooseSuccessfulBidderCommand.ValidateCommand(); err != nil { 180 if err := chooseSuccessfulBidderCommand.ValidateCommand(); err != nil {
168 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 181 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
169 } 182 }
  183 +
170 transactionContext, err := factory.CreateTransactionContext(nil) 184 transactionContext, err := factory.CreateTransactionContext(nil)
171 if err != nil { 185 if err != nil {
172 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 186 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -177,6 +191,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom @@ -177,6 +191,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom
177 defer func() { 191 defer func() {
178 transactionContext.RollbackTransaction() 192 transactionContext.RollbackTransaction()
179 }() 193 }()
  194 +
180 var chooseSuccessfulBidderService service.ChooseSuccessfulBidderService 195 var chooseSuccessfulBidderService service.ChooseSuccessfulBidderService
181 if value, err := factory.CreateChooseSuccessfulBidderService(map[string]interface{}{ 196 if value, err := factory.CreateChooseSuccessfulBidderService(map[string]interface{}{
182 "transactionContext": transactionContext, 197 "transactionContext": transactionContext,
@@ -186,6 +201,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom @@ -186,6 +201,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom
186 chooseSuccessfulBidderService = value 201 chooseSuccessfulBidderService = value
187 chooseSuccessfulBidderService.Subscribe(&subscriber.AbilityServiceSubscriber{}) 202 chooseSuccessfulBidderService.Subscribe(&subscriber.AbilityServiceSubscriber{})
188 } 203 }
  204 +
189 if task, err := chooseSuccessfulBidderService.Choose(chooseSuccessfulBidderCommand.TaskId, chooseSuccessfulBidderCommand.SuccessfulBidder, chooseSuccessfulBidderCommand.Operator, chooseSuccessfulBidderCommand.PlannedCompletionTime); err != nil { 205 if task, err := chooseSuccessfulBidderService.Choose(chooseSuccessfulBidderCommand.TaskId, chooseSuccessfulBidderCommand.SuccessfulBidder, chooseSuccessfulBidderCommand.Operator, chooseSuccessfulBidderCommand.PlannedCompletionTime); err != nil {
190 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 206 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
191 } else { 207 } else {
@@ -201,6 +217,7 @@ func (taskService *TaskService) ApplyCompleteTask(applyCompleteTaskCommand *comm @@ -201,6 +217,7 @@ func (taskService *TaskService) ApplyCompleteTask(applyCompleteTaskCommand *comm
201 if err := applyCompleteTaskCommand.ValidateCommand(); err != nil { 217 if err := applyCompleteTaskCommand.ValidateCommand(); err != nil {
202 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 218 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
203 } 219 }
  220 +
204 transactionContext, err := factory.CreateTransactionContext(nil) 221 transactionContext, err := factory.CreateTransactionContext(nil)
205 if err != nil { 222 if err != nil {
206 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 223 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -211,6 +228,7 @@ func (taskService *TaskService) ApplyCompleteTask(applyCompleteTaskCommand *comm @@ -211,6 +228,7 @@ func (taskService *TaskService) ApplyCompleteTask(applyCompleteTaskCommand *comm
211 defer func() { 228 defer func() {
212 transactionContext.RollbackTransaction() 229 transactionContext.RollbackTransaction()
213 }() 230 }()
  231 +
214 var applyCompleteTaskService service.ApplyCompleteTaskService 232 var applyCompleteTaskService service.ApplyCompleteTaskService
215 if value, err := factory.CreateApplyCompleteTaskService(map[string]interface{}{ 233 if value, err := factory.CreateApplyCompleteTaskService(map[string]interface{}{
216 "transactionContext": transactionContext, 234 "transactionContext": transactionContext,
@@ -219,6 +237,7 @@ func (taskService *TaskService) ApplyCompleteTask(applyCompleteTaskCommand *comm @@ -219,6 +237,7 @@ func (taskService *TaskService) ApplyCompleteTask(applyCompleteTaskCommand *comm
219 } else { 237 } else {
220 applyCompleteTaskService = value 238 applyCompleteTaskService = value
221 } 239 }
  240 +
222 if task, err := applyCompleteTaskService.ApplyComplete(applyCompleteTaskCommand.TaskId, applyCompleteTaskCommand.Receiver); err != nil { 241 if task, err := applyCompleteTaskService.ApplyComplete(applyCompleteTaskCommand.TaskId, applyCompleteTaskCommand.Receiver); err != nil {
223 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 242 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
224 } else { 243 } else {
@@ -234,6 +253,7 @@ func (taskService *TaskService) ReleaseTask(releaseTaskCommand *command.ReleaseT @@ -234,6 +253,7 @@ func (taskService *TaskService) ReleaseTask(releaseTaskCommand *command.ReleaseT
234 if err := releaseTaskCommand.ValidateCommand(); err != nil { 253 if err := releaseTaskCommand.ValidateCommand(); err != nil {
235 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 254 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
236 } 255 }
  256 +
237 transactionContext, err := factory.CreateTransactionContext(nil) 257 transactionContext, err := factory.CreateTransactionContext(nil)
238 if err != nil { 258 if err != nil {
239 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 259 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -244,6 +264,8 @@ func (taskService *TaskService) ReleaseTask(releaseTaskCommand *command.ReleaseT @@ -244,6 +264,8 @@ func (taskService *TaskService) ReleaseTask(releaseTaskCommand *command.ReleaseT
244 defer func() { 264 defer func() {
245 transactionContext.RollbackTransaction() 265 transactionContext.RollbackTransaction()
246 }() 266 }()
  267 +
  268 + // 发布任务服务初始化
247 var releaseTaskService service.ReleaseTaskService 269 var releaseTaskService service.ReleaseTaskService
248 if value, err := factory.CreateReleaseTaskService(map[string]interface{}{ 270 if value, err := factory.CreateReleaseTaskService(map[string]interface{}{
249 "transactionContext": transactionContext, 271 "transactionContext": transactionContext,
@@ -256,6 +278,8 @@ func (taskService *TaskService) ReleaseTask(releaseTaskCommand *command.ReleaseT @@ -256,6 +278,8 @@ func (taskService *TaskService) ReleaseTask(releaseTaskCommand *command.ReleaseT
256 TransactionContext: transactionContext.(*pgTransaction.TransactionContext), 278 TransactionContext: transactionContext.(*pgTransaction.TransactionContext),
257 }) 279 })
258 } 280 }
  281 +
  282 + // 关闭任务
259 if task, err := releaseTaskService.Release(releaseTaskCommand.TaskId, releaseTaskCommand.Operator); err != nil { 283 if task, err := releaseTaskService.Release(releaseTaskCommand.TaskId, releaseTaskCommand.Operator); err != nil {
260 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 284 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
261 } else { 285 } else {
@@ -271,6 +295,7 @@ func (taskService *TaskService) OffTask(offTaskCommand *command.OffTaskCommand) @@ -271,6 +295,7 @@ func (taskService *TaskService) OffTask(offTaskCommand *command.OffTaskCommand)
271 if err := offTaskCommand.ValidateCommand(); err != nil { 295 if err := offTaskCommand.ValidateCommand(); err != nil {
272 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 296 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
273 } 297 }
  298 +
274 transactionContext, err := factory.CreateTransactionContext(nil) 299 transactionContext, err := factory.CreateTransactionContext(nil)
275 if err != nil { 300 if err != nil {
276 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 301 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -281,6 +306,8 @@ func (taskService *TaskService) OffTask(offTaskCommand *command.OffTaskCommand) @@ -281,6 +306,8 @@ func (taskService *TaskService) OffTask(offTaskCommand *command.OffTaskCommand)
281 defer func() { 306 defer func() {
282 transactionContext.RollbackTransaction() 307 transactionContext.RollbackTransaction()
283 }() 308 }()
  309 +
  310 + // 关闭任务服务初始化
284 var offTaskService service.OffTaskService 311 var offTaskService service.OffTaskService
285 if value, err := factory.CreateOffTaskService(map[string]interface{}{ 312 if value, err := factory.CreateOffTaskService(map[string]interface{}{
286 "transactionContext": transactionContext, 313 "transactionContext": transactionContext,
@@ -290,6 +317,8 @@ func (taskService *TaskService) OffTask(offTaskCommand *command.OffTaskCommand) @@ -290,6 +317,8 @@ func (taskService *TaskService) OffTask(offTaskCommand *command.OffTaskCommand)
290 offTaskService = value 317 offTaskService = value
291 offTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{}) 318 offTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{})
292 } 319 }
  320 +
  321 + // 关闭任务
293 if task, err := offTaskService.Off(offTaskCommand.TaskId, offTaskCommand.Operator, offTaskCommand.OffReason); err != nil { 322 if task, err := offTaskService.Off(offTaskCommand.TaskId, offTaskCommand.Operator, offTaskCommand.OffReason); err != nil {
294 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 323 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
295 } else { 324 } else {
@@ -305,6 +334,7 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac @@ -305,6 +334,7 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac
305 if err := acceptanceTaskCommand.ValidateCommand(); err != nil { 334 if err := acceptanceTaskCommand.ValidateCommand(); err != nil {
306 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 335 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
307 } 336 }
  337 +
308 transactionContext, err := factory.CreateTransactionContext(nil) 338 transactionContext, err := factory.CreateTransactionContext(nil)
309 if err != nil { 339 if err != nil {
310 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 340 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -315,6 +345,8 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac @@ -315,6 +345,8 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac
315 defer func() { 345 defer func() {
316 transactionContext.RollbackTransaction() 346 transactionContext.RollbackTransaction()
317 }() 347 }()
  348 +
  349 + // 验收服务初始化
318 var acceptanceTaskService service.AcceptanceTaskService 350 var acceptanceTaskService service.AcceptanceTaskService
319 if value, err := factory.CreateAcceptanceTaskService(map[string]interface{}{ 351 if value, err := factory.CreateAcceptanceTaskService(map[string]interface{}{
320 "transactionContext": transactionContext, 352 "transactionContext": transactionContext,
@@ -324,7 +356,50 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac @@ -324,7 +356,50 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac
324 acceptanceTaskService = value 356 acceptanceTaskService = value
325 acceptanceTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{}) 357 acceptanceTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{})
326 } 358 }
327 - if task, err := acceptanceTaskService.Acceptance(acceptanceTaskCommand.TaskId, acceptanceTaskCommand.Operator, acceptanceTaskCommand.Participators, acceptanceTaskCommand.TaskPercentage, acceptanceTaskCommand.ReferenceResourceScore, acceptanceTaskCommand.SolveReport, acceptanceTaskCommand.SolvePictureUrls, acceptanceTaskCommand.ActualCompletionTime); err != nil { 359 +
  360 + // 员工仓储初始化
  361 + var employeeRepository domain.EmployeeRepository
  362 + if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
  363 + "transactionContext": transactionContext,
  364 + }); err != nil {
  365 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  366 + } else {
  367 + employeeRepository = value
  368 + }
  369 +
  370 + // 填充百分比员工信息
  371 + for i, taskPercentage := range acceptanceTaskCommand.TaskPercentage {
  372 + getEmployee := map[string]interface{}{
  373 + "uid": taskPercentage.Contributor.Uid,
  374 + }
  375 + employeeFound, err := employeeRepository.FindOne(getEmployee)
  376 + if err != nil {
  377 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  378 + }
  379 + if employeeFound == nil {
  380 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的员工")
  381 + }
  382 + acceptanceTaskCommand.TaskPercentage[i].Contributor = employeeFound.EmployeeInfo
  383 + }
  384 +
  385 + // 填充评分员工信息
  386 + for i, referenceResourceScore := range acceptanceTaskCommand.ReferenceResourceScore {
  387 + for j, solveScore := range referenceResourceScore.SolveScore {
  388 + getEmployee := map[string]interface{}{
  389 + "uid": solveScore.Contributor.Uid,
  390 + }
  391 + employeeFound, err := employeeRepository.FindOne(getEmployee)
  392 + if err != nil {
  393 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  394 + }
  395 + if employeeFound == nil {
  396 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的员工")
  397 + }
  398 + acceptanceTaskCommand.ReferenceResourceScore[i].SolveScore[j].Contributor = employeeFound.EmployeeInfo
  399 + }
  400 + }
  401 +
  402 + if task, err := acceptanceTaskService.Acceptance(acceptanceTaskCommand.TaskId, acceptanceTaskCommand.Operator, acceptanceTaskCommand.Participators, acceptanceTaskCommand.SuMoney, acceptanceTaskCommand.TaskPercentage, acceptanceTaskCommand.ReferenceResourceScore, acceptanceTaskCommand.SolveReport, acceptanceTaskCommand.SolvePictureUrls, acceptanceTaskCommand.ActualCompletionTime); err != nil {
328 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 403 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
329 } else { 404 } else {
330 if err := transactionContext.CommitTransaction(); err != nil { 405 if err := transactionContext.CommitTransaction(); err != nil {
@@ -336,10 +411,11 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac @@ -336,10 +411,11 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac
336 411
337 // 搜索任务 412 // 搜索任务
338 func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTaskCommand) (interface{}, error) { 413 func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTaskCommand) (interface{}, error) {
339 - if err := searchTaskCommand.ValidateCommand(); err != nil { 414 + if err := searchTaskCommand.ValidateCommand(); err != nil { // 校验搜索命令
340 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 415 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
341 } 416 }
342 - transactionContext, err := factory.CreateTransactionContext(nil) 417 +
  418 + transactionContext, err := factory.CreateTransactionContext(nil) // 工厂类创建事务上下文
343 if err != nil { 419 if err != nil {
344 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 420 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
345 } 421 }
@@ -349,6 +425,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -349,6 +425,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
349 defer func() { 425 defer func() {
350 transactionContext.RollbackTransaction() 426 transactionContext.RollbackTransaction()
351 }() 427 }()
  428 +
352 var taskRepository domain.TaskRepository 429 var taskRepository domain.TaskRepository
353 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 430 if value, err := factory.CreateTaskRepository(map[string]interface{}{
354 "transactionContext": transactionContext, 431 "transactionContext": transactionContext,
@@ -357,6 +434,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -357,6 +434,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
357 } else { 434 } else {
358 taskRepository = value 435 taskRepository = value
359 } 436 }
  437 +
360 var projectBelongRepository domain.ProjectBelongRepository 438 var projectBelongRepository domain.ProjectBelongRepository
361 if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ 439 if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{
362 "transactionContext": transactionContext, 440 "transactionContext": transactionContext,
@@ -365,6 +443,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -365,6 +443,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
365 } else { 443 } else {
366 projectBelongRepository = value 444 projectBelongRepository = value
367 } 445 }
  446 +
368 projectBelongMap := make(map[int]*domain.ProjectBelong) 447 projectBelongMap := make(map[int]*domain.ProjectBelong)
369 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ 448 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{
370 "companyId": searchTaskCommand.CompanyId, 449 "companyId": searchTaskCommand.CompanyId,
@@ -375,6 +454,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -375,6 +454,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
375 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong 454 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong
376 } 455 }
377 } 456 }
  457 +
378 var customerValueRepository domain.CustomerValueRepository 458 var customerValueRepository domain.CustomerValueRepository
379 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ 459 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{
380 "transactionContext": transactionContext, 460 "transactionContext": transactionContext,
@@ -383,6 +463,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -383,6 +463,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
383 } else { 463 } else {
384 customerValueRepository = value 464 customerValueRepository = value
385 } 465 }
  466 +
386 customerValueMap := make(map[int]*domain.CustomerValue) 467 customerValueMap := make(map[int]*domain.CustomerValue)
387 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ 468 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{
388 "companyId": searchTaskCommand.CompanyId, 469 "companyId": searchTaskCommand.CompanyId,
@@ -393,6 +474,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -393,6 +474,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
393 customerValueMap[customerValue.CustomerValueId] = customerValue 474 customerValueMap[customerValue.CustomerValueId] = customerValue
394 } 475 }
395 } 476 }
  477 +
396 var taskNatureRepository domain.TaskNatureRepository 478 var taskNatureRepository domain.TaskNatureRepository
397 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ 479 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{
398 "transactionContext": transactionContext, 480 "transactionContext": transactionContext,
@@ -401,6 +483,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -401,6 +483,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
401 } else { 483 } else {
402 taskNatureRepository = value 484 taskNatureRepository = value
403 } 485 }
  486 +
404 taskNatureMap := make(map[int]*domain.TaskNature) 487 taskNatureMap := make(map[int]*domain.TaskNature)
405 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ 488 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{
406 "companyId": searchTaskCommand.CompanyId, 489 "companyId": searchTaskCommand.CompanyId,
@@ -411,6 +494,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask @@ -411,6 +494,7 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask
411 taskNatureMap[taskNature.TaskNatureId] = taskNature 494 taskNatureMap[taskNature.TaskNatureId] = taskNature
412 } 495 }
413 } 496 }
  497 +
414 if count, tasks, err := taskRepository.Find(tool_funs.SimpleStructToMap(searchTaskCommand)); err != nil { 498 if count, tasks, err := taskRepository.Find(tool_funs.SimpleStructToMap(searchTaskCommand)); err != nil {
415 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 499 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
416 } else { 500 } else {
@@ -437,6 +521,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -437,6 +521,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
437 if err := searchOffTaskRecordCommand.ValidateCommand(); err != nil { 521 if err := searchOffTaskRecordCommand.ValidateCommand(); err != nil {
438 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 522 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
439 } 523 }
  524 +
440 transactionContext, err := factory.CreateTransactionContext(nil) 525 transactionContext, err := factory.CreateTransactionContext(nil)
441 if err != nil { 526 if err != nil {
442 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 527 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -447,6 +532,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -447,6 +532,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
447 defer func() { 532 defer func() {
448 transactionContext.RollbackTransaction() 533 transactionContext.RollbackTransaction()
449 }() 534 }()
  535 +
450 var projectBelongRepository domain.ProjectBelongRepository 536 var projectBelongRepository domain.ProjectBelongRepository
451 if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ 537 if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{
452 "transactionContext": transactionContext, 538 "transactionContext": transactionContext,
@@ -455,6 +541,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -455,6 +541,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
455 } else { 541 } else {
456 projectBelongRepository = value 542 projectBelongRepository = value
457 } 543 }
  544 +
458 projectBelongMap := make(map[int]*domain.ProjectBelong) 545 projectBelongMap := make(map[int]*domain.ProjectBelong)
459 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ 546 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{
460 "companyId": searchOffTaskRecordCommand.CompanyId, 547 "companyId": searchOffTaskRecordCommand.CompanyId,
@@ -465,6 +552,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -465,6 +552,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
465 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong 552 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong
466 } 553 }
467 } 554 }
  555 +
468 var customerValueRepository domain.CustomerValueRepository 556 var customerValueRepository domain.CustomerValueRepository
469 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ 557 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{
470 "transactionContext": transactionContext, 558 "transactionContext": transactionContext,
@@ -473,6 +561,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -473,6 +561,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
473 } else { 561 } else {
474 customerValueRepository = value 562 customerValueRepository = value
475 } 563 }
  564 +
476 customerValueMap := make(map[int]*domain.CustomerValue) 565 customerValueMap := make(map[int]*domain.CustomerValue)
477 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ 566 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{
478 "companyId": searchOffTaskRecordCommand.CompanyId, 567 "companyId": searchOffTaskRecordCommand.CompanyId,
@@ -483,6 +572,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -483,6 +572,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
483 customerValueMap[customerValue.CustomerValueId] = customerValue 572 customerValueMap[customerValue.CustomerValueId] = customerValue
484 } 573 }
485 } 574 }
  575 +
486 var taskNatureRepository domain.TaskNatureRepository 576 var taskNatureRepository domain.TaskNatureRepository
487 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ 577 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{
488 "transactionContext": transactionContext, 578 "transactionContext": transactionContext,
@@ -491,6 +581,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -491,6 +581,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
491 } else { 581 } else {
492 taskNatureRepository = value 582 taskNatureRepository = value
493 } 583 }
  584 +
494 taskNatureMap := make(map[int]*domain.TaskNature) 585 taskNatureMap := make(map[int]*domain.TaskNature)
495 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ 586 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{
496 "companyId": searchOffTaskRecordCommand.CompanyId, 587 "companyId": searchOffTaskRecordCommand.CompanyId,
@@ -501,6 +592,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -501,6 +592,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
501 taskNatureMap[taskNature.TaskNatureId] = taskNature 592 taskNatureMap[taskNature.TaskNatureId] = taskNature
502 } 593 }
503 } 594 }
  595 +
504 var taskRepository domain.TaskRepository 596 var taskRepository domain.TaskRepository
505 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 597 if value, err := factory.CreateTaskRepository(map[string]interface{}{
506 "transactionContext": transactionContext, 598 "transactionContext": transactionContext,
@@ -509,6 +601,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -509,6 +601,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
509 } else { 601 } else {
510 taskRepository = value 602 taskRepository = value
511 } 603 }
  604 +
512 var offTaskRecordRepository domain.OffTaskRecordRepository 605 var offTaskRecordRepository domain.OffTaskRecordRepository
513 if value, err := factory.CreateOffTaskRecordRepository(map[string]interface{}{ 606 if value, err := factory.CreateOffTaskRecordRepository(map[string]interface{}{
514 "transactionContext": transactionContext, 607 "transactionContext": transactionContext,
@@ -517,6 +610,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * @@ -517,6 +610,7 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand *
517 } else { 610 } else {
518 offTaskRecordRepository = value 611 offTaskRecordRepository = value
519 } 612 }
  613 +
520 _, tasks, err := taskRepository.Find(map[string]interface{}{ 614 _, tasks, err := taskRepository.Find(map[string]interface{}{
521 "companyId": searchOffTaskRecordCommand.CompanyId, 615 "companyId": searchOffTaskRecordCommand.CompanyId,
522 "taskStatus": domain.TASK_STATUS_CLOSED, 616 "taskStatus": domain.TASK_STATUS_CLOSED,
@@ -570,6 +664,7 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge @@ -570,6 +664,7 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge
570 if err := getOffTaskRecordQuery.ValidateQuery(); err != nil { 664 if err := getOffTaskRecordQuery.ValidateQuery(); err != nil {
571 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 665 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
572 } 666 }
  667 +
573 transactionContext, err := factory.CreateTransactionContext(nil) 668 transactionContext, err := factory.CreateTransactionContext(nil)
574 if err != nil { 669 if err != nil {
575 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 670 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -580,6 +675,7 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge @@ -580,6 +675,7 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge
580 defer func() { 675 defer func() {
581 transactionContext.RollbackTransaction() 676 transactionContext.RollbackTransaction()
582 }() 677 }()
  678 +
583 var offTaskRecordRepository domain.OffTaskRecordRepository 679 var offTaskRecordRepository domain.OffTaskRecordRepository
584 if value, err := factory.CreateOffTaskRecordRepository(map[string]interface{}{ 680 if value, err := factory.CreateOffTaskRecordRepository(map[string]interface{}{
585 "transactionContext": transactionContext, 681 "transactionContext": transactionContext,
@@ -588,6 +684,7 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge @@ -588,6 +684,7 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge
588 } else { 684 } else {
589 offTaskRecordRepository = value 685 offTaskRecordRepository = value
590 } 686 }
  687 +
591 offTaskRecord, err := offTaskRecordRepository.FindOne(map[string]interface{}{"offTaskRecordId": getOffTaskRecordQuery.OffTaskRecordId}) 688 offTaskRecord, err := offTaskRecordRepository.FindOne(map[string]interface{}{"offTaskRecordId": getOffTaskRecordQuery.OffTaskRecordId})
592 if err != nil { 689 if err != nil {
593 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 690 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -607,6 +704,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -607,6 +704,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
607 if err := searchRejectTaskRecordCommand.ValidateCommand(); err != nil { 704 if err := searchRejectTaskRecordCommand.ValidateCommand(); err != nil {
608 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 705 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
609 } 706 }
  707 +
610 transactionContext, err := factory.CreateTransactionContext(nil) 708 transactionContext, err := factory.CreateTransactionContext(nil)
611 if err != nil { 709 if err != nil {
612 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 710 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -617,6 +715,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -617,6 +715,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
617 defer func() { 715 defer func() {
618 transactionContext.RollbackTransaction() 716 transactionContext.RollbackTransaction()
619 }() 717 }()
  718 +
620 var projectBelongRepository domain.ProjectBelongRepository 719 var projectBelongRepository domain.ProjectBelongRepository
621 if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ 720 if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{
622 "transactionContext": transactionContext, 721 "transactionContext": transactionContext,
@@ -625,6 +724,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -625,6 +724,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
625 } else { 724 } else {
626 projectBelongRepository = value 725 projectBelongRepository = value
627 } 726 }
  727 +
628 projectBelongMap := make(map[int]*domain.ProjectBelong) 728 projectBelongMap := make(map[int]*domain.ProjectBelong)
629 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ 729 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{
630 "companyId": searchRejectTaskRecordCommand.CompanyId, 730 "companyId": searchRejectTaskRecordCommand.CompanyId,
@@ -635,6 +735,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -635,6 +735,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
635 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong 735 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong
636 } 736 }
637 } 737 }
  738 +
638 var customerValueRepository domain.CustomerValueRepository 739 var customerValueRepository domain.CustomerValueRepository
639 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ 740 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{
640 "transactionContext": transactionContext, 741 "transactionContext": transactionContext,
@@ -643,6 +744,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -643,6 +744,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
643 } else { 744 } else {
644 customerValueRepository = value 745 customerValueRepository = value
645 } 746 }
  747 +
646 customerValueMap := make(map[int]*domain.CustomerValue) 748 customerValueMap := make(map[int]*domain.CustomerValue)
647 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ 749 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{
648 "companyId": searchRejectTaskRecordCommand.CompanyId, 750 "companyId": searchRejectTaskRecordCommand.CompanyId,
@@ -653,6 +755,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -653,6 +755,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
653 customerValueMap[customerValue.CustomerValueId] = customerValue 755 customerValueMap[customerValue.CustomerValueId] = customerValue
654 } 756 }
655 } 757 }
  758 +
656 var taskNatureRepository domain.TaskNatureRepository 759 var taskNatureRepository domain.TaskNatureRepository
657 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ 760 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{
658 "transactionContext": transactionContext, 761 "transactionContext": transactionContext,
@@ -661,6 +764,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -661,6 +764,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
661 } else { 764 } else {
662 taskNatureRepository = value 765 taskNatureRepository = value
663 } 766 }
  767 +
664 taskNatureMap := make(map[int]*domain.TaskNature) 768 taskNatureMap := make(map[int]*domain.TaskNature)
665 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ 769 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{
666 "companyId": searchRejectTaskRecordCommand.CompanyId, 770 "companyId": searchRejectTaskRecordCommand.CompanyId,
@@ -671,6 +775,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -671,6 +775,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
671 taskNatureMap[taskNature.TaskNatureId] = taskNature 775 taskNatureMap[taskNature.TaskNatureId] = taskNature
672 } 776 }
673 } 777 }
  778 +
674 var taskRepository domain.TaskRepository 779 var taskRepository domain.TaskRepository
675 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 780 if value, err := factory.CreateTaskRepository(map[string]interface{}{
676 "transactionContext": transactionContext, 781 "transactionContext": transactionContext,
@@ -679,6 +784,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -679,6 +784,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
679 } else { 784 } else {
680 taskRepository = value 785 taskRepository = value
681 } 786 }
  787 +
682 var rejectTaskRecordRepository domain.RejectTaskRecordRepository 788 var rejectTaskRecordRepository domain.RejectTaskRecordRepository
683 if value, err := factory.CreateRejectTaskRecordRepository(map[string]interface{}{ 789 if value, err := factory.CreateRejectTaskRecordRepository(map[string]interface{}{
684 "transactionContext": transactionContext, 790 "transactionContext": transactionContext,
@@ -687,6 +793,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -687,6 +793,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
687 } else { 793 } else {
688 rejectTaskRecordRepository = value 794 rejectTaskRecordRepository = value
689 } 795 }
  796 +
690 _, tasks, err := taskRepository.Find(map[string]interface{}{ 797 _, tasks, err := taskRepository.Find(map[string]interface{}{
691 "companyId": searchRejectTaskRecordCommand.CompanyId, 798 "companyId": searchRejectTaskRecordCommand.CompanyId,
692 "taskContentMatch": searchRejectTaskRecordCommand.TaskContentMatch, 799 "taskContentMatch": searchRejectTaskRecordCommand.TaskContentMatch,
@@ -702,6 +809,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom @@ -702,6 +809,7 @@ func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCom
702 for _, task := range tasks { 809 for _, task := range tasks {
703 taskIds = append(taskIds, task.TaskId) 810 taskIds = append(taskIds, task.TaskId)
704 } 811 }
  812 +
705 if count, rejectTaskRecords, err := rejectTaskRecordRepository.Find(map[string]interface{}{ 813 if count, rejectTaskRecords, err := rejectTaskRecordRepository.Find(map[string]interface{}{
706 "taskIds": taskIds, 814 "taskIds": taskIds,
707 "rejectStartTime": searchRejectTaskRecordCommand.RejectStartTime, 815 "rejectStartTime": searchRejectTaskRecordCommand.RejectStartTime,
@@ -739,6 +847,7 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu @@ -739,6 +847,7 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu
739 if err := getRejectTaskRecordQuery.ValidateQuery(); err != nil { 847 if err := getRejectTaskRecordQuery.ValidateQuery(); err != nil {
740 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 848 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
741 } 849 }
  850 +
742 transactionContext, err := factory.CreateTransactionContext(nil) 851 transactionContext, err := factory.CreateTransactionContext(nil)
743 if err != nil { 852 if err != nil {
744 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 853 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -749,6 +858,7 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu @@ -749,6 +858,7 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu
749 defer func() { 858 defer func() {
750 transactionContext.RollbackTransaction() 859 transactionContext.RollbackTransaction()
751 }() 860 }()
  861 +
752 var rejectTaskRecordRepository domain.RejectTaskRecordRepository 862 var rejectTaskRecordRepository domain.RejectTaskRecordRepository
753 if value, err := factory.CreateRejectTaskRecordRepository(map[string]interface{}{ 863 if value, err := factory.CreateRejectTaskRecordRepository(map[string]interface{}{
754 "transactionContext": transactionContext, 864 "transactionContext": transactionContext,
@@ -757,6 +867,7 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu @@ -757,6 +867,7 @@ func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *qu
757 } else { 867 } else {
758 rejectTaskRecordRepository = value 868 rejectTaskRecordRepository = value
759 } 869 }
  870 +
760 rejectTaskRecord, err := rejectTaskRecordRepository.FindOne(map[string]interface{}{"rejectTaskRecordId": getRejectTaskRecordQuery.RejectTaskRecordId}) 871 rejectTaskRecord, err := rejectTaskRecordRepository.FindOne(map[string]interface{}{"rejectTaskRecordId": getRejectTaskRecordQuery.RejectTaskRecordId})
761 if err != nil { 872 if err != nil {
762 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 873 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -776,6 +887,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -776,6 +887,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
776 if err := createTaskCommand.ValidateCommand(); err != nil { 887 if err := createTaskCommand.ValidateCommand(); err != nil {
777 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 888 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
778 } 889 }
  890 +
779 transactionContext, err := factory.CreateTransactionContext(nil) 891 transactionContext, err := factory.CreateTransactionContext(nil)
780 if err != nil { 892 if err != nil {
781 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 893 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -786,6 +898,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -786,6 +898,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
786 defer func() { 898 defer func() {
787 transactionContext.RollbackTransaction() 899 transactionContext.RollbackTransaction()
788 }() 900 }()
  901 +
789 var taskDao *dao.TaskDao 902 var taskDao *dao.TaskDao
790 if value, err := factory.CreateTaskDao(map[string]interface{}{ 903 if value, err := factory.CreateTaskDao(map[string]interface{}{
791 "transactionContext": transactionContext, 904 "transactionContext": transactionContext,
@@ -794,6 +907,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -794,6 +907,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
794 } else { 907 } else {
795 taskDao = value 908 taskDao = value
796 } 909 }
  910 +
797 var employeeRepository domain.EmployeeRepository 911 var employeeRepository domain.EmployeeRepository
798 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{ 912 if value, err := factory.CreateEmployeeRepository(map[string]interface{}{
799 "transactionContext": transactionContext, 913 "transactionContext": transactionContext,
@@ -802,28 +916,54 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -802,28 +916,54 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
802 } else { 916 } else {
803 employeeRepository = value 917 employeeRepository = value
804 } 918 }
  919 +
805 sponsor, err := employeeRepository.FindOne(map[string]interface{}{ 920 sponsor, err := employeeRepository.FindOne(map[string]interface{}{
806 "uid": createTaskCommand.Sponsor, 921 "uid": createTaskCommand.Sponsor,
  922 + "status": 1,
807 }) 923 })
808 if err != nil { 924 if err != nil {
809 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 925 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
810 } 926 }
811 if sponsor == nil { 927 if sponsor == nil {
  928 + // 获取无效的发布人员信息
  929 + sponsorInvalid, err := employeeRepository.FindOne(map[string]interface{}{
  930 + "uid": createTaskCommand.AssignedPerson,
  931 + })
  932 + if err != nil {
  933 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  934 + }
  935 + if sponsorInvalid == nil {
812 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的发布者") 936 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的发布者")
813 } 937 }
  938 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的发布者:"+ sponsorInvalid.EmployeeInfo.EmployeeName)
  939 + }
  940 +
  941 + // 获取任务指派人
814 var assignedPerson *domain.EmployeeInfo 942 var assignedPerson *domain.EmployeeInfo
815 if createTaskCommand.AssignedPerson != 0 { 943 if createTaskCommand.AssignedPerson != 0 {
816 employee, err := employeeRepository.FindOne(map[string]interface{}{ 944 employee, err := employeeRepository.FindOne(map[string]interface{}{
817 "uid": createTaskCommand.AssignedPerson, 945 "uid": createTaskCommand.AssignedPerson,
  946 + "status": 1,
818 }) 947 })
819 if err != nil { 948 if err != nil {
820 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 949 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
821 } 950 }
822 if employee == nil { 951 if employee == nil {
  952 + // 获取无效的指派人员信息
  953 + employeeInvalid, err := employeeRepository.FindOne(map[string]interface{}{
  954 + "uid": createTaskCommand.AssignedPerson,
  955 + })
  956 + if err != nil {
  957 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  958 + }
  959 + if employeeInvalid == nil {
823 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的指派人员") 960 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的指派人员")
824 } 961 }
  962 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的指派人员:" + employeeInvalid.EmployeeInfo.EmployeeName)
  963 + }
825 assignedPerson = employee.EmployeeInfo 964 assignedPerson = employee.EmployeeInfo
826 } 965 }
  966 +
827 newTask := &domain.Task{ 967 newTask := &domain.Task{
828 TaskStatus: domain.TASK_STATUS_UNRELEASED, 968 TaskStatus: domain.TASK_STATUS_UNRELEASED,
829 CompanyId: createTaskCommand.CompanyId, 969 CompanyId: createTaskCommand.CompanyId,
@@ -838,6 +978,8 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -838,6 +978,8 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
838 CustomerValues: createTaskCommand.CustomerValues, 978 CustomerValues: createTaskCommand.CustomerValues,
839 TaskNature: createTaskCommand.TaskNature, 979 TaskNature: createTaskCommand.TaskNature,
840 SuMoney: createTaskCommand.SuMoney, 980 SuMoney: createTaskCommand.SuMoney,
  981 + MinSuMoney: createTaskCommand.MinSuMoney,
  982 + MaxSuMoney: createTaskCommand.MaxSuMoney,
841 AcceptanceStandard: createTaskCommand.AcceptanceStandard, 983 AcceptanceStandard: createTaskCommand.AcceptanceStandard,
842 TaskDescription: createTaskCommand.TaskDescription, 984 TaskDescription: createTaskCommand.TaskDescription,
843 TaskPictureUrls: createTaskCommand.TaskPictureUrls, 985 TaskPictureUrls: createTaskCommand.TaskPictureUrls,
@@ -846,6 +988,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -846,6 +988,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
846 PlannedCompletionTime: createTaskCommand.PlannedCompletionTime, 988 PlannedCompletionTime: createTaskCommand.PlannedCompletionTime,
847 CreateTime: time.Now(), 989 CreateTime: time.Now(),
848 } 990 }
  991 +
849 var taskRepository domain.TaskRepository 992 var taskRepository domain.TaskRepository
850 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 993 if value, err := factory.CreateTaskRepository(map[string]interface{}{
851 "transactionContext": transactionContext, 994 "transactionContext": transactionContext,
@@ -854,6 +997,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -854,6 +997,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
854 } else { 997 } else {
855 taskRepository = value 998 taskRepository = value
856 } 999 }
  1000 +
857 if createTaskCommand.ReferenceResourceItems != nil && len(createTaskCommand.ReferenceResourceItems) > 0 { 1001 if createTaskCommand.ReferenceResourceItems != nil && len(createTaskCommand.ReferenceResourceItems) > 0 {
858 var referenceResourceIds []int64 1002 var referenceResourceIds []int64
859 for _, referenceResourceItem := range createTaskCommand.ReferenceResourceItems { 1003 for _, referenceResourceItem := range createTaskCommand.ReferenceResourceItems {
@@ -871,6 +1015,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask @@ -871,6 +1015,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask
871 } 1015 }
872 } 1016 }
873 } 1017 }
  1018 +
874 if task, err := taskRepository.Save(newTask); err != nil { 1019 if task, err := taskRepository.Save(newTask); err != nil {
875 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1020 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
876 } else { 1021 } else {
@@ -908,6 +1053,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -908,6 +1053,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
908 if err := getTaskQuery.ValidateQuery(); err != nil { 1053 if err := getTaskQuery.ValidateQuery(); err != nil {
909 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 1054 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
910 } 1055 }
  1056 +
911 transactionContext, err := factory.CreateTransactionContext(nil) 1057 transactionContext, err := factory.CreateTransactionContext(nil)
912 if err != nil { 1058 if err != nil {
913 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1059 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -918,6 +1064,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -918,6 +1064,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
918 defer func() { 1064 defer func() {
919 transactionContext.RollbackTransaction() 1065 transactionContext.RollbackTransaction()
920 }() 1066 }()
  1067 +
921 var taskRepository domain.TaskRepository 1068 var taskRepository domain.TaskRepository
922 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 1069 if value, err := factory.CreateTaskRepository(map[string]interface{}{
923 "transactionContext": transactionContext, 1070 "transactionContext": transactionContext,
@@ -926,6 +1073,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -926,6 +1073,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
926 } else { 1073 } else {
927 taskRepository = value 1074 taskRepository = value
928 } 1075 }
  1076 +
929 task, err := taskRepository.FindOne(map[string]interface{}{"taskId": getTaskQuery.TaskId}) 1077 task, err := taskRepository.FindOne(map[string]interface{}{"taskId": getTaskQuery.TaskId})
930 if err != nil { 1078 if err != nil {
931 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1079 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -941,6 +1089,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -941,6 +1089,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
941 } else { 1089 } else {
942 projectBelongRepository = value 1090 projectBelongRepository = value
943 } 1091 }
  1092 +
944 projectBelongMap := make(map[int]*domain.ProjectBelong) 1093 projectBelongMap := make(map[int]*domain.ProjectBelong)
945 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ 1094 if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{
946 "companyId": task.CompanyId, 1095 "companyId": task.CompanyId,
@@ -951,6 +1100,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -951,6 +1100,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
951 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong 1100 projectBelongMap[projectBelong.ProjectBelongId] = projectBelong
952 } 1101 }
953 } 1102 }
  1103 +
954 var customerValueRepository domain.CustomerValueRepository 1104 var customerValueRepository domain.CustomerValueRepository
955 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ 1105 if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{
956 "transactionContext": transactionContext, 1106 "transactionContext": transactionContext,
@@ -959,6 +1109,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -959,6 +1109,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
959 } else { 1109 } else {
960 customerValueRepository = value 1110 customerValueRepository = value
961 } 1111 }
  1112 +
962 customerValueMap := make(map[int]*domain.CustomerValue) 1113 customerValueMap := make(map[int]*domain.CustomerValue)
963 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ 1114 if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{
964 "companyId": task.CompanyId, 1115 "companyId": task.CompanyId,
@@ -969,6 +1120,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -969,6 +1120,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
969 customerValueMap[customerValue.CustomerValueId] = customerValue 1120 customerValueMap[customerValue.CustomerValueId] = customerValue
970 } 1121 }
971 } 1122 }
  1123 +
972 var taskNatureRepository domain.TaskNatureRepository 1124 var taskNatureRepository domain.TaskNatureRepository
973 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ 1125 if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{
974 "transactionContext": transactionContext, 1126 "transactionContext": transactionContext,
@@ -977,6 +1129,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -977,6 +1129,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
977 } else { 1129 } else {
978 taskNatureRepository = value 1130 taskNatureRepository = value
979 } 1131 }
  1132 +
980 taskNatureMap := make(map[int]*domain.TaskNature) 1133 taskNatureMap := make(map[int]*domain.TaskNature)
981 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ 1134 if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{
982 "companyId": task.CompanyId, 1135 "companyId": task.CompanyId,
@@ -987,6 +1140,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -987,6 +1140,7 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
987 taskNatureMap[taskNature.TaskNatureId] = taskNature 1140 taskNatureMap[taskNature.TaskNatureId] = taskNature
988 } 1141 }
989 } 1142 }
  1143 +
990 taskDto := &dto.TaskDto{} 1144 taskDto := &dto.TaskDto{}
991 if err := taskDto.LoadDto(task, projectBelongMap, customerValueMap, taskNatureMap); err != nil { 1145 if err := taskDto.LoadDto(task, projectBelongMap, customerValueMap, taskNatureMap); err != nil {
992 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1146 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -994,15 +1148,55 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter @@ -994,15 +1148,55 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter
994 if err := transactionContext.CommitTransaction(); err != nil { 1148 if err := transactionContext.CommitTransaction(); err != nil {
995 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1149 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
996 } 1150 }
  1151 +
  1152 + // 返回任务素币奖励范围
  1153 + if taskDto.TaskStatus != 5 && task.MinSuMoney == 0 && task.MaxSuMoney == 0 {
  1154 + taskDto.MinSuMoney = 0
  1155 + taskDto.MaxSuMoney = task.SuMoney
  1156 + }
  1157 +
997 return taskDto, nil 1158 return taskDto, nil
998 } 1159 }
999 } 1160 }
1000 1161
  1162 +// 更新过期任务状态
  1163 +func (taskService *TaskService) UpdateTaskStatus() (interface{}, error) {
  1164 + transactionContext, err := factory.CreateTransactionContext(nil)
  1165 + if err != nil {
  1166 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  1167 + }
  1168 + if err := transactionContext.StartTransaction(); err != nil {
  1169 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  1170 + }
  1171 + defer func() {
  1172 + transactionContext.RollbackTransaction()
  1173 + }()
  1174 +
  1175 + var taskDao *dao.TaskDao
  1176 + if value, err := factory.CreateTaskDao(map[string]interface{}{
  1177 + "transactionContext": transactionContext,
  1178 + }); err != nil {
  1179 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  1180 + } else {
  1181 + taskDao = value
  1182 + }
  1183 +
  1184 + if err := taskDao.UpdateExpiredPlannedCompletionTimeBidTask(); err != nil {
  1185 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1186 + }
  1187 +
  1188 + if err := transactionContext.CommitTransaction(); err != nil {
  1189 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  1190 + }
  1191 + return nil, nil
  1192 +}
  1193 +
1001 // 更新任务 1194 // 更新任务
1002 func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTaskCommand) (interface{}, error) { 1195 func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTaskCommand) (interface{}, error) {
1003 if err := updateTaskCommand.ValidateCommand(); err != nil { 1196 if err := updateTaskCommand.ValidateCommand(); err != nil {
1004 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 1197 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
1005 } 1198 }
  1199 +
1006 transactionContext, err := factory.CreateTransactionContext(nil) 1200 transactionContext, err := factory.CreateTransactionContext(nil)
1007 if err != nil { 1201 if err != nil {
1008 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1202 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -1013,6 +1207,7 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask @@ -1013,6 +1207,7 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask
1013 defer func() { 1207 defer func() {
1014 transactionContext.RollbackTransaction() 1208 transactionContext.RollbackTransaction()
1015 }() 1209 }()
  1210 +
1016 var taskRepository domain.TaskRepository 1211 var taskRepository domain.TaskRepository
1017 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 1212 if value, err := factory.CreateTaskRepository(map[string]interface{}{
1018 "transactionContext": transactionContext, 1213 "transactionContext": transactionContext,
@@ -1021,6 +1216,7 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask @@ -1021,6 +1216,7 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask
1021 } else { 1216 } else {
1022 taskRepository = value 1217 taskRepository = value
1023 } 1218 }
  1219 +
1024 var taskDao *dao.TaskDao 1220 var taskDao *dao.TaskDao
1025 if value, err := factory.CreateTaskDao(map[string]interface{}{ 1221 if value, err := factory.CreateTaskDao(map[string]interface{}{
1026 "transactionContext": transactionContext, 1222 "transactionContext": transactionContext,
@@ -1029,13 +1225,34 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask @@ -1029,13 +1225,34 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask
1029 } else { 1225 } else {
1030 taskDao = value 1226 taskDao = value
1031 } 1227 }
  1228 +
  1229 + var releaseTaskService service.ReleaseTaskService
  1230 + if value, err := factory.CreateReleaseTaskService(map[string]interface{}{
  1231 + "transactionContext": transactionContext,
  1232 + }); err != nil {
  1233 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1234 + } else {
  1235 + releaseTaskService = value
  1236 + releaseTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{})
  1237 + releaseTaskService.Subscribe(&subscriber.MmmOpenApiServiceServiceSubscriber{
  1238 + TransactionContext: transactionContext.(*pgTransaction.TransactionContext),
  1239 + })
  1240 + }
  1241 +
  1242 + var taskBidEndTime time.Time
  1243 + // 找到当前任务
1032 task, err := taskRepository.FindOne(map[string]interface{}{"taskId": updateTaskCommand.TaskId}) 1244 task, err := taskRepository.FindOne(map[string]interface{}{"taskId": updateTaskCommand.TaskId})
1033 if err != nil { 1245 if err != nil {
1034 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1246 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1035 } 1247 }
1036 if task == nil { 1248 if task == nil {
1037 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateTaskCommand.TaskId))) 1249 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateTaskCommand.TaskId)))
  1250 + } else {
  1251 + if task.TaskStatus == domain.TASK_STATUS_EXPIRED {
  1252 + taskBidEndTime = task.BidInfo.BidEndTime
  1253 + }
1038 } 1254 }
  1255 +
1039 if updateTaskCommand.ReferenceResourceItems != nil && len(updateTaskCommand.ReferenceResourceItems) > 0 { 1256 if updateTaskCommand.ReferenceResourceItems != nil && len(updateTaskCommand.ReferenceResourceItems) > 0 {
1040 var referenceResourceIds []int64 1257 var referenceResourceIds []int64
1041 for _, referenceResourceItem := range updateTaskCommand.ReferenceResourceItems { 1258 for _, referenceResourceItem := range updateTaskCommand.ReferenceResourceItems {
@@ -1058,8 +1275,11 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask @@ -1058,8 +1275,11 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask
1058 } 1275 }
1059 } 1276 }
1060 } 1277 }
  1278 +
1061 updateData := tool_funs.SimpleStructToMap(updateTaskCommand) 1279 updateData := tool_funs.SimpleStructToMap(updateTaskCommand)
  1280 +
1062 fmt.Println(updateTaskCommand.AssignedPerson != int64(0)) 1281 fmt.Println(updateTaskCommand.AssignedPerson != int64(0))
  1282 +
1063 if task.TaskType == domain.TASK_TYPE_DESIGNATE { 1283 if task.TaskType == domain.TASK_TYPE_DESIGNATE {
1064 if updateTaskCommand.AssignedPerson != int64(0) { 1284 if updateTaskCommand.AssignedPerson != int64(0) {
1065 var employeeRepository domain.EmployeeRepository 1285 var employeeRepository domain.EmployeeRepository
@@ -1072,18 +1292,30 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask @@ -1072,18 +1292,30 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask
1072 } 1292 }
1073 employee, err := employeeRepository.FindOne(map[string]interface{}{ 1293 employee, err := employeeRepository.FindOne(map[string]interface{}{
1074 "uid": updateTaskCommand.AssignedPerson, 1294 "uid": updateTaskCommand.AssignedPerson,
  1295 + "status": 1,
1075 }) 1296 })
1076 if err != nil { 1297 if err != nil {
1077 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1298 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1078 } 1299 }
1079 if employee == nil { 1300 if employee == nil {
  1301 + // 获取无效的发布人员信息
  1302 + employeeInvalid, err := employeeRepository.FindOne(map[string]interface{}{
  1303 + "uid": updateTaskCommand.AssignedPerson,
  1304 + })
  1305 + if err != nil {
  1306 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1307 + }
  1308 + if employeeInvalid == nil {
1080 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的指派人员") 1309 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的指派人员")
1081 } 1310 }
  1311 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的指派人员:" + employeeInvalid.EmployeeInfo.EmployeeName)
  1312 + }
1082 updateData["assignedPerson"] = employee.EmployeeInfo 1313 updateData["assignedPerson"] = employee.EmployeeInfo
1083 } else { 1314 } else {
1084 updateData["assignedPerson"] = &domain.EmployeeInfo{} 1315 updateData["assignedPerson"] = &domain.EmployeeInfo{}
1085 } 1316 }
1086 } 1317 }
  1318 +
1087 if err := task.Update(updateData); err != nil { 1319 if err := task.Update(updateData); err != nil {
1088 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) 1320 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
1089 } 1321 }
@@ -1095,6 +1327,18 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask @@ -1095,6 +1327,18 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask
1095 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1327 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1096 } 1328 }
1097 } 1329 }
  1330 +
  1331 + if task.TaskStatus == domain.TASK_STATUS_EXPIRED {
  1332 + // 未修改时间或者修改的时间小于当前时间
  1333 + if updateTaskCommand.BidEndTime.Local().Equal(taskBidEndTime.Local()) || updateTaskCommand.BidEndTime.Local().Before(time.Date(time.Now().Local().Year(), time.Now().Local().Month(), time.Now().Local().Day(), 23, 59, 59, 0, time.Local)) {
  1334 + return nil, application.ThrowError(application.BUSINESS_ERROR, "请重新修改竞标时间")
  1335 + } else {
  1336 + if _, err := releaseTaskService.Release(task.TaskId, task.Sponsor.Uid); err != nil {
  1337 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1338 + }
  1339 + }
  1340 + }
  1341 +
1098 if err := transactionContext.CommitTransaction(); err != nil { 1342 if err := transactionContext.CommitTransaction(); err != nil {
1099 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1343 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
1100 } 1344 }
@@ -1124,6 +1368,7 @@ func (taskService *TaskService) RemoveTask(removeTaskCommand *command.RemoveTask @@ -1124,6 +1368,7 @@ func (taskService *TaskService) RemoveTask(removeTaskCommand *command.RemoveTask
1124 if err := removeTaskCommand.ValidateCommand(); err != nil { 1368 if err := removeTaskCommand.ValidateCommand(); err != nil {
1125 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 1369 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
1126 } 1370 }
  1371 +
1127 transactionContext, err := factory.CreateTransactionContext(nil) 1372 transactionContext, err := factory.CreateTransactionContext(nil)
1128 if err != nil { 1373 if err != nil {
1129 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1374 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -1134,6 +1379,7 @@ func (taskService *TaskService) RemoveTask(removeTaskCommand *command.RemoveTask @@ -1134,6 +1379,7 @@ func (taskService *TaskService) RemoveTask(removeTaskCommand *command.RemoveTask
1134 defer func() { 1379 defer func() {
1135 transactionContext.RollbackTransaction() 1380 transactionContext.RollbackTransaction()
1136 }() 1381 }()
  1382 +
1137 var taskRepository domain.TaskRepository 1383 var taskRepository domain.TaskRepository
1138 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 1384 if value, err := factory.CreateTaskRepository(map[string]interface{}{
1139 "transactionContext": transactionContext, 1385 "transactionContext": transactionContext,
@@ -1142,6 +1388,7 @@ func (taskService *TaskService) RemoveTask(removeTaskCommand *command.RemoveTask @@ -1142,6 +1388,7 @@ func (taskService *TaskService) RemoveTask(removeTaskCommand *command.RemoveTask
1142 } else { 1388 } else {
1143 taskRepository = value 1389 taskRepository = value
1144 } 1390 }
  1391 +
1145 task, err := taskRepository.FindOne(map[string]interface{}{"taskId": removeTaskCommand.TaskId}) 1392 task, err := taskRepository.FindOne(map[string]interface{}{"taskId": removeTaskCommand.TaskId})
1146 if err != nil { 1393 if err != nil {
1147 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1394 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -1181,6 +1428,7 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in @@ -1181,6 +1428,7 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in
1181 if err := listTaskQuery.ValidateQuery(); err != nil { 1428 if err := listTaskQuery.ValidateQuery(); err != nil {
1182 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 1429 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
1183 } 1430 }
  1431 +
1184 transactionContext, err := factory.CreateTransactionContext(nil) 1432 transactionContext, err := factory.CreateTransactionContext(nil)
1185 if err != nil { 1433 if err != nil {
1186 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1434 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -1191,6 +1439,7 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in @@ -1191,6 +1439,7 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in
1191 defer func() { 1439 defer func() {
1192 transactionContext.RollbackTransaction() 1440 transactionContext.RollbackTransaction()
1193 }() 1441 }()
  1442 +
1194 var taskRepository domain.TaskRepository 1443 var taskRepository domain.TaskRepository
1195 if value, err := factory.CreateTaskRepository(map[string]interface{}{ 1444 if value, err := factory.CreateTaskRepository(map[string]interface{}{
1196 "transactionContext": transactionContext, 1445 "transactionContext": transactionContext,
@@ -1199,15 +1448,24 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in @@ -1199,15 +1448,24 @@ func (taskService *TaskService) ListTask(listTaskQuery *query.ListTaskQuery) (in
1199 } else { 1448 } else {
1200 taskRepository = value 1449 taskRepository = value
1201 } 1450 }
  1451 +
1202 if count, tasks, err := taskRepository.Find(tool_funs.SimpleStructToMap(listTaskQuery)); err != nil { 1452 if count, tasks, err := taskRepository.Find(tool_funs.SimpleStructToMap(listTaskQuery)); err != nil {
1203 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1453 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1204 } else { 1454 } else {
1205 if err := transactionContext.CommitTransaction(); err != nil { 1455 if err := transactionContext.CommitTransaction(); err != nil {
1206 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1456 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
1207 } 1457 }
  1458 + var retTasks []*domain.Task
  1459 + for _, task := range tasks {
  1460 + if task.TaskStatus != 5 && task.MinSuMoney == 0 && task.MaxSuMoney == 0 {
  1461 + task.MinSuMoney = 0
  1462 + task.MaxSuMoney = task.SuMoney
  1463 + }
  1464 + retTasks = append(retTasks, task)
  1465 + }
1208 return map[string]interface{}{ 1466 return map[string]interface{}{
1209 "count": count, 1467 "count": count,
1210 - "tasks": tasks, 1468 + "tasks": retTasks,
1211 }, nil 1469 }, nil
1212 } 1470 }
1213 } 1471 }
@@ -7,6 +7,7 @@ import ( @@ -7,6 +7,7 @@ import (
7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/unifiedUserCenter/command" 7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/unifiedUserCenter/command"
8 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" 8 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
9 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao" 9 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao"
  10 + "time"
10 ) 11 )
11 12
12 // 统一用户中心适配服务 13 // 统一用户中心适配服务
@@ -88,12 +89,12 @@ func (unifiedUserCenterService *UnifiedUserCenterService) SyncEmployeeCallback(s @@ -88,12 +89,12 @@ func (unifiedUserCenterService *UnifiedUserCenterService) SyncEmployeeCallback(s
88 uids = append(uids, int64(uid.(float64))) 89 uids = append(uids, int64(uid.(float64)))
89 } 90 }
90 } 91 }
91 - if value, ok := data["add"]; ok { 92 + if value, ok := data["add"]; ok { // 添加员工
92 for _, addEmployee := range value.([]interface{}) { 93 for _, addEmployee := range value.([]interface{}) {
93 addEmployees = append(addEmployees, addEmployee.(map[string]interface{})) 94 addEmployees = append(addEmployees, addEmployee.(map[string]interface{}))
94 } 95 }
95 } 96 }
96 - if value, ok := data["edit"]; ok { 97 + if value, ok := data["edit"]; ok { // 编辑员工
97 for _, editEmployee := range value.([]interface{}) { 98 for _, editEmployee := range value.([]interface{}) {
98 editEmployees = append(editEmployees, editEmployee.(map[string]interface{})) 99 editEmployees = append(editEmployees, editEmployee.(map[string]interface{}))
99 } 100 }
@@ -145,7 +146,9 @@ func (unifiedUserCenterService *UnifiedUserCenterService) SyncEmployeeCallback(s @@ -145,7 +146,9 @@ func (unifiedUserCenterService *UnifiedUserCenterService) SyncEmployeeCallback(s
145 }, 146 },
146 Status: status, 147 Status: status,
147 SuMoney: 0, 148 SuMoney: 0,
  149 + CreateTime: time.Now(),
148 } 150 }
  151 +
149 if _, err := employeeRepository.Save(employee); err != nil { 152 if _, err := employeeRepository.Save(employee); err != nil {
150 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 153 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
151 } 154 }
@@ -205,6 +208,7 @@ func (unifiedUserCenterService *UnifiedUserCenterService) SyncEmployeeCallback(s @@ -205,6 +208,7 @@ func (unifiedUserCenterService *UnifiedUserCenterService) SyncEmployeeCallback(s
205 }, 208 },
206 Status: status, 209 Status: status,
207 SuMoney: 0, 210 SuMoney: 0,
  211 + CreateTime: time.Now(),
208 } 212 }
209 if _, err := employeeRepository.Save(employee); err != nil { 213 if _, err := employeeRepository.Save(employee); err != nil {
210 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 214 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -8,6 +8,9 @@ var LOG_LEVEL = "debug" @@ -8,6 +8,9 @@ var LOG_LEVEL = "debug"
8 var ABILITY_SERVICE_HOST = "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" 8 var ABILITY_SERVICE_HOST = "https://suplus-worth-app-gateway-dev.fjmaimaimai.com"
9 var MMM_OPEN_API_SERVICE_HOST = "http://mmm-open-api-dev.fjmaimaimai.com" 9 var MMM_OPEN_API_SERVICE_HOST = "http://mmm-open-api-dev.fjmaimaimai.com"
10 10
  11 +//var LOG_LEVEL = "debug"
  12 +var LOG_File = "logs/app.log"
  13 +
11 func init() { 14 func init() {
12 if os.Getenv("LOG_LEVEL") != "" { 15 if os.Getenv("LOG_LEVEL") != "" {
13 LOG_LEVEL = os.Getenv("LOG_LEVEL") 16 LOG_LEVEL = os.Getenv("LOG_LEVEL")
@@ -2,11 +2,11 @@ package constant @@ -2,11 +2,11 @@ package constant
2 2
3 import "os" 3 import "os"
4 4
5 -var POSTGRESQL_DB_NAME = "mmm-worth" 5 +var POSTGRESQL_DB_NAME = "mmm-worth-test"
6 var POSTGRESQL_USER = "postgres" 6 var POSTGRESQL_USER = "postgres"
7 -var POSTGRESQL_PASSWORD = "abc123456" 7 +var POSTGRESQL_PASSWORD = "1993618jack"
8 var POSTGRESQL_HOST = "127.0.0.1" 8 var POSTGRESQL_HOST = "127.0.0.1"
9 -var POSTGRESQL_PORT = "32432" 9 +var POSTGRESQL_PORT = "5432"
10 var DISABLE_CREATE_TABLE = false 10 var DISABLE_CREATE_TABLE = false
11 var DISABLE_SQL_GENERATE_PRINT = false 11 var DISABLE_SQL_GENERATE_PRINT = false
12 12
  1 +package domain
  2 +
  3 +import (
  4 + "time"
  5 +)
  6 +
  7 +// 现金池
  8 +type CashPool struct {
  9 + CashPoolId int64 `json:"cashPoolId"` // 现金池id
  10 + Cash float64 `json:"cash"` // 投入现金池的现金
  11 + CompanyId int64 `json:"companyId"` // 公司id
  12 + ExchangedCash float64 `json:"exchangedCash"` // 已兑换的现金
  13 + UnExchangeCash float64 `json:"unExchangeCash"` // 未兑换的现金
  14 + ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换的素币
  15 + UnExchangeSuMoney float64 `json:"unExchangeSuMoney"` // 未兑换的素币
  16 + Rate float64 `json:"rate"` // 平均兑换汇率
  17 + LastRate float64 `json:"lastRate"` // 上期活动兑换汇率
  18 + CreateTime time.Time `json:"createTime"` // 现金投入现金池时间
  19 +}
  20 +
  21 +type CashPoolRepository interface {
  22 + Save(cashPool *CashPool) (*CashPool, error)
  23 + FindOne(queryOptions map[string]interface{}) (*CashPool, error)
  24 + Find(queryOptions map[string]interface{}) (int64, []*CashPool, error)
  25 +}
  26 +
  27 +func (cashPool *CashPool) Update(data map[string]interface{}) error {
  28 + if cash, ok := data["cash"]; ok {
  29 + cashPool.Cash = cash.(float64)
  30 + }
  31 + if exchangedCash, ok := data["exchangedCash"]; ok {
  32 + cashPool.ExchangedCash = exchangedCash.(float64)
  33 + }
  34 + if unExchangeCash, ok := data["unExchangeCash"]; ok {
  35 + cashPool.UnExchangeCash = unExchangeCash.(float64)
  36 + }
  37 + if exchangedSuMoney, ok := data["exchangedSuMoney"]; ok {
  38 + cashPool.ExchangedSuMoney = exchangedSuMoney.(float64)
  39 + }
  40 + if unExchangeSuMoney, ok := data["unExchangeSuMoney"]; ok {
  41 + cashPool.UnExchangeSuMoney = unExchangeSuMoney.(float64)
  42 + }
  43 + if rate, ok := data["rate"]; ok {
  44 + cashPool.Rate = rate.(float64)
  45 + }
  46 + return nil
  47 +}
  48 +
  49 +func (cashPool *CashPool) Identity() interface{} {
  50 + if cashPool.CashPoolId == 0 {
  51 + return nil
  52 + }
  53 + return cashPool.CashPoolId
  54 +}
  55 +
1 package domain 1 package domain
2 2
  3 +import "time"
  4 +
3 // 员工 5 // 员工
4 type Employee struct { 6 type Employee struct {
5 // 员工ID 7 // 员工ID
@@ -14,6 +16,8 @@ type Employee struct { @@ -14,6 +16,8 @@ type Employee struct {
14 Status int `json:"status"` 16 Status int `json:"status"`
15 // 员工权限集合 17 // 员工权限集合
16 Permissions []int `json:"permissions"` 18 Permissions []int `json:"permissions"`
  19 + // 创建时间
  20 + CreateTime time.Time `json:"createTime"`
17 } 21 }
18 22
19 type EmployeeRepository interface { 23 type EmployeeRepository interface {
@@ -21,6 +25,8 @@ type EmployeeRepository interface { @@ -21,6 +25,8 @@ type EmployeeRepository interface {
21 Remove(employee *Employee) (*Employee, error) 25 Remove(employee *Employee) (*Employee, error)
22 FindOne(queryOptions map[string]interface{}) (*Employee, error) 26 FindOne(queryOptions map[string]interface{}) (*Employee, error)
23 Find(queryOptions map[string]interface{}) (int64, []*Employee, error) 27 Find(queryOptions map[string]interface{}) (int64, []*Employee, error)
  28 + FindByIds(queryOptions map[string]interface{}) (int64, []*Employee, error)
  29 + FindAll(queryOptions map[string]interface{}) (int64, []*Employee, error)
24 } 30 }
25 31
26 func (employee *Employee) Identify() interface{} { 32 func (employee *Employee) Identify() interface{} {
@@ -49,6 +55,9 @@ func (employee *Employee) Update(data map[string]interface{}) error { @@ -49,6 +55,9 @@ func (employee *Employee) Update(data map[string]interface{}) error {
49 if permissions, ok := data["permissions"]; ok { 55 if permissions, ok := data["permissions"]; ok {
50 employee.Permissions = permissions.([]int) 56 employee.Permissions = permissions.([]int)
51 } 57 }
  58 + if createTime, ok := data["createTime"]; ok && !createTime.(time.Time).IsZero() {
  59 + employee.CreateTime = createTime.(time.Time)
  60 + }
52 return nil 61 return nil
53 } 62 }
54 63
  1 +package domain
  2 +
  3 +import (
  4 + "time"
  5 +)
  6 +
  7 +// 兑换现金活动
  8 +type ExchangeCashActivity struct {
  9 + ActivityId int64 `json:"activityId"` // 兑换现金活动id
  10 + ExchangeActivityName string `json:"exchangeActivityName"` // 兑换现金活动名称
  11 + CompanyId int64 `json:"companyId"` // 公司ID
  12 + ExchangedCash float64 `json:"exchangedCash"` // 已兑换的现金
  13 + ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换的素币
  14 + Deadline time.Time `json:"deadline"` // 兑换现金活动截止时间
  15 + CountDown int64 `json:"countDown"` // 兑换现金活动结束倒计时
  16 + Rate float64 `json:"rate"` // 兑换汇率
  17 + CreateTime time.Time `json:"createTime"` // 创建兑换现金活动时间
  18 +}
  19 +
  20 +type ExchangeActivityRepository interface {
  21 + Save(exchangeCashActivity *ExchangeCashActivity) (*ExchangeCashActivity, error)
  22 + Remove(exchangeCashActivity *ExchangeCashActivity) (*ExchangeCashActivity, error)
  23 + FindOne(queryOptions map[string]interface{}) (*ExchangeCashActivity, error)
  24 + Find(queryOptions map[string]interface{}) (int64, []*ExchangeCashActivity, error)
  25 + FindAll(queryOptions map[string]interface{}) (int64, []*ExchangeCashActivity, error)
  26 +}
  27 +
  28 +func (exchangeCashActivity *ExchangeCashActivity) Identity() interface{} {
  29 + if exchangeCashActivity.ActivityId == 0 {
  30 + return nil
  31 + }
  32 + return exchangeCashActivity.ActivityId
  33 +}
  34 +
  35 +func (exchangeCashActivity *ExchangeCashActivity) Update(data map[string]interface{}) error {
  36 + if exchangeActivityName, ok := data["exchangeActivityName"]; ok && exchangeActivityName != "" {
  37 + exchangeCashActivity.ExchangeActivityName = exchangeActivityName.(string)
  38 + }
  39 + if deadline, ok := data["deadline"]; ok && deadline != "" {
  40 + exchangeCashActivity.Deadline = deadline.(time.Time)
  41 + }
  42 + if countDown, ok := data["countDown"]; ok && countDown != 0 {
  43 + exchangeCashActivity.CountDown = countDown.(int64)
  44 + }
  45 + if exchangedSuMoney, ok := data["exchangedSuMoney"]; ok && exchangedSuMoney != 0 {
  46 + exchangeCashActivity.ExchangedSuMoney = exchangedSuMoney.(float64)
  47 + }
  48 + if exchangedCash, ok := data["exchangedCash"]; ok && exchangedCash != 0 {
  49 + exchangeCashActivity.ExchangedCash = exchangedCash.(float64)
  50 + }
  51 + if exchangeRate, ok := data["exchangeRate"]; ok && exchangeRate != 0 {
  52 + exchangeCashActivity.Rate = exchangeRate.(float64)
  53 + }
  54 + if createTime, ok := data["createTime"]; ok && createTime.(time.Time).IsZero() {
  55 + exchangeCashActivity.CreateTime = createTime.(time.Time)
  56 + }
  57 + exchangeCashActivity.CreateTime = time.Now()
  58 + return nil
  59 +}
  60 +
  61 +func (exchangeCashActivity *ExchangeCashActivity) TransferSuMoney(rate float64) error {
  62 + exchangeCashActivity.ExchangedSuMoney = exchangeCashActivity.ExchangedCash * rate
  63 + return nil
  64 +}
  65 +
  66 +func (exchangeCashActivity *ExchangeCashActivity) TransferCountDown() error {
  67 + exchangeCashActivity.CountDown = int64(time.Until(exchangeCashActivity.Deadline))
  68 + return nil
  69 +}
  1 +package domain
  2 +
  3 +import (
  4 + "fmt"
  5 + "strconv"
  6 +)
  7 +
  8 +// 参与兑换现金人员
  9 +type ExchangeCashPersonList struct {
  10 + ListId int64 `json:"listId"` // 清单id
  11 + EmployeeInfo *EmployeeInfo `json:"employeeInfo"` // 兑换人信息
  12 + ExchangeCashActivityId int64 `json:"exchangeActivityId"` // 参与的兑换活动id
  13 + ExchangedSuMoney float64 `json:"suMoney"` // 已兑换的素币
  14 + ExchangedCash float64 `json:"cash"` // 已兑换的现金
  15 +}
  16 +
  17 +type ExchangeCashPersonListRepository interface {
  18 + Save(exchangeCashPersonList *ExchangeCashPersonList) (*ExchangeCashPersonList, error)
  19 + Remove(exchangeCashPersonList *ExchangeCashPersonList) (*ExchangeCashPersonList, error)
  20 + FindOne(queryOptions map[string]interface{}) (*ExchangeCashPersonList, error)
  21 + Find(queryOptions map[string]interface{}) (int64, []*ExchangeCashPersonList, error)
  22 + FindAll(queryOptions map[string]interface{}) (int64, []*ExchangeCashPersonList, error)
  23 + FindById(queryOptions map[string]interface{}) (int64, []*ExchangeCashPersonList, error)
  24 +}
  25 +
  26 +func (exchangeCashPersonList *ExchangeCashPersonList) Identity() interface{} {
  27 + if exchangeCashPersonList.ListId == 0 {
  28 + return nil
  29 + }
  30 + return exchangeCashPersonList.ListId
  31 +}
  32 +
  33 +func (exchangeCashPersonList *ExchangeCashPersonList) Update(data map[string]interface{}) error {
  34 + if exchangedSuMoney, ok := data["exchangedSuMoney"]; ok && exchangedSuMoney != 0 {
  35 + exchangeCashPersonList.ExchangedSuMoney = exchangedSuMoney.(float64)
  36 + }
  37 + if exchangedCash, ok := data["exchangedCash"]; ok && exchangedCash != 0 {
  38 + exchangeCashPersonList.ExchangedCash, _ = strconv.ParseFloat(fmt.Sprintf("%.2F", exchangedCash.(float64)), 64)
  39 + }
  40 + return nil
  41 +}
  1 +package domain
  2 +
  3 +import (
  4 + "time"
  5 +)
  6 +
  7 +// 排行榜时间
  8 +type ListInterval struct {
  9 + ListIntervalId int `json:"listIntervalId"` // 排行榜时间id
  10 + CompanyId int `json:"companyId"` // 公司id
  11 + IntervalStartTime time.Time `json:"intervalStartTime"` // 排行榜开始时间
  12 + IntervalEndTime time.Time `json:"intervalEndTime"` // 排行榜结束时间
  13 +}
  14 +
  15 +type ListIntervalRepository interface {
  16 + Save(listInterval *ListInterval) (*ListInterval, error)
  17 + Remove(listInterval *ListInterval) (*ListInterval, error)
  18 + FindOne(queryOptions map[string]interface{}) (*ListInterval, error)
  19 + Find(queryOptions map[string]interface{}) (int64, []*ListInterval, error)
  20 + FindAll(queryOptions map[string]interface{}) (int64, []*ListInterval, error)
  21 +}
  22 +
  23 +func (listInterval *ListInterval) Identify() interface{} {
  24 + if listInterval.ListIntervalId == 0 {
  25 + return nil
  26 + }
  27 + return listInterval.ListIntervalId
  28 +}
  29 +
  30 +func (listInterval *ListInterval) Update(data map[string]interface{}) error {
  31 + if listIntervalStartTime, ok := data["listIntervalStartTime"]; ok {
  32 + listInterval.IntervalStartTime = listIntervalStartTime.(time.Time)
  33 + }
  34 + if listIntervalEndTime, ok := data["listIntervalEndTime"]; ok {
  35 + listInterval.IntervalEndTime = listIntervalEndTime.(time.Time)
  36 + }
  37 + return nil
  38 +}
@@ -8,5 +8,5 @@ import ( @@ -8,5 +8,5 @@ import (
8 8
9 type AcceptanceTaskService interface { 9 type AcceptanceTaskService interface {
10 coreDomain.DomainEventPublisher 10 coreDomain.DomainEventPublisher
11 - Acceptance(taskId int64, operatorUid int64, participators []int64, taskPercentage []*domain.TaskPercentageItem, referenceResourceScore []*domain.ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) (*domain.Task, error) 11 + Acceptance(taskId int64, operatorUid int64, participators []int64, suMoney float64, taskPercentage []*domain.TaskPercentageItem, referenceResourceScore []*domain.ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) (*domain.Task, error)
12 } 12 }
@@ -3,32 +3,28 @@ package domain @@ -3,32 +3,28 @@ package domain
3 import "time" 3 import "time"
4 4
5 const ( 5 const (
6 - SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE = iota + 1 //兑换 6 + SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE = iota + 1 //兑换物资
7 SU_MONEY_TRANSACTION_RECORD_TYPE_AWARD //任务奖励 7 SU_MONEY_TRANSACTION_RECORD_TYPE_AWARD //任务奖励
8 SU_MONEY_TRANSACTION_RECORD_TYPE_INCREASE //增加 8 SU_MONEY_TRANSACTION_RECORD_TYPE_INCREASE //增加
9 SU_MONEY_TRANSACTION_RECORD_TYPE_DEDUCT //扣除 9 SU_MONEY_TRANSACTION_RECORD_TYPE_DEDUCT //扣除
  10 + SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE_CASH //兑换现金
  11 + SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE_CASH_RESTORE // 兑换现金撤销
10 ) 12 )
11 13
12 // 素币事务记录 14 // 素币事务记录
13 type SuMoneyTransactionRecord struct { 15 type SuMoneyTransactionRecord struct {
14 - // 素币事务记录ID  
15 - SuMoneyTransactionRecordId int64 `json:"suMoneyTransactionRecordId"`  
16 - // 记录类型  
17 - RecordType int `json:"recordType"`  
18 - // 记录关联员工  
19 - Employee *EmployeeInfo `json:"employee"`  
20 - // 事务处理前素币值  
21 - SuMoneyBeforeTransaction float64 `json:"suMoneyBeforeTransaction"`  
22 - // 当前素币值  
23 - CurrentSuMoney float64 `json:"currentSuMoney"`  
24 - // 事务素币值  
25 - SuMoney float64 `json:"suMoney"`  
26 - // 操作人  
27 - Operator *EmployeeInfo `json:"operator"`  
28 - // 素币事务记录描述  
29 - RecordDescription string `json:"recordDescription"`  
30 - // 创建时间  
31 - CreateTime time.Time `json:"createTime"` 16 + SuMoneyTransactionRecordId int64 `json:"suMoneyTransactionRecordId"` // 素币事务记录ID
  17 + RecordType int `json:"recordType"` // 记录类型
  18 + Employee *EmployeeInfo `json:"employee"` // 记录关联员工
  19 + SuMoneyBeforeTransaction float64 `json:"suMoneyBeforeTransaction"` // 事务处理前素币值
  20 + CurrentSuMoney float64 `json:"currentSuMoney"` // 当前素币值
  21 + SuMoney float64 `json:"suMoney"` // 事务素币值
  22 + CashBeforeTransaction float64 `json:"cashBeforeTransaction"` // 事务处理前现金值
  23 + CurrentCash float64 `json:"currentCash"` // 当前现金值
  24 + Cash float64 `json:"cash"` // 事务现金值
  25 + Operator *EmployeeInfo `json:"operator"` // 操作人
  26 + RecordDescription string `json:"recordDescription"` // 素币事务记录描述
  27 + CreateTime time.Time `json:"createTime"` // 创建时间
32 } 28 }
33 29
34 type SuMoneyTransactionRecordRepository interface { 30 type SuMoneyTransactionRecordRepository interface {
@@ -36,6 +32,7 @@ type SuMoneyTransactionRecordRepository interface { @@ -36,6 +32,7 @@ type SuMoneyTransactionRecordRepository interface {
36 Remove(suMoneyTransactionRecord *SuMoneyTransactionRecord) (*SuMoneyTransactionRecord, error) 32 Remove(suMoneyTransactionRecord *SuMoneyTransactionRecord) (*SuMoneyTransactionRecord, error)
37 FindOne(queryOptions map[string]interface{}) (*SuMoneyTransactionRecord, error) 33 FindOne(queryOptions map[string]interface{}) (*SuMoneyTransactionRecord, error)
38 Find(queryOptions map[string]interface{}) (int64, []*SuMoneyTransactionRecord, error) 34 Find(queryOptions map[string]interface{}) (int64, []*SuMoneyTransactionRecord, error)
  35 + FindById(queryOptions map[string]interface{}) (int64, []*SuMoneyTransactionRecord, error)
39 } 36 }
40 37
41 func (suMoneyTransactionRecord *SuMoneyTransactionRecord) Identify() interface{} { 38 func (suMoneyTransactionRecord *SuMoneyTransactionRecord) Identify() interface{} {
@@ -24,6 +24,7 @@ const ( @@ -24,6 +24,7 @@ const (
24 TASK_STATUS_COMPLETED //已完成 24 TASK_STATUS_COMPLETED //已完成
25 TASK_STATUS_CLOSED //关闭 25 TASK_STATUS_CLOSED //关闭
26 TASK_STATUS_UNCONFIRMED //待确认 26 TASK_STATUS_UNCONFIRMED //待确认
  27 + TASK_STATUS_EXPIRED //已过期
27 ) 28 )
28 29
29 // 任务 30 // 任务
@@ -50,6 +51,10 @@ type Task struct { @@ -50,6 +51,10 @@ type Task struct {
50 TaskNature int `json:"taskNature"` 51 TaskNature int `json:"taskNature"`
51 // 奖励素币 52 // 奖励素币
52 SuMoney float64 `json:"suMoney"` 53 SuMoney float64 `json:"suMoney"`
  54 + // 最小奖励素币
  55 + MinSuMoney float64 `json:"minSuMoney"`
  56 + // 最大奖励素币
  57 + MaxSuMoney float64 `json:"maxSuMoney"`
53 // 验收标准 58 // 验收标准
54 AcceptanceStandard string `json:"acceptanceStandard"` 59 AcceptanceStandard string `json:"acceptanceStandard"`
55 // 任务描述 60 // 任务描述
@@ -98,11 +103,12 @@ type TaskStatus interface { @@ -98,11 +103,12 @@ type TaskStatus interface {
98 ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error 103 ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error
99 ApplyComplete(task *Task) error 104 ApplyComplete(task *Task) error
100 Off(task *Task) error 105 Off(task *Task) error
101 - Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error 106 + Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error
102 ConfirmTask(task *Task, plannedCompletionTime time.Time) error 107 ConfirmTask(task *Task, plannedCompletionTime time.Time) error
103 RejectReceiver(task *Task) error 108 RejectReceiver(task *Task) error
104 } 109 }
105 110
  111 +// 待发布的任务
106 type UnReleasedStatus struct{} 112 type UnReleasedStatus struct{}
107 113
108 func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) error { 114 func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) error {
@@ -127,6 +133,12 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) @@ -127,6 +133,12 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{})
127 if suMoney, ok := data["suMoney"]; ok { 133 if suMoney, ok := data["suMoney"]; ok {
128 task.SuMoney = suMoney.(float64) 134 task.SuMoney = suMoney.(float64)
129 } 135 }
  136 + if minSuMoney, ok := data["minSuMoney"]; ok {
  137 + task.MinSuMoney = minSuMoney.(float64)
  138 + }
  139 + if maxSuMoney, ok := data["maxSuMoney"]; ok {
  140 + task.MaxSuMoney = maxSuMoney.(float64)
  141 + }
130 if task.TaskType == TASK_TYPE_BID { 142 if task.TaskType == TASK_TYPE_BID {
131 if bidStartTime, ok := data["bidStartTime"]; ok { 143 if bidStartTime, ok := data["bidStartTime"]; ok {
132 task.BidInfo.BidStartTime = bidStartTime.(time.Time) 144 task.BidInfo.BidStartTime = bidStartTime.(time.Time)
@@ -198,7 +210,7 @@ func (status *UnReleasedStatus) Off(task *Task) error { @@ -198,7 +210,7 @@ func (status *UnReleasedStatus) Off(task *Task) error {
198 return fmt.Errorf("待发布的任务不允许关闭") 210 return fmt.Errorf("待发布的任务不允许关闭")
199 } 211 }
200 212
201 -func (status *UnReleasedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { 213 +func (status *UnReleasedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
202 return fmt.Errorf("待发布的任务不允许验收") 214 return fmt.Errorf("待发布的任务不允许验收")
203 } 215 }
204 216
@@ -213,7 +225,68 @@ func (status *UnReleasedStatus) RejectReceiver(task *Task) error { @@ -213,7 +225,68 @@ func (status *UnReleasedStatus) RejectReceiver(task *Task) error {
213 type UnClaimedStatus struct{} 225 type UnClaimedStatus struct{}
214 226
215 func (status *UnClaimedStatus) Update(task *Task, data map[string]interface{}) error { 227 func (status *UnClaimedStatus) Update(task *Task, data map[string]interface{}) error {
216 - return fmt.Errorf("待领取的任务不允许编辑") 228 + if taskName, ok := data["taskName"]; ok {
  229 + task.TaskName = taskName.(string)
  230 + }
  231 + if referenceResourceType, ok := data["referenceResourceType"]; ok {
  232 + task.ReferenceResource.ReferenceResourceType = referenceResourceType.(int)
  233 + }
  234 + if referenceResourceItems, ok := data["referenceResourceItems"]; ok {
  235 + task.ReferenceResource.ReferenceResourceItems = referenceResourceItems.([]*ReferenceResourceItem)
  236 + }
  237 + if projectBelong, ok := data["projectBelong"]; ok {
  238 + task.ProjectBelong = projectBelong.(int)
  239 + }
  240 + if customerValues, ok := data["customerValues"]; ok {
  241 + task.CustomerValues = customerValues.([]int)
  242 + }
  243 + if taskNature, ok := data["taskNature"]; ok {
  244 + task.TaskNature = taskNature.(int)
  245 + }
  246 + if suMoney, ok := data["suMoney"]; ok {
  247 + task.SuMoney = suMoney.(float64)
  248 + }
  249 + if minSuMoney, ok := data["minSuMoney"]; ok {
  250 + task.MinSuMoney = minSuMoney.(float64)
  251 + }
  252 + if maxSuMoney, ok := data["maxSuMoney"]; ok {
  253 + task.MaxSuMoney = maxSuMoney.(float64)
  254 + }
  255 + if task.TaskType == TASK_TYPE_BID {
  256 + if bidStartTime, ok := data["bidStartTime"]; ok {
  257 + task.BidInfo.BidStartTime = bidStartTime.(time.Time)
  258 + }
  259 + if bidEndTime, ok := data["bidEndTime"]; ok {
  260 + task.BidInfo.BidEndTime = bidEndTime.(time.Time)
  261 + }
  262 + if isRemind, ok := data["isRemind"]; ok {
  263 + task.BidInfo.IsRemind = isRemind.(bool)
  264 + }
  265 + }
  266 + if acceptanceStandard, ok := data["acceptanceStandard"]; ok {
  267 + task.AcceptanceStandard = acceptanceStandard.(string)
  268 + }
  269 + if taskDescription, ok := data["taskDescription"]; ok {
  270 + task.TaskDescription = taskDescription.(string)
  271 + }
  272 + if taskPictureUrls, ok := data["taskPictureUrls"]; ok {
  273 + task.TaskPictureUrls = taskPictureUrls.([]string)
  274 + }
  275 + if isRewardTake, ok := data["isRewardTake"]; ok {
  276 + task.IsRewardTake = isRewardTake.(bool)
  277 + }
  278 + if task.TaskType == TASK_TYPE_DESIGNATE {
  279 + if plannedCompletionTime, ok := data["plannedCompletionTime"]; ok {
  280 + task.PlannedCompletionTime = plannedCompletionTime.(time.Time)
  281 + }
  282 + if assignedPerson, ok := data["assignedPerson"]; ok {
  283 + task.AssignedPerson = assignedPerson.(*EmployeeInfo)
  284 + if task.AssignedPerson.Uid == 0 {
  285 + task.AssignedPerson = nil
  286 + }
  287 + }
  288 + }
  289 + return nil
217 } 290 }
218 291
219 func (status *UnClaimedStatus) Release(task *Task) error { 292 func (status *UnClaimedStatus) Release(task *Task) error {
@@ -286,7 +359,7 @@ func (status *UnClaimedStatus) Off(task *Task) error { @@ -286,7 +359,7 @@ func (status *UnClaimedStatus) Off(task *Task) error {
286 return nil 359 return nil
287 } 360 }
288 361
289 -func (status *UnClaimedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { 362 +func (status *UnClaimedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
290 return fmt.Errorf("待领取的任务不允许验收") 363 return fmt.Errorf("待领取的任务不允许验收")
291 } 364 }
292 365
@@ -333,7 +406,7 @@ func (status *UnderwayStatus) Off(task *Task) error { @@ -333,7 +406,7 @@ func (status *UnderwayStatus) Off(task *Task) error {
333 return nil 406 return nil
334 } 407 }
335 408
336 -func (status *UnderwayStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { 409 +func (status *UnderwayStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
337 return fmt.Errorf("进行中的任务不允许验收") 410 return fmt.Errorf("进行中的任务不允许验收")
338 } 411 }
339 412
@@ -359,6 +432,7 @@ func (status *UnderwayStatus) RejectReceiver(task *Task) error { @@ -359,6 +432,7 @@ func (status *UnderwayStatus) RejectReceiver(task *Task) error {
359 return nil 432 return nil
360 } 433 }
361 434
  435 +// 代验收的任务
362 type UnAcceptanceStatus struct{} 436 type UnAcceptanceStatus struct{}
363 437
364 func (status *UnAcceptanceStatus) Update(task *Task, data map[string]interface{}) error { 438 func (status *UnAcceptanceStatus) Update(task *Task, data map[string]interface{}) error {
@@ -391,8 +465,9 @@ func (status *UnAcceptanceStatus) Off(task *Task) error { @@ -391,8 +465,9 @@ func (status *UnAcceptanceStatus) Off(task *Task) error {
391 return nil 465 return nil
392 } 466 }
393 467
394 -func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { 468 +func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
395 task.Participators = participators 469 task.Participators = participators
  470 + task.SuMoney = suMoney
396 task.TaskPercentage = taskPercentage 471 task.TaskPercentage = taskPercentage
397 task.SolveReport = solveReport 472 task.SolveReport = solveReport
398 task.SolvePictureUrls = solvePictureUrls 473 task.SolvePictureUrls = solvePictureUrls
@@ -451,7 +526,7 @@ func (status *CompletedStatus) Off(task *Task) error { @@ -451,7 +526,7 @@ func (status *CompletedStatus) Off(task *Task) error {
451 return fmt.Errorf("已完成的任务不允许申请完成任务") 526 return fmt.Errorf("已完成的任务不允许申请完成任务")
452 } 527 }
453 528
454 -func (status *CompletedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { 529 +func (status *CompletedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
455 return fmt.Errorf("已完成的任务不允许验收") 530 return fmt.Errorf("已完成的任务不允许验收")
456 } 531 }
457 532
@@ -493,7 +568,7 @@ func (status *ClosedStatus) Off(task *Task) error { @@ -493,7 +568,7 @@ func (status *ClosedStatus) Off(task *Task) error {
493 return fmt.Errorf("已关闭的任务不允许关闭") 568 return fmt.Errorf("已关闭的任务不允许关闭")
494 } 569 }
495 570
496 -func (status *ClosedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { 571 +func (status *ClosedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
497 return fmt.Errorf("已关闭的任务不允许验收") 572 return fmt.Errorf("已关闭的任务不允许验收")
498 } 573 }
499 574
@@ -505,6 +580,7 @@ func (status *ClosedStatus) RejectReceiver(task *Task) error { @@ -505,6 +580,7 @@ func (status *ClosedStatus) RejectReceiver(task *Task) error {
505 return fmt.Errorf("已关闭的任务不允许驳回任务领取人") 580 return fmt.Errorf("已关闭的任务不允许驳回任务领取人")
506 } 581 }
507 582
  583 +// 待确认任务
508 type UnConfirmedStatus struct{} 584 type UnConfirmedStatus struct{}
509 585
510 func (status *UnConfirmedStatus) Update(task *Task, data map[string]interface{}) error { 586 func (status *UnConfirmedStatus) Update(task *Task, data map[string]interface{}) error {
@@ -537,7 +613,7 @@ func (status *UnConfirmedStatus) Off(task *Task) error { @@ -537,7 +613,7 @@ func (status *UnConfirmedStatus) Off(task *Task) error {
537 return nil 613 return nil
538 } 614 }
539 615
540 -func (status *UnConfirmedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { 616 +func (status *UnConfirmedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
541 return fmt.Errorf("待确认的任务不允许验收") 617 return fmt.Errorf("待确认的任务不允许验收")
542 } 618 }
543 619
@@ -560,6 +636,113 @@ func (status *UnConfirmedStatus) RejectReceiver(task *Task) error { @@ -560,6 +636,113 @@ func (status *UnConfirmedStatus) RejectReceiver(task *Task) error {
560 return nil 636 return nil
561 } 637 }
562 638
  639 +type ExpiredStatus struct{}
  640 +
  641 +func (status ExpiredStatus) Update(task *Task, data map[string]interface{}) error {
  642 + if taskName, ok := data["taskName"]; ok {
  643 + task.TaskName = taskName.(string)
  644 + }
  645 + if referenceResourceType, ok := data["referenceResourceType"]; ok {
  646 + task.ReferenceResource.ReferenceResourceType = referenceResourceType.(int)
  647 + }
  648 + if referenceResourceItems, ok := data["referenceResourceItems"]; ok {
  649 + task.ReferenceResource.ReferenceResourceItems = referenceResourceItems.([]*ReferenceResourceItem)
  650 + }
  651 + if projectBelong, ok := data["projectBelong"]; ok {
  652 + task.ProjectBelong = projectBelong.(int)
  653 + }
  654 + if customerValues, ok := data["customerValues"]; ok {
  655 + task.CustomerValues = customerValues.([]int)
  656 + }
  657 + if taskNature, ok := data["taskNature"]; ok {
  658 + task.TaskNature = taskNature.(int)
  659 + }
  660 + if suMoney, ok := data["suMoney"]; ok {
  661 + task.SuMoney = suMoney.(float64)
  662 + }
  663 + if minSuMoney, ok := data["minSuMoney"]; ok {
  664 + task.MinSuMoney = minSuMoney.(float64)
  665 + }
  666 + if maxSuMoney, ok := data["maxSuMoney"]; ok {
  667 + task.MaxSuMoney = maxSuMoney.(float64)
  668 + }
  669 + if task.TaskType == TASK_TYPE_BID {
  670 + if bidStartTime, ok := data["bidStartTime"]; ok {
  671 + task.BidInfo.BidStartTime = bidStartTime.(time.Time)
  672 + }
  673 + if bidEndTime, ok := data["bidEndTime"]; ok {
  674 + task.BidInfo.BidEndTime = bidEndTime.(time.Time)
  675 + }
  676 + if isRemind, ok := data["isRemind"]; ok {
  677 + task.BidInfo.IsRemind = isRemind.(bool)
  678 + }
  679 + }
  680 + if acceptanceStandard, ok := data["acceptanceStandard"]; ok {
  681 + task.AcceptanceStandard = acceptanceStandard.(string)
  682 + }
  683 + if taskDescription, ok := data["taskDescription"]; ok {
  684 + task.TaskDescription = taskDescription.(string)
  685 + }
  686 + if taskPictureUrls, ok := data["taskPictureUrls"]; ok {
  687 + task.TaskPictureUrls = taskPictureUrls.([]string)
  688 + }
  689 + if isRewardTake, ok := data["isRewardTake"]; ok {
  690 + task.IsRewardTake = isRewardTake.(bool)
  691 + }
  692 + if task.TaskType == TASK_TYPE_DESIGNATE {
  693 + if plannedCompletionTime, ok := data["plannedCompletionTime"]; ok {
  694 + task.PlannedCompletionTime = plannedCompletionTime.(time.Time)
  695 + }
  696 + if assignedPerson, ok := data["assignedPerson"]; ok {
  697 + task.AssignedPerson = assignedPerson.(*EmployeeInfo)
  698 + if task.AssignedPerson.Uid == 0 {
  699 + task.AssignedPerson = nil
  700 + }
  701 + }
  702 + }
  703 + return nil
  704 +}
  705 +
  706 +func (status ExpiredStatus) Release(task *Task) error {
  707 + currentTime := time.Now()
  708 + task.ReleaseTime = currentTime
  709 + task.TaskStatus = TASK_STATUS_UNCLAIMED
  710 + task.CurrentStatus = &UnClaimedStatus{}
  711 + return nil
  712 +}
  713 +
  714 +func (status ExpiredStatus) Rob(task *Task, receiver *EmployeeInfo) error {
  715 + return fmt.Errorf("已过期的任务不允许抢单")
  716 +}
  717 +
  718 +func (status ExpiredStatus) Bib(task *Task, bidder *EmployeeInfo) error {
  719 + return fmt.Errorf("已过期的任务不允许竞标")
  720 +}
  721 +
  722 +func (status ExpiredStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error {
  723 + return fmt.Errorf("已过期的任务不允许选择竞标任务的中标人")
  724 +}
  725 +
  726 +func (status ExpiredStatus) ApplyComplete(task *Task) error {
  727 + return fmt.Errorf("已过期的任务不允许申请完成任务")
  728 +}
  729 +
  730 +func (status ExpiredStatus) Off(task *Task) error {
  731 + return fmt.Errorf("已过期的任务不允许关闭")
  732 +}
  733 +
  734 +func (status ExpiredStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
  735 + return fmt.Errorf("已过期的任务不允许验收")
  736 +}
  737 +
  738 +func (status ExpiredStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error {
  739 + return fmt.Errorf("已过期的任务不允许确认任务领取人")
  740 +}
  741 +
  742 +func (status ExpiredStatus) RejectReceiver(task *Task) error {
  743 + return fmt.Errorf("已过期的任务不允许驳回任务领取人")
  744 +}
  745 +
563 type TaskRepository interface { 746 type TaskRepository interface {
564 Save(task *Task) (*Task, error) 747 Save(task *Task) (*Task, error)
565 Remove(task *Task) (*Task, error) 748 Remove(task *Task) (*Task, error)
@@ -602,8 +785,8 @@ func (task *Task) Off() error { @@ -602,8 +785,8 @@ func (task *Task) Off() error {
602 return task.CurrentStatus.Off(task) 785 return task.CurrentStatus.Off(task)
603 } 786 }
604 787
605 -func (task *Task) Acceptance(participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {  
606 - return task.CurrentStatus.Acceptance(task, participators, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls, actualCompletionTime) 788 +func (task *Task) Acceptance(participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
  789 + return task.CurrentStatus.Acceptance(task, participators, suMoney, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls, actualCompletionTime)
607 } 790 }
608 791
609 func (task *Task) ConfirmTask(plannedCompletionTime time.Time) error { 792 func (task *Task) ConfirmTask(plannedCompletionTime time.Time) error {
  1 +package dao
  2 +
  3 +import (
  4 + "fmt"
  5 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  6 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg/models"
  7 +)
  8 +
  9 +type CashPoolDao struct {
  10 + transactionContext *pgTransaction.TransactionContext
  11 +}
  12 +
  13 +// 兑换活动兑换清单已兑换素币、已兑换现金
  14 +func (dao *CashPoolDao) CalculateActivityExchangedSuMoney(activityId int64) (map[string]interface{}, error) {
  15 + var activityExchangedSuMoney float64
  16 + var activityExchangedCash float64
  17 + tx := dao.transactionContext.PgTx
  18 + exchangeCashPersonListModels := new(models.ExchangeCashPersonList)
  19 + if err := tx.Model(exchangeCashPersonListModels).
  20 + ColumnExpr("sum(exchange_cash_person_list.exchanged_su_money) AS activity_exchanged_su_money").
  21 + Where("exchange_cash_person_list.activity_id = ?", activityId).
  22 + Select(&activityExchangedSuMoney); err !=nil {
  23 + return nil, err
  24 + }
  25 + if err := tx.Model(exchangeCashPersonListModels).
  26 + ColumnExpr("sum(exchange_cash_person_list.exchanged_cash) AS activity_exchanged_cash").
  27 + Where("exchange_cash_person_list.activity_id = ?", activityId).
  28 + Select(&activityExchangedCash); err !=nil {
  29 + return nil, err
  30 + }
  31 + return map[string]interface{}{
  32 + "activityExchangedSuMoney": activityExchangedSuMoney,
  33 + "activityExchangedCash": activityExchangedCash,
  34 + }, nil
  35 +}
  36 +
  37 +// 返回兑换活动清单榜单
  38 +func (dao *CashPoolDao) ExchangeCashListRanking(queryOptions map[string]interface{}) (map[string]interface{}, error) {
  39 + var retPeople []struct {
  40 + Uid int64
  41 + EmployeeName string
  42 + SuMoney float64
  43 + Cash float64
  44 + Ranking int
  45 + }
  46 +
  47 + var retEmployee []struct {
  48 + Uid int64
  49 + EmployeeName string
  50 + SuMoney float64
  51 + Cash float64
  52 + Ranking int
  53 + }
  54 +
  55 + tx := dao.transactionContext.PgTx
  56 + exchangeCashPersonListModels := new(models.ExchangeCashPersonList)
  57 +
  58 + // 清单人员排名
  59 + queryPeople := tx.Model(exchangeCashPersonListModels)
  60 + queryPeople = queryPeople.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
  61 + queryPeople = queryPeople.ColumnExpr("exchange_cash_person_list.uid AS uid")
  62 + //queryPeople = queryPeople.ColumnExpr("exchange_cash_person_list.employee_name AS employee_name")
  63 + queryPeople = queryPeople.ColumnExpr("sum(exchange_cash_person_list.exchanged_cash) AS cash")
  64 + queryPeople = queryPeople.ColumnExpr("sum(exchange_cash_person_list.exchanged_su_money) AS su_money")
  65 + queryPeople = queryPeople.ColumnExpr("ROW_NUMBER() OVER (ORDER BY sum(exchange_cash_person_list.exchanged_su_money) DESC, e.create_time ASC) AS ranking")
  66 + //queryPeople = queryPeople.Where("e.status = ?", 1)
  67 + if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
  68 + queryPeople = queryPeople.Where("e.company_id = ?", companyId)
  69 + }
  70 + if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0){
  71 + queryPeople = queryPeople.Where("exchange_cash_person_list.activity_id = ?", activityId)
  72 + }
  73 + queryPeople = queryPeople.Group("exchange_cash_person_list.uid")
  74 + queryPeople = queryPeople.Group("e.create_time")
  75 + //queryPeople = queryPeople.Group("exchange_cash_person_list.employee_name")
  76 + if offset, ok := queryOptions["offset"]; ok {
  77 + offset := offset.(int)
  78 + if offset > -1 {
  79 + queryPeople = queryPeople.Offset(offset)
  80 + }
  81 + } else {
  82 + queryPeople = queryPeople.Offset(0)
  83 + }
  84 + if limit, ok := queryOptions["limit"]; ok {
  85 + limit := limit.(int)
  86 + if limit > -1 {
  87 + queryPeople = queryPeople.Limit(limit)
  88 + }
  89 + } else {
  90 + queryPeople = queryPeople.Limit(20)
  91 + }
  92 + if err := queryPeople.Order("ranking ASC").Select(&retPeople); err != nil {
  93 + return nil, err
  94 + }
  95 +
  96 + // 个人清单排名
  97 + queryPeopleAll := tx.Model(exchangeCashPersonListModels)
  98 + queryPeopleAll = queryPeopleAll.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
  99 + queryPeopleAll = queryPeopleAll.ColumnExpr("exchange_cash_person_list.uid AS uid")
  100 + //queryPeopleAll = queryPeopleAll.ColumnExpr("exchange_cash_person_list.employee_name AS employee_name")
  101 + queryPeopleAll = queryPeopleAll.ColumnExpr("sum(exchange_cash_person_list.exchanged_cash) AS cash")
  102 + queryPeopleAll = queryPeopleAll.ColumnExpr("sum(exchange_cash_person_list.exchanged_su_money) AS su_money")
  103 + queryPeopleAll = queryPeopleAll.ColumnExpr("ROW_NUMBER() OVER (ORDER BY sum(exchange_cash_person_list.exchanged_su_money) DESC, e.create_time ASC) AS ranking")
  104 + if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
  105 + queryPeopleAll = queryPeopleAll.Where("e.company_id = ?", companyId)
  106 + }
  107 + if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0){
  108 + queryPeopleAll = queryPeopleAll.Where("exchange_cash_person_list.activity_id = ?", activityId)
  109 + }
  110 + queryPeopleAll = queryPeopleAll.Group("exchange_cash_person_list.uid")
  111 + queryPeopleAll = queryPeopleAll.Group("e.create_time")
  112 + //queryPeopleAll = queryPeopleAll.Group("exchange_cash_person_list.employee_name")
  113 + queryPeopleAllWith := queryPeopleAll.Order("su_money DESC")
  114 + queryEmployee := tx.Model()
  115 + queryEmployee = queryEmployee.With("t", queryPeopleAllWith)
  116 + queryEmployee = queryEmployee.Table("t")
  117 + queryEmployee = queryEmployee.ColumnExpr("t.uid AS uid")
  118 + //queryEmployee = queryEmployee.ColumnExpr("t.employee_name AS employee_name")
  119 + queryEmployee = queryEmployee.ColumnExpr("t.cash AS cash")
  120 + queryEmployee = queryEmployee.ColumnExpr("t.su_money AS su_money")
  121 + queryEmployee = queryEmployee.ColumnExpr("t.ranking AS ranking")
  122 + if uid, ok := queryOptions["uid"]; ok {
  123 + queryEmployee = queryEmployee.Where("t.uid::bigint = ?", uid)
  124 + }
  125 +
  126 + if err := queryEmployee.Select(&retEmployee); err != nil {
  127 + return nil, err
  128 + }
  129 + var currentEmployee interface{}
  130 + if len(retEmployee) == 0 {
  131 + currentEmployee = nil
  132 + } else {
  133 + currentEmployee = retEmployee[0]
  134 + }
  135 +
  136 + // 清单已兑换素币
  137 + var activityExchangedSuMoney float64
  138 + queryListSuMoney := tx.Model(exchangeCashPersonListModels)
  139 + queryListSuMoney = queryListSuMoney.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
  140 + queryListSuMoney = queryListSuMoney.ColumnExpr("sum(exchange_cash_person_list.exchanged_su_money) AS activity_exchanged_su_money")
  141 + //queryListSuMoney = queryListSuMoney.Where("e.status = ?", 1)
  142 + if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
  143 + queryListSuMoney = queryListSuMoney.Where("e.company_id = ?", companyId)
  144 + }
  145 + if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0) {
  146 + queryListSuMoney = queryListSuMoney.Where("exchange_cash_person_list.activity_id = ?", activityId)
  147 + }
  148 + if err := queryListSuMoney.Select(&activityExchangedSuMoney); err != nil {
  149 + return nil, err
  150 + }
  151 +
  152 + // 清单已兑换现金
  153 + var activityExchangedCash float64
  154 + queryListCash := tx.Model(exchangeCashPersonListModels)
  155 + queryListCash = queryListCash.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
  156 + queryListCash = queryListCash.ColumnExpr("sum(exchange_cash_person_list.exchanged_cash) AS activity_exchanged_cash")
  157 + //queryListCash = queryListCash.Where("e.status = ?", 1)
  158 + if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
  159 + queryListCash = queryListCash.Where("e.company_id = ?", companyId)
  160 + }
  161 + if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0) {
  162 + queryListCash = queryListCash.Where("exchange_cash_person_list.activity_id = ?", activityId)
  163 + }
  164 + if err := queryListCash.Select(&activityExchangedCash); err != nil {
  165 + return nil, err
  166 + }
  167 +
  168 + // 清单计数
  169 + queryCount := tx.Model(exchangeCashPersonListModels)
  170 + count, err := queryCount.Count()
  171 + if err != nil {
  172 + return nil, err
  173 + }
  174 +
  175 + return map[string]interface{} {
  176 + "people": retPeople, // 员工排行榜
  177 + "count": count, // 计数
  178 + "currentEmployee": currentEmployee, // 当前员工排名
  179 + "exchangedSuMoney": activityExchangedSuMoney, // 清单已兑换素币
  180 + "exchangedCash": activityExchangedCash, // 清单已兑换现金
  181 + }, nil
  182 +}
  183 +
  184 +func NewCashPoolDao(transactionContext *pgTransaction.TransactionContext) (*CashPoolDao, error) {
  185 + if transactionContext == nil {
  186 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  187 + } else {
  188 + return &CashPoolDao{
  189 + transactionContext: transactionContext,
  190 + }, nil
  191 + }
  192 +}