合并分支 'test' 到 'master'
Test 查看合并请求 !27
正在显示
89 个修改的文件
包含
4436 行增加
和
172 行删除
1 | FROM 192.168.0.243:5000/mmm/allied-creation-gateway:libfontconfig | 1 | FROM 192.168.0.243:5000/mmm/allied-creation-gateway:libfontconfig |
2 | -ENV APP_DIR $GOPATH/src/project-20211222 | 2 | +ENV APP_DIR $GOPATH/src/project-20220324 |
3 | RUN mkdir -p $APP_DIR | 3 | RUN mkdir -p $APP_DIR |
4 | WORKDIR $APP_DIR/ | 4 | WORKDIR $APP_DIR/ |
5 | COPY ./pkg pkg | 5 | COPY ./pkg pkg |
@@ -111,10 +111,14 @@ spec: | @@ -111,10 +111,14 @@ spec: | ||
111 | value: "http://allied-creation-user-dev.fjmaimaimai.com" | 111 | value: "http://allied-creation-user-dev.fjmaimaimai.com" |
112 | - name: ALLIED_CREATION_COOPERATION_HOST | 112 | - name: ALLIED_CREATION_COOPERATION_HOST |
113 | value: "http://allied-creation-cooperation-dev.fjmaimaimai.com" | 113 | value: "http://allied-creation-cooperation-dev.fjmaimaimai.com" |
114 | + - name: ALLIED_CREATION_MANUFACTURE_HOST | ||
115 | + value: "http://106.75.231.90:9999" | ||
114 | - name: ALLIED_CREATION_BASIC_HOST | 116 | - name: ALLIED_CREATION_BASIC_HOST |
115 | value: "http://allied-creation-basic-dev.fjmaimaimai.com" | 117 | value: "http://allied-creation-basic-dev.fjmaimaimai.com" |
116 | - name: SMS_SERVE_HOST | 118 | - name: SMS_SERVE_HOST |
117 | value: "https://sms.fjmaimaimai.com:9897" | 119 | value: "https://sms.fjmaimaimai.com:9897" |
120 | + - name: COST_STRUCTURED | ||
121 | + value: "http://cost-structured-dev.fjmaimaimai.com" | ||
118 | - name: SUPLUS_SALE_APP | 122 | - name: SUPLUS_SALE_APP |
119 | value: "http://suplus-sale-app-gateway-test.fjmaimaimai.com" | 123 | value: "http://suplus-sale-app-gateway-test.fjmaimaimai.com" |
120 | # - name: REDIS_HOST | 124 | # - name: REDIS_HOST |
@@ -115,10 +115,14 @@ spec: | @@ -115,10 +115,14 @@ spec: | ||
115 | value: "https://allied-creation-user-prd.fjmaimaimai.com" | 115 | value: "https://allied-creation-user-prd.fjmaimaimai.com" |
116 | - name: ALLIED_CREATION_COOPERATION_HOST | 116 | - name: ALLIED_CREATION_COOPERATION_HOST |
117 | value: "https://allied-creation-cooperation-prd.fjmaimaimai.com" | 117 | value: "https://allied-creation-cooperation-prd.fjmaimaimai.com" |
118 | + - name: ALLIED_CREATION_MANUFACTURE_HOST | ||
119 | + value: "https://allied-creation-manufacture-prd.fjmaimaimai.com" | ||
118 | - name: ALLIED_CREATION_BASIC_HOST | 120 | - name: ALLIED_CREATION_BASIC_HOST |
119 | value: "https://allied-creation-basic-prd.fjmaimaimai.com" | 121 | value: "https://allied-creation-basic-prd.fjmaimaimai.com" |
120 | - name: SMS_SERVE_HOST | 122 | - name: SMS_SERVE_HOST |
121 | value: "https://sms.fjmaimaimai.com:9897" | 123 | value: "https://sms.fjmaimaimai.com:9897" |
124 | + - name: COST_STRUCTURED | ||
125 | + value: "http://cost-structured-prd.fjmaimaimai.com" | ||
122 | # - name: REDIS_HOST | 126 | # - name: REDIS_HOST |
123 | # valueFrom: | 127 | # valueFrom: |
124 | # configMapKeyRef: | 128 | # configMapKeyRef: |
@@ -119,10 +119,18 @@ spec: | @@ -119,10 +119,18 @@ spec: | ||
119 | value: "https://allied-creation-cooperation-test.fjmaimaimai.com" | 119 | value: "https://allied-creation-cooperation-test.fjmaimaimai.com" |
120 | - name: ALLIED_CREATION_BASIC_HOST | 120 | - name: ALLIED_CREATION_BASIC_HOST |
121 | value: "https://allied-creation-basic-test.fjmaimaimai.com" | 121 | value: "https://allied-creation-basic-test.fjmaimaimai.com" |
122 | + - name: ALLIED_CREATION_MANUFACTURE_HOST | ||
123 | + value: "http://allied-creation-manufacture-test.fjmaimaimai.com" | ||
122 | - name: SMS_SERVE_HOST | 124 | - name: SMS_SERVE_HOST |
123 | value: "https://sms.fjmaimaimai.com:9897" | 125 | value: "https://sms.fjmaimaimai.com:9897" |
126 | + - name: COST_STRUCTURED | ||
127 | + value: "http://cost-structured-test.fjmaimaimai.com" | ||
124 | - name: SUPLUS_SALE_APP | 128 | - name: SUPLUS_SALE_APP |
125 | value: "http://suplus-sale-app-gateway-test.fjmaimaimai.com" | 129 | value: "http://suplus-sale-app-gateway-test.fjmaimaimai.com" |
130 | + - name: MANUFACTURE_WEIGH_DEFAULT_COMPANYID | ||
131 | + value: "23" | ||
132 | + - name: MANUFACTURE_WEIGH_DEFAULT_ORGID | ||
133 | + value: "487" | ||
126 | # - name: REDIS_HOST | 134 | # - name: REDIS_HOST |
127 | # valueFrom: | 135 | # valueFrom: |
128 | # configMapKeyRef: | 136 | # configMapKeyRef: |
@@ -4,16 +4,21 @@ go 1.16 | @@ -4,16 +4,21 @@ go 1.16 | ||
4 | 4 | ||
5 | require ( | 5 | require ( |
6 | github.com/GeeTeam/gt3-golang-sdk v0.0.0-20200116043922-446ca8a507d2 | 6 | github.com/GeeTeam/gt3-golang-sdk v0.0.0-20200116043922-446ca8a507d2 |
7 | + github.com/aliyun/aliyun-oss-go-sdk v2.2.1+incompatible | ||
8 | + github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect | ||
7 | github.com/beego/beego/v2 v2.0.1 | 9 | github.com/beego/beego/v2 v2.0.1 |
8 | github.com/dgrijalva/jwt-go v3.2.0+incompatible | 10 | github.com/dgrijalva/jwt-go v3.2.0+incompatible |
9 | github.com/disintegration/imaging v1.6.2 | 11 | github.com/disintegration/imaging v1.6.2 |
12 | + github.com/emirpasic/gods v1.12.0 | ||
10 | github.com/forgoer/openssl v0.0.0-20210828150411-6c5378b5b719 | 13 | github.com/forgoer/openssl v0.0.0-20210828150411-6c5378b5b719 |
11 | github.com/go-pg/pg/v10 v10.10.1 | 14 | github.com/go-pg/pg/v10 v10.10.1 |
12 | github.com/go-redis/redis v6.15.7+incompatible | 15 | github.com/go-redis/redis v6.15.7+incompatible |
13 | github.com/google/uuid v1.1.1 | 16 | github.com/google/uuid v1.1.1 |
14 | github.com/linmadan/egglib-go v0.0.0-20210827085852-177fa745932d | 17 | github.com/linmadan/egglib-go v0.0.0-20210827085852-177fa745932d |
15 | github.com/pdfcpu/pdfcpu v0.3.13 | 18 | github.com/pdfcpu/pdfcpu v0.3.13 |
19 | + github.com/satori/go.uuid v1.2.0 // indirect | ||
16 | github.com/stretchr/testify v1.7.0 | 20 | github.com/stretchr/testify v1.7.0 |
17 | github.com/tal-tech/go-queue v1.0.5 | 21 | github.com/tal-tech/go-queue v1.0.5 |
22 | + github.com/xuri/excelize/v2 v2.4.1 | ||
18 | golang.org/x/text v0.3.6 | 23 | golang.org/x/text v0.3.6 |
19 | ) | 24 | ) |
@@ -16,7 +16,11 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF | @@ -16,7 +16,11 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF | ||
16 | github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | 16 | github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= |
17 | github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= | 17 | github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= |
18 | github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= | 18 | github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= |
19 | +github.com/aliyun/aliyun-oss-go-sdk v2.2.1+incompatible h1:uuJIwCFhbZy+zdvLy5zrcIToPEQP0s5CFOZ0Zj03O/w= | ||
20 | +github.com/aliyun/aliyun-oss-go-sdk v2.2.1+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= | ||
19 | github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= | 21 | github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= |
22 | +github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA= | ||
23 | +github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= | ||
20 | github.com/beanstalkd/go-beanstalk v0.1.0/go.mod h1:/G8YTyChOtpOArwLTQPY1CHB+i212+av35bkPXXj56Y= | 24 | github.com/beanstalkd/go-beanstalk v0.1.0/go.mod h1:/G8YTyChOtpOArwLTQPY1CHB+i212+av35bkPXXj56Y= |
21 | github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE= | 25 | github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE= |
22 | github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI= | 26 | github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI= |
@@ -73,6 +77,8 @@ github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox | @@ -73,6 +77,8 @@ github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox | ||
73 | github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= | 77 | github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= |
74 | github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= | 78 | github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= |
75 | github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= | 79 | github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= |
80 | +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= | ||
81 | +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= | ||
76 | github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | 82 | github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= |
77 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | 83 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= |
78 | github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | 84 | github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= |
@@ -299,6 +305,8 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So | @@ -299,6 +305,8 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So | ||
299 | github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= | 305 | github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= |
300 | github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= | 306 | github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= |
301 | github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | 307 | github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= |
308 | +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= | ||
309 | +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= | ||
302 | github.com/segmentio/kafka-go v0.4.2 h1:QXZ6q9Bu1JkAJQ/CQBb2Av8pFRG8LQ0kWCrLXgQyL8c= | 310 | github.com/segmentio/kafka-go v0.4.2 h1:QXZ6q9Bu1JkAJQ/CQBb2Av8pFRG8LQ0kWCrLXgQyL8c= |
303 | github.com/segmentio/kafka-go v0.4.2/go.mod h1:Inh7PqOsxmfgasV8InZYKVXWsdjcCq2d9tFV75GLbuM= | 311 | github.com/segmentio/kafka-go v0.4.2/go.mod h1:Inh7PqOsxmfgasV8InZYKVXWsdjcCq2d9tFV75GLbuM= |
304 | github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo= | 312 | github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo= |
@@ -481,6 +489,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | @@ -481,6 +489,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||
481 | golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= | 489 | golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= |
482 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | 490 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= |
483 | golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | 491 | golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= |
492 | +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= | ||
484 | golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | 493 | golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= |
485 | golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | 494 | golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= |
486 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | 495 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= |
@@ -2,6 +2,7 @@ package command | @@ -2,6 +2,7 @@ package command | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | "reflect" | 6 | "reflect" |
6 | "strings" | 7 | "strings" |
7 | 8 | ||
@@ -23,6 +24,15 @@ type CompanySignUpCommand struct { | @@ -23,6 +24,15 @@ type CompanySignUpCommand struct { | ||
23 | Password string `cname:"密码" json:"password" valid:"Required"` | 24 | Password string `cname:"密码" json:"password" valid:"Required"` |
24 | // 短信验证码 | 25 | // 短信验证码 |
25 | SmsCode string `cname:"短信验证码" json:"smsCode" valid:"Required"` | 26 | SmsCode string `cname:"短信验证码" json:"smsCode" valid:"Required"` |
27 | + | ||
28 | + // 法人 | ||
29 | + LegalPerson string `cname:"法人" json:"legalPerson" valid:"Required"` | ||
30 | + // 社会信用代码 | ||
31 | + SocialCreditCode string `cname:"社会信用代码" json:"socialCreditCode" valid:"Required"` | ||
32 | + // 营业执照所在地 | ||
33 | + BusinessLicenseAddress domain.BusinessLicenseAddress `cname:"营业执照所在地" json:"businessLicenseAddress" valid:"Required"` | ||
34 | + // 营业执照-附件 | ||
35 | + BusinessLicenseAttachments []domain.Attachment `cname:"营业执照-附件" json:"businessLicenseAttachments" valid:"Required"` | ||
26 | } | 36 | } |
27 | 37 | ||
28 | func (companySignUpCommand *CompanySignUpCommand) Valid(validation *validation.Validation) { | 38 | func (companySignUpCommand *CompanySignUpCommand) Valid(validation *validation.Validation) { |
@@ -7,12 +7,13 @@ import ( | @@ -7,12 +7,13 @@ import ( | ||
7 | ) | 7 | ) |
8 | 8 | ||
9 | type LoginCommand struct { | 9 | type LoginCommand struct { |
10 | - Phone string `json:"phone" valid:"Required"` | ||
11 | - GrantType string `json:"grantType" valid:"Required"` //登录方式(signInPassword 密码登录、signInCaptcha 验证码登录) | ||
12 | - Password string `json:"password"` | ||
13 | - Captcha string `json:"captcha"` | ||
14 | - SessionMode int `json:"sessionMode"` | ||
15 | - DeviceType string `json:"-"` | 10 | + Phone string `json:"phone" valid:"Required"` |
11 | + GrantType string `json:"grantType" valid:"Required"` //登录方式(signInPassword 密码登录、signInCaptcha 验证码登录) | ||
12 | + Password string `json:"password"` | ||
13 | + Captcha string `json:"captcha"` | ||
14 | + SessionMode int `json:"sessionMode"` | ||
15 | + DeviceType string `json:"-"` | ||
16 | + LoginPlatform string `json:"-"` //登录平台 | ||
16 | } | 17 | } |
17 | 18 | ||
18 | func (orgAddCommand *LoginCommand) Valid(validation *validation.Validation) { | 19 | func (orgAddCommand *LoginCommand) Valid(validation *validation.Validation) { |
@@ -40,6 +40,9 @@ func (svr AuthService) AuthLogin(loginCommand *command.LoginCommand) (interface{ | @@ -40,6 +40,9 @@ func (svr AuthService) AuthLogin(loginCommand *command.LoginCommand) (interface{ | ||
40 | if loginCommand.DeviceType == domain.DeviceTypeWeb { | 40 | if loginCommand.DeviceType == domain.DeviceTypeWeb { |
41 | loginPlatform = domain.LoginPlatformWeb | 41 | loginPlatform = domain.LoginPlatformWeb |
42 | } | 42 | } |
43 | + if len(loginCommand.LoginPlatform) != 0 { | ||
44 | + loginPlatform = loginCommand.LoginPlatform | ||
45 | + } | ||
43 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | 46 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) |
44 | _, err = creationUserGateway.AuthRefreshIM(allied_creation_user.ReqAuthRefreshIM{ | 47 | _, err = creationUserGateway.AuthRefreshIM(allied_creation_user.ReqAuthRefreshIM{ |
45 | Phone: loginCommand.Phone, | 48 | Phone: loginCommand.Phone, |
@@ -406,6 +409,11 @@ func (svr AuthService) CompanySignUp(companySignUpCommand *command.CompanySignUp | @@ -406,6 +409,11 @@ func (svr AuthService) CompanySignUp(companySignUpCommand *command.CompanySignUp | ||
406 | Contacts: companySignUpCommand.Contacts, | 409 | Contacts: companySignUpCommand.Contacts, |
407 | IndustryCategory: companySignUpCommand.IndustryCategory, | 410 | IndustryCategory: companySignUpCommand.IndustryCategory, |
408 | Scale: companySignUpCommand.Scale, | 411 | Scale: companySignUpCommand.Scale, |
412 | + | ||
413 | + LegalPerson: companySignUpCommand.LegalPerson, | ||
414 | + SocialCreditCode: companySignUpCommand.SocialCreditCode, | ||
415 | + BusinessLicenseAttachments: companySignUpCommand.BusinessLicenseAttachments, | ||
416 | + BusinessLicenseAddress: companySignUpCommand.BusinessLicenseAddress, | ||
409 | }) | 417 | }) |
410 | if err != nil { | 418 | if err != nil { |
411 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 419 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
@@ -548,7 +556,7 @@ func (svr AuthService) getUserInfo(operator domain.Operator) (interface{}, error | @@ -548,7 +556,7 @@ func (svr AuthService) getUserInfo(operator domain.Operator) (interface{}, error | ||
548 | 556 | ||
549 | func (svr AuthService) getToken(loginToken domain.LoginToken) (map[string]interface{}, error) { | 557 | func (svr AuthService) getToken(loginToken domain.LoginToken) (map[string]interface{}, error) { |
550 | // 1.匹配账号对应的用户 | 558 | // 1.匹配账号对应的用户 |
551 | - currentUser, err := svr.matchUser(&loginToken) | 559 | + currentUser, err := svr.matchUserV2(&loginToken) |
552 | if err != nil { | 560 | if err != nil { |
553 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 561 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
554 | } | 562 | } |
@@ -629,7 +637,7 @@ func (svr AuthService) matchUser(loginToken *domain.LoginToken) (*allied_creatio | @@ -629,7 +637,7 @@ func (svr AuthService) matchUser(loginToken *domain.LoginToken) (*allied_creatio | ||
629 | loopUser1: | 637 | loopUser1: |
630 | for _, v := range userSearchResult.Users { | 638 | for _, v := range userSearchResult.Users { |
631 | for _, vv := range v.UserOrg { | 639 | for _, vv := range v.UserOrg { |
632 | - if vv.OrgID == int(loginToken.OrgId) { | 640 | + if vv.OrgID == int(loginToken.OrgId) && v.Company.Status == domain.CompanyAuthenticated { |
633 | currentOrgIsOK = true | 641 | currentOrgIsOK = true |
634 | currentUser = v | 642 | currentUser = v |
635 | break loopUser1 | 643 | break loopUser1 |
@@ -688,6 +696,99 @@ loopUser1: | @@ -688,6 +696,99 @@ loopUser1: | ||
688 | return ¤tUser, nil | 696 | return ¤tUser, nil |
689 | } | 697 | } |
690 | 698 | ||
699 | +func (svr AuthService) matchUserV2(loginToken *domain.LoginToken) (*allied_creation_user.UserDetail, error) { | ||
700 | + var users []allied_creation_user.UserDetail | ||
701 | + var currentUser *allied_creation_user.UserDetail | ||
702 | + var defaultUser *allied_creation_user.UserDetail | ||
703 | + var ok bool | ||
704 | + var mapOrgUser = make(map[int]*allied_creation_user.UserDetail) | ||
705 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
706 | + switch loginToken.Platform { | ||
707 | + case domain.LoginPlatformWeb: | ||
708 | + userSearchResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
709 | + Phone: loginToken.Account, | ||
710 | + UserType: domain.UserTypeEmployee, | ||
711 | + EnableStatus: domain.UserStatusEnable, | ||
712 | + }) | ||
713 | + if err != nil { | ||
714 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "用户信息获取失败,"+err.Error()) | ||
715 | + } | ||
716 | + users = userSearchResult.Users | ||
717 | + case domain.LoginPlatformApp: | ||
718 | + userSearchResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
719 | + Phone: loginToken.Account, | ||
720 | + UserType: domain.UserTypeEmployee | domain.UserTypeCooperation | domain.UserTypeVisitor, | ||
721 | + EnableStatus: domain.UserStatusEnable, | ||
722 | + }) | ||
723 | + if err != nil { | ||
724 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "用户信息获取失败,"+err.Error()) | ||
725 | + } | ||
726 | + users = userSearchResult.Users | ||
727 | + case domain.LoginPlatformOperatorWeb: | ||
728 | + userSearchResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
729 | + Phone: loginToken.Account, | ||
730 | + UserType: domain.UserTypeOperationAdmin, | ||
731 | + EnableStatus: domain.UserStatusEnable, | ||
732 | + }) | ||
733 | + if err != nil { | ||
734 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "用户信息获取失败,"+err.Error()) | ||
735 | + } | ||
736 | + users = userSearchResult.Users | ||
737 | + } | ||
738 | + if len(users) == 0 { | ||
739 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "账号不存在") | ||
740 | + } | ||
741 | + | ||
742 | + for index, user := range users { | ||
743 | + if user.Company != nil && user.Company.Status != domain.CompanyAuthenticated { | ||
744 | + continue | ||
745 | + } | ||
746 | + for _, userOrg := range user.UserOrg { | ||
747 | + mapOrgUser[userOrg.OrgID] = &users[index] | ||
748 | + if defaultUser == nil { | ||
749 | + defaultUser = &users[index] | ||
750 | + } | ||
751 | + } | ||
752 | + } | ||
753 | + if defaultUser == nil { | ||
754 | + defaultUser = &users[0] | ||
755 | + } | ||
756 | + //切换组织 | ||
757 | + if loginToken.OrgId != 0 { | ||
758 | + if currentUser, ok = mapOrgUser[int(loginToken.OrgId)]; !ok { //&& loginToken.Platform == domain.LoginPlatformWeb | ||
759 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "登录的公司组织不可用") | ||
760 | + } | ||
761 | + } | ||
762 | + // 使用默认账号 | ||
763 | + if currentUser == nil { | ||
764 | + currentUser = defaultUser | ||
765 | + } | ||
766 | + | ||
767 | + SetLoginToken(loginToken, currentUser) | ||
768 | + | ||
769 | + return currentUser, nil | ||
770 | +} | ||
771 | + | ||
772 | +func SetLoginToken(loginToken *domain.LoginToken, currentUser *allied_creation_user.UserDetail) { | ||
773 | + // 当前登录的公司用户信息 | ||
774 | + loginToken.UserId = int64(currentUser.UserId) | ||
775 | + loginToken.UserBaseId = int64(currentUser.UserBaseId) | ||
776 | + if currentUser.Company != nil { | ||
777 | + loginToken.CompanyId = int64(currentUser.Company.CompanyId) | ||
778 | + } | ||
779 | + | ||
780 | + // 关联的组织 | ||
781 | + var orgIds []int64 | ||
782 | + for i := range currentUser.UserOrg { | ||
783 | + orgIds = append(orgIds, int64(currentUser.UserOrg[i].OrgID)) | ||
784 | + // 默认组织 | ||
785 | + if loginToken.OrgId == 0 { | ||
786 | + loginToken.OrgId = int64(currentUser.UserOrg[i].OrgID) | ||
787 | + } | ||
788 | + } | ||
789 | + loginToken.OrgIds = orgIds | ||
790 | +} | ||
791 | + | ||
691 | //GetCompanyOrgsByUser 获取登录用户的公司组织列表 | 792 | //GetCompanyOrgsByUser 获取登录用户的公司组织列表 |
692 | func (svr AuthService) GetCompanyOrgsByUser(queryParam *query.GetCompanyOrgsByUserQuery) (interface{}, error) { | 793 | func (svr AuthService) GetCompanyOrgsByUser(queryParam *query.GetCompanyOrgsByUserQuery) (interface{}, error) { |
693 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(queryParam.Operator) | 794 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(queryParam.Operator) |
@@ -713,6 +814,9 @@ func (svr AuthService) GetCompanyOrgsByUser(queryParam *query.GetCompanyOrgsByUs | @@ -713,6 +814,9 @@ func (svr AuthService) GetCompanyOrgsByUser(queryParam *query.GetCompanyOrgsByUs | ||
713 | CompanyId: user.Company.CompanyId, | 814 | CompanyId: user.Company.CompanyId, |
714 | CompanyName: user.Company.CompanyName, | 815 | CompanyName: user.Company.CompanyName, |
715 | }) | 816 | }) |
817 | + if user.Company.Status != domain.CompanyAuthenticated { | ||
818 | + continue | ||
819 | + } | ||
716 | } | 820 | } |
717 | for j := range user.UserOrg { | 821 | for j := range user.UserOrg { |
718 | org := user.UserOrg[j] | 822 | org := user.UserOrg[j] |
@@ -792,3 +896,53 @@ func (svr *AuthService) CaptchaInit(request *query.CaptchaInitRequest) (interfac | @@ -792,3 +896,53 @@ func (svr *AuthService) CaptchaInit(request *query.CaptchaInitRequest) (interfac | ||
792 | rsp = rspData | 896 | rsp = rspData |
793 | return rsp, err | 897 | return rsp, err |
794 | } | 898 | } |
899 | + | ||
900 | +/*******************运营登录**********************/ | ||
901 | +//AuthLogin 用户登录 | ||
902 | +func (svr AuthService) AuthAdminLogin(loginCommand *command.LoginPwdCommand) (interface{}, error) { | ||
903 | + login := &command.LoginCommand{ | ||
904 | + GrantType: "signInPassword", | ||
905 | + Phone: loginCommand.Username, | ||
906 | + Password: loginCommand.Password, | ||
907 | + SessionMode: loginCommand.SessionMode, | ||
908 | + DeviceType: loginCommand.DeviceType, | ||
909 | + LoginPlatform: domain.LoginPlatformOperatorWeb, | ||
910 | + } | ||
911 | + return svr.AuthLogin(login) | ||
912 | +} | ||
913 | + | ||
914 | +//AuthLogin 用户登录 | ||
915 | +//func (svr AuthService) AuthAdminLoginBak(loginCommand *command.LoginPwdCommand) (interface{}, error) { | ||
916 | +// if err := loginCommand.ValidateCommand(); err != nil { | ||
917 | +// return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
918 | +// } | ||
919 | +// if len(loginCommand.Username) == 0 { | ||
920 | +// return nil, application.ThrowError(application.BUSINESS_ERROR, "账号不存在") | ||
921 | +// } | ||
922 | +// creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
923 | +// users, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
924 | +// UserType: domain.UserTypeOperationAdmin, | ||
925 | +// Phone: loginCommand.Username, | ||
926 | +// }) | ||
927 | +// if err != nil { | ||
928 | +// return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
929 | +// } | ||
930 | +// if len(users.Users) == 0 { | ||
931 | +// return nil, application.ThrowError(application.BUSINESS_ERROR, "账号不存在") | ||
932 | +// } | ||
933 | +// login := &command.LoginCommand{ | ||
934 | +// GrantType: "signInPassword", | ||
935 | +// Phone: loginCommand.Username, | ||
936 | +// Password: loginCommand.Password, | ||
937 | +// SessionMode: loginCommand.SessionMode, | ||
938 | +// DeviceType: loginCommand.DeviceType, | ||
939 | +// } | ||
940 | +// if len(loginCommand.CaptchaChallenge) > 0 { | ||
941 | +// geetest := geetest.NewGeetestLib(captchaID, privateKey, 2*time.Second) | ||
942 | +// validateResult := geetest.SuccessValidate(loginCommand.CaptchaChallenge, loginCommand.CaptchaValidate, loginCommand.CaptchaSeccode, "", "") | ||
943 | +// if !validateResult { | ||
944 | +// log.Logger.Error("validate captcha fail") | ||
945 | +// } | ||
946 | +// } | ||
947 | +// return svr.AuthLogin(login) | ||
948 | +//} |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "reflect" | ||
6 | + "strings" | ||
7 | + | ||
8 | + "github.com/beego/beego/v2/core/validation" | ||
9 | +) | ||
10 | + | ||
11 | +type AuditCompanyCommand struct { | ||
12 | + // 企业id | ||
13 | + CompanyId int64 `cname:"企业id" json:"companyId" valid:"Required"` | ||
14 | + // 手机号 | ||
15 | + Phone string `cname:"手机号" json:"phone" valid:"Required"` | ||
16 | + // 审核状态 | ||
17 | + Status int `cname:"审核状态" json:"status" valid:"Required"` | ||
18 | + // 备注 | ||
19 | + Remark string `cname:"备注" json:"remark" valid:"Required"` | ||
20 | +} | ||
21 | + | ||
22 | +func (updateCompanyCommand *AuditCompanyCommand) Valid(validation *validation.Validation) { | ||
23 | + if !(updateCompanyCommand.Status == 1 || updateCompanyCommand.Status == 2) { | ||
24 | + validation.Error("状态有误") | ||
25 | + return | ||
26 | + } | ||
27 | + if updateCompanyCommand.Status == 1 { | ||
28 | + updateCompanyCommand.Status = 2 | ||
29 | + return | ||
30 | + } | ||
31 | + if updateCompanyCommand.Status == 2 { | ||
32 | + updateCompanyCommand.Status = 3 | ||
33 | + return | ||
34 | + } | ||
35 | +} | ||
36 | + | ||
37 | +func (updateCompanyCommand *AuditCompanyCommand) ValidateCommand() error { | ||
38 | + valid := validation.Validation{} | ||
39 | + b, err := valid.Valid(updateCompanyCommand) | ||
40 | + if err != nil { | ||
41 | + return err | ||
42 | + } | ||
43 | + if !b { | ||
44 | + elem := reflect.TypeOf(updateCompanyCommand).Elem() | ||
45 | + for _, validErr := range valid.Errors { | ||
46 | + field, isExist := elem.FieldByName(validErr.Field) | ||
47 | + if isExist { | ||
48 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
49 | + } else { | ||
50 | + return fmt.Errorf(validErr.Message) | ||
51 | + } | ||
52 | + } | ||
53 | + } | ||
54 | + return nil | ||
55 | +} |
1 | +package command | ||
2 | + | ||
3 | +// type CreateCompanyCommand struct { | ||
4 | +// // 企业名称 | ||
5 | +// CompanyName string `cname:"企业名称" json:"companyName" valid:"Required"` | ||
6 | +// // 规模 | ||
7 | +// Scale string `cname:"规模" json:"scale" valid:"Required"` | ||
8 | +// // 公司Logo地址 | ||
9 | +// Logo string `cname:"公司Logo地址" json:"logo" valid:"Required"` | ||
10 | +// // 公司地址 | ||
11 | +// Address string `cname:"公司地址" json:"address" valid:"Required"` | ||
12 | +// // 所属行业 | ||
13 | +// IndustryCategory string `cname:"所属行业" json:"industryCategory" valid:"Required"` | ||
14 | +// // 联系人 | ||
15 | +// Contacts string `cname:"联系人" json:"contacts" valid:"Required"` | ||
16 | +// // 注册时间 | ||
17 | +// RegisteredTime time.Time `cname:"注册时间" json:"registeredTime,omitempty"` | ||
18 | +// // 注册状态 1:已注册 2:待认证 3:已认证 | ||
19 | +// Status int `cname:"注册状态 1:已注册 2:待认证 3:已认证" json:"status,omitempty"` | ||
20 | +// } | ||
21 | + | ||
22 | +// func (createCompanyCommand *CreateCompanyCommand) Valid(validation *validation.Validation) { | ||
23 | + | ||
24 | +// } | ||
25 | + | ||
26 | +// func (createCompanyCommand *CreateCompanyCommand) ValidateCommand() error { | ||
27 | +// valid := validation.Validation{} | ||
28 | +// b, err := valid.Valid(createCompanyCommand) | ||
29 | +// if err != nil { | ||
30 | +// return err | ||
31 | +// } | ||
32 | +// if !b { | ||
33 | +// elem := reflect.TypeOf(createCompanyCommand).Elem() | ||
34 | +// for _, validErr := range valid.Errors { | ||
35 | +// field, isExist := elem.FieldByName(validErr.Field) | ||
36 | +// if isExist { | ||
37 | +// return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
38 | +// } else { | ||
39 | +// return fmt.Errorf(validErr.Message) | ||
40 | +// } | ||
41 | +// } | ||
42 | +// } | ||
43 | +// return nil | ||
44 | +// } |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "reflect" | ||
6 | + "strings" | ||
7 | + | ||
8 | + "github.com/beego/beego/v2/core/validation" | ||
9 | +) | ||
10 | + | ||
11 | +type EnableCompanyCommand struct { | ||
12 | + // 企业id | ||
13 | + CompanyId int64 `cname:"企业id" json:"companyId" valid:"Required"` | ||
14 | + // 审核状态 | ||
15 | + Status int `cname:"审核状态" json:"status" valid:"Required"` | ||
16 | +} | ||
17 | + | ||
18 | +func (updateCompanyCommand *EnableCompanyCommand) Valid(validation *validation.Validation) { | ||
19 | + //validation.SetError("CustomValid", "未实现的自定义认证") | ||
20 | + if !(updateCompanyCommand.Status == 1 || updateCompanyCommand.Status == 2) { | ||
21 | + validation.Error("状态有误") | ||
22 | + return | ||
23 | + } | ||
24 | + if updateCompanyCommand.Status == 1 { | ||
25 | + updateCompanyCommand.Status = 2 | ||
26 | + return | ||
27 | + } | ||
28 | + if updateCompanyCommand.Status == 2 { | ||
29 | + updateCompanyCommand.Status = 4 | ||
30 | + return | ||
31 | + } | ||
32 | +} | ||
33 | + | ||
34 | +func (updateCompanyCommand *EnableCompanyCommand) ValidateCommand() error { | ||
35 | + valid := validation.Validation{} | ||
36 | + b, err := valid.Valid(updateCompanyCommand) | ||
37 | + if err != nil { | ||
38 | + return err | ||
39 | + } | ||
40 | + if !b { | ||
41 | + elem := reflect.TypeOf(updateCompanyCommand).Elem() | ||
42 | + for _, validErr := range valid.Errors { | ||
43 | + field, isExist := elem.FieldByName(validErr.Field) | ||
44 | + if isExist { | ||
45 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
46 | + } else { | ||
47 | + return fmt.Errorf(validErr.Message) | ||
48 | + } | ||
49 | + } | ||
50 | + } | ||
51 | + return nil | ||
52 | +} |
1 | +package command | ||
2 | + | ||
3 | +// type ListCompanyCustomizeMenusCommand struct { | ||
4 | +// // 企业id | ||
5 | +// CompanyId int64 `cname:"企业id" json:"companyId,string" valid:"Required"` | ||
6 | +// // 菜单类别 web app | ||
7 | +// MenuCategory string `cname:"菜单类别" json:"menuCategory,omitempty" valid:"Required"` | ||
8 | +// } | ||
9 | + | ||
10 | +// func (listCompanyCustomizeMenusCommand *ListCompanyCustomizeMenusCommand) Valid(validation *validation.Validation) { | ||
11 | + | ||
12 | +// } | ||
13 | + | ||
14 | +// func (listCompanyCustomizeMenusCommand *ListCompanyCustomizeMenusCommand) ValidateCommand() error { | ||
15 | +// valid := validation.Validation{} | ||
16 | +// b, err := valid.Valid(listCompanyCustomizeMenusCommand) | ||
17 | +// if err != nil { | ||
18 | +// return err | ||
19 | +// } | ||
20 | +// if !b { | ||
21 | +// elem := reflect.TypeOf(listCompanyCustomizeMenusCommand).Elem() | ||
22 | +// for _, validErr := range valid.Errors { | ||
23 | +// field, isExist := elem.FieldByName(validErr.Field) | ||
24 | +// if isExist { | ||
25 | +// return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
26 | +// } else { | ||
27 | +// return fmt.Errorf(validErr.Message) | ||
28 | +// } | ||
29 | +// } | ||
30 | +// } | ||
31 | +// return nil | ||
32 | +// } |
1 | +package command | ||
2 | + | ||
3 | +// type RemoveCompanyCommand struct { | ||
4 | +// // 企业id | ||
5 | +// CompanyId int64 `cname:"企业id" json:"companyId,string" valid:"Required"` | ||
6 | +// } | ||
7 | + | ||
8 | +// func (removeCompanyCommand *RemoveCompanyCommand) Valid(validation *validation.Validation) { | ||
9 | +// validation.SetError("CustomValid", "未实现的自定义认证") | ||
10 | +// } | ||
11 | + | ||
12 | +// func (removeCompanyCommand *RemoveCompanyCommand) ValidateCommand() error { | ||
13 | +// valid := validation.Validation{} | ||
14 | +// b, err := valid.Valid(removeCompanyCommand) | ||
15 | +// if err != nil { | ||
16 | +// return err | ||
17 | +// } | ||
18 | +// if !b { | ||
19 | +// elem := reflect.TypeOf(removeCompanyCommand).Elem() | ||
20 | +// for _, validErr := range valid.Errors { | ||
21 | +// field, isExist := elem.FieldByName(validErr.Field) | ||
22 | +// if isExist { | ||
23 | +// return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
24 | +// } else { | ||
25 | +// return fmt.Errorf(validErr.Message) | ||
26 | +// } | ||
27 | +// } | ||
28 | +// } | ||
29 | +// return nil | ||
30 | +// } |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
6 | + "reflect" | ||
7 | + "strings" | ||
8 | + | ||
9 | + "github.com/beego/beego/v2/core/validation" | ||
10 | +) | ||
11 | + | ||
12 | +type UpdateCompanyCommand struct { | ||
13 | + //操作人 | ||
14 | + Operator domain.Operator `json:"-"` | ||
15 | + // 企业名称 | ||
16 | + CompanyName string `cname:"企业名称" json:"companyName" valid:"Required"` | ||
17 | + // 公司地址 | ||
18 | + Address string `cname:"公司地址" json:"address" valid:"Required"` | ||
19 | + // 系统名称 | ||
20 | + SystemName string `cname:"系统名称" json:"systemName" valid:"Required"` | ||
21 | + // 公司Logo地址 | ||
22 | + Logo string `cname:"公司Logo地址" json:"logo" valid:"Required"` | ||
23 | +} | ||
24 | + | ||
25 | +func (updateCompanyCommand *UpdateCompanyCommand) Valid(validation *validation.Validation) { | ||
26 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
27 | +} | ||
28 | + | ||
29 | +func (updateCompanyCommand *UpdateCompanyCommand) ValidateCommand() error { | ||
30 | + valid := validation.Validation{} | ||
31 | + b, err := valid.Valid(updateCompanyCommand) | ||
32 | + if err != nil { | ||
33 | + return err | ||
34 | + } | ||
35 | + if !b { | ||
36 | + elem := reflect.TypeOf(updateCompanyCommand).Elem() | ||
37 | + for _, validErr := range valid.Errors { | ||
38 | + field, isExist := elem.FieldByName(validErr.Field) | ||
39 | + if isExist { | ||
40 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
41 | + } else { | ||
42 | + return fmt.Errorf(validErr.Message) | ||
43 | + } | ||
44 | + } | ||
45 | + } | ||
46 | + return nil | ||
47 | +} |
1 | +package command | ||
2 | + | ||
3 | +// type UpdateCompanyCustomizeMenusCommand struct { | ||
4 | +// // 企业id | ||
5 | +// CompanyId int64 `cname:"企业id" json:"companyId" valid:"Required"` | ||
6 | +// // 菜单编号 | ||
7 | +// MenuId int64 `cname:"菜单编号" json:"menuId" valid:"Required"` | ||
8 | +// // 菜单名称 | ||
9 | +// //MenuName string `cname:"菜单名称" json:"menuName" valid:"Required"` | ||
10 | +// // 菜单别名 | ||
11 | +// MenuAlias string `cname:"菜单别名" json:"menuAlias" valid:"Required"` | ||
12 | +// // 排序 | ||
13 | +// Sort int `cname:"排序" json:"sort" valid:"Required"` | ||
14 | +// } | ||
15 | + | ||
16 | +// func (updateCompanyCustomizeMenusCommand *UpdateCompanyCustomizeMenusCommand) Valid(validation *validation.Validation) { | ||
17 | +// //validation.SetError("CustomValid", "未实现的自定义认证") | ||
18 | +// } | ||
19 | + | ||
20 | +// func (updateCompanyCustomizeMenusCommand *UpdateCompanyCustomizeMenusCommand) ValidateCommand() error { | ||
21 | +// valid := validation.Validation{} | ||
22 | +// b, err := valid.Valid(updateCompanyCustomizeMenusCommand) | ||
23 | +// if err != nil { | ||
24 | +// return err | ||
25 | +// } | ||
26 | +// if !b { | ||
27 | +// elem := reflect.TypeOf(updateCompanyCustomizeMenusCommand).Elem() | ||
28 | +// for _, validErr := range valid.Errors { | ||
29 | +// field, isExist := elem.FieldByName(validErr.Field) | ||
30 | +// if isExist { | ||
31 | +// return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
32 | +// } else { | ||
33 | +// return fmt.Errorf(validErr.Message) | ||
34 | +// } | ||
35 | +// } | ||
36 | +// } | ||
37 | +// return nil | ||
38 | +// } |
1 | +package dto | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
6 | +) | ||
7 | + | ||
8 | +type CompanyGetItemDto struct { | ||
9 | + CompanyListItemDto | ||
10 | + Remark string `json:"remark"` | ||
11 | + | ||
12 | + // 法律相关 | ||
13 | + // 法人 | ||
14 | + LegalPerson string `json:"legalPerson"` | ||
15 | + // 社会信用代码 | ||
16 | + SocialCreditCode string `json:"socialCreditCode"` | ||
17 | + // 营业执照所在地 | ||
18 | + BusinessLicenseAddress interface{} `json:"businessLicenseAddress"` | ||
19 | + // 营业执照-附件 | ||
20 | + BusinessLicenseAttachments []domain.Attachment `json:"businessLicenseAttachments"` | ||
21 | +} | ||
22 | + | ||
23 | +func (dto *CompanyGetItemDto) LoadDto(c allied_creation_user.CompanyItem, u allied_creation_user.UserDetail) { | ||
24 | + companyListItemDto := &CompanyListItemDto{} | ||
25 | + companyListItemDto.LoadDto(c, u) | ||
26 | + dto.CompanyListItemDto = *companyListItemDto | ||
27 | + dto.Remark = c.CompanyInfo.Remark | ||
28 | + dto.LegalPerson = c.CompanyInfo.Legal.LegalPerson | ||
29 | + dto.SocialCreditCode = c.CompanyInfo.Legal.SocialCreditCode | ||
30 | + dto.BusinessLicenseAddress = c.CompanyInfo.Legal.BusinessLicenseAddress | ||
31 | + dto.BusinessLicenseAttachments = c.CompanyInfo.Legal.BusinessLicenseAttachments | ||
32 | +} |
1 | +package dto | ||
2 | + | ||
3 | +import "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
4 | + | ||
5 | +type CompanyListItemDto struct { | ||
6 | + // 企业id | ||
7 | + CompanyId int `json:"companyId"` | ||
8 | + // 公司名称 | ||
9 | + CompanyName string `json:"companyName"` | ||
10 | + // 规模 | ||
11 | + Scale string `json:"scale,omitempty"` | ||
12 | + // 所属行业 | ||
13 | + IndustryCategory string `json:"industryCategory,omitempty"` | ||
14 | + // 联系人 | ||
15 | + Contacts string `cname:"联系人" json:"contacts"` | ||
16 | + // 手机号码 | ||
17 | + Phone string `cname:"手机号码" json:"phone"` | ||
18 | + // 注册时间 | ||
19 | + RegisteredTime string `json:"registeredTime,omitempty"` | ||
20 | + // 公司状态 1:已注册(待审核) 2:已通过 3:已拒绝 | ||
21 | + Status int `json:"status"` | ||
22 | +} | ||
23 | + | ||
24 | +func (dto *CompanyListItemDto) LoadDto(c allied_creation_user.CompanyItem, u allied_creation_user.UserDetail) *CompanyListItemDto { | ||
25 | + dto.CompanyId = c.CompanyId | ||
26 | + dto.CompanyName = c.CompanyInfo.CompanyName | ||
27 | + dto.Scale = c.CompanyInfo.Scale | ||
28 | + dto.IndustryCategory = c.CompanyInfo.IndustryCategory | ||
29 | + dto.Contacts = u.UserInfo.UserName | ||
30 | + dto.Phone = u.UserInfo.Phone | ||
31 | + dto.RegisteredTime = c.CompanyInfo.RegisteredTime.Format("2006-01-02") | ||
32 | + dto.Status = c.Status | ||
33 | + return dto | ||
34 | +} | ||
35 | + | ||
36 | +type CompanyListItemsDto []*CompanyListItemDto | ||
37 | + | ||
38 | +func (dto *CompanyListItemsDto) LoadDto(items []allied_creation_user.CompanyItem, users []allied_creation_user.UserDetail) { | ||
39 | + var mapItems = make(map[int]allied_creation_user.CompanyItem) | ||
40 | + for i := range items { | ||
41 | + mapItems[items[i].CompanyId] = items[i] | ||
42 | + } | ||
43 | + for i := range users { | ||
44 | + if v, ok := mapItems[users[i].Company.CompanyId]; ok { | ||
45 | + company := &CompanyListItemDto{} | ||
46 | + *dto = append(*dto, company.LoadDto(v, users[i])) | ||
47 | + } | ||
48 | + } | ||
49 | +} |
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "reflect" | ||
6 | + "strings" | ||
7 | + | ||
8 | + "github.com/beego/beego/v2/core/validation" | ||
9 | +) | ||
10 | + | ||
11 | +type GetCompanyQuery struct { | ||
12 | + // 企业id | ||
13 | + CompanyId int `cname:"企业id" json:"companyId" valid:"Required"` | ||
14 | +} | ||
15 | + | ||
16 | +func (getCompanyQuery *GetCompanyQuery) Valid(validation *validation.Validation) { | ||
17 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
18 | +} | ||
19 | + | ||
20 | +func (getCompanyQuery *GetCompanyQuery) ValidateQuery() error { | ||
21 | + valid := validation.Validation{} | ||
22 | + b, err := valid.Valid(getCompanyQuery) | ||
23 | + if err != nil { | ||
24 | + return err | ||
25 | + } | ||
26 | + if !b { | ||
27 | + elem := reflect.TypeOf(getCompanyQuery).Elem() | ||
28 | + for _, validErr := range valid.Errors { | ||
29 | + field, isExist := elem.FieldByName(validErr.Field) | ||
30 | + if isExist { | ||
31 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
32 | + } else { | ||
33 | + return fmt.Errorf(validErr.Message) | ||
34 | + } | ||
35 | + } | ||
36 | + } | ||
37 | + return nil | ||
38 | +} |
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "github.com/beego/beego/v2/core/validation" | ||
6 | + "reflect" | ||
7 | + "strings" | ||
8 | +) | ||
9 | + | ||
10 | +type ListCompanyQuery struct { | ||
11 | + // 查询偏离量 | ||
12 | + PageNumber int `json:"pageNumber"` | ||
13 | + // 查询限制 | ||
14 | + PageSize int `json:"pageSize" valid:"Required"` | ||
15 | + // 状态 | ||
16 | + Status int `cname:"状态" json:"status,omitempty"` | ||
17 | + // 企业名称 | ||
18 | + CompanyName string `cname:"企业名称" json:"companyName,omitempty"` | ||
19 | +} | ||
20 | + | ||
21 | +func (listCompanyQuery *ListCompanyQuery) Valid(validation *validation.Validation) { | ||
22 | + | ||
23 | +} | ||
24 | + | ||
25 | +func (listCompanyQuery *ListCompanyQuery) ValidateQuery() error { | ||
26 | + valid := validation.Validation{} | ||
27 | + b, err := valid.Valid(listCompanyQuery) | ||
28 | + if err != nil { | ||
29 | + return err | ||
30 | + } | ||
31 | + if !b { | ||
32 | + elem := reflect.TypeOf(listCompanyQuery).Elem() | ||
33 | + for _, validErr := range valid.Errors { | ||
34 | + field, isExist := elem.FieldByName(validErr.Field) | ||
35 | + if isExist { | ||
36 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
37 | + } else { | ||
38 | + return fmt.Errorf(validErr.Message) | ||
39 | + } | ||
40 | + } | ||
41 | + } | ||
42 | + return nil | ||
43 | +} |
1 | +package service | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/emirpasic/gods/sets/hashset" | ||
5 | + "github.com/linmadan/egglib-go/core/application" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/company/command" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/company/dto" | ||
8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/company/query" | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
10 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
11 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/sms_serve" | ||
12 | +) | ||
13 | + | ||
14 | +// 企业 | ||
15 | +type CompanyService struct { | ||
16 | +} | ||
17 | + | ||
18 | +// 创建企业 | ||
19 | +// func (companyService *CompanyService) CreateCompany(createCompanyCommand *command.CreateCompanyCommand) (interface{}, error) { | ||
20 | +// return nil, nil | ||
21 | +// } | ||
22 | + | ||
23 | +// 返回企业 | ||
24 | +func (companyService *CompanyService) GetCompany(getCompanyQuery *query.GetCompanyQuery) (interface{}, error) { | ||
25 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
26 | + result, err := creationUserGateway.CompanyGet(allied_creation_user.ReqCompanyGet{ | ||
27 | + CompanyId: getCompanyQuery.CompanyId, | ||
28 | + }) | ||
29 | + if err != nil { | ||
30 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
31 | + } | ||
32 | + userResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
33 | + InCompanyIds: []interface{}{result.CompanyId}, | ||
34 | + UserType: domain.UserTypeCompanyAdmin, | ||
35 | + }) | ||
36 | + if err != nil { | ||
37 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
38 | + } | ||
39 | + var user allied_creation_user.UserDetail | ||
40 | + if len(userResult.Users) > 0 { | ||
41 | + user = userResult.Users[0] | ||
42 | + } | ||
43 | + companyDto := &dto.CompanyGetItemDto{} | ||
44 | + companyDto.LoadDto(allied_creation_user.CompanyItem(*result), user) | ||
45 | + return companyDto, nil | ||
46 | +} | ||
47 | + | ||
48 | +func (companyService *CompanyService) AuditCompany(cmd *command.AuditCompanyCommand) (interface{}, error) { | ||
49 | + if err := cmd.ValidateCommand(); err != nil { | ||
50 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
51 | + } | ||
52 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
53 | + _, err := creationUserGateway.AuditCompany(allied_creation_user.ReqCompanyAudit{ | ||
54 | + CompanyId: int(cmd.CompanyId), | ||
55 | + Status: cmd.Status, | ||
56 | + Remark: cmd.Remark, | ||
57 | + }) | ||
58 | + if err != nil { | ||
59 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
60 | + } | ||
61 | + smsServe := sms_serve.NewHttplibHttplibSmsServe() | ||
62 | + if cmd.Status == domain.CompanyAuthenticated { | ||
63 | + var tmpPhone []rune = []rune(cmd.Phone) | ||
64 | + for i := 0; i < 4; i++ { | ||
65 | + tmpPhone[i+3] = rune('*') | ||
66 | + } | ||
67 | + err = smsServe.SendNoticeSms(cmd.Phone, 5007040, map[string]interface{}{"phone": string(tmpPhone)}) | ||
68 | + } else if cmd.Status == domain.CompanyUnauthenticated { | ||
69 | + err = smsServe.SendNoticeSms(cmd.Phone, 5006964, map[string]interface{}{"reason": cmd.Remark}) | ||
70 | + } | ||
71 | + if err != nil { | ||
72 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
73 | + } | ||
74 | + return struct{}{}, nil | ||
75 | +} | ||
76 | + | ||
77 | +func (companyService *CompanyService) EnableCompany(cmd *command.EnableCompanyCommand) (interface{}, error) { | ||
78 | + if err := cmd.ValidateCommand(); err != nil { | ||
79 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
80 | + } | ||
81 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
82 | + _, err := creationUserGateway.EnableCompany(allied_creation_user.ReqCompanyEnable{ | ||
83 | + CompanyId: int(cmd.CompanyId), | ||
84 | + Status: cmd.Status, | ||
85 | + }) | ||
86 | + if err != nil { | ||
87 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
88 | + } | ||
89 | + return struct{}{}, nil | ||
90 | +} | ||
91 | + | ||
92 | +// 返回企业列表 | ||
93 | +func (companyService *CompanyService) ListCompany(listCompanyQuery *query.ListCompanyQuery) (int64, interface{}, error) { | ||
94 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
95 | + result, err := creationUserGateway.CompanySearch(allied_creation_user.ReqCompanySearch{ | ||
96 | + Offset: (listCompanyQuery.PageNumber - 1) * listCompanyQuery.PageSize, | ||
97 | + Limit: listCompanyQuery.PageSize, | ||
98 | + Status: listCompanyQuery.Status, | ||
99 | + CompanyName: listCompanyQuery.CompanyName, | ||
100 | + }) | ||
101 | + if err != nil { | ||
102 | + return 0, nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
103 | + } | ||
104 | + companySet := hashset.New() | ||
105 | + for i := range result.Companys { | ||
106 | + companySet.Add(result.Companys[i].CompanyId) | ||
107 | + } | ||
108 | + var users = make([]allied_creation_user.UserDetail, 0) | ||
109 | + if companySet.Size() > 0 { | ||
110 | + userResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
111 | + InCompanyIds: companySet.Values(), | ||
112 | + UserType: domain.UserTypeCompanyAdmin, | ||
113 | + }) | ||
114 | + if err != nil { | ||
115 | + return 0, nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
116 | + } | ||
117 | + users = userResult.Users | ||
118 | + } | ||
119 | + companyListItemsDto := dto.CompanyListItemsDto{} | ||
120 | + companyListItemsDto.LoadDto(result.Companys, users) | ||
121 | + return int64(result.Count), companyListItemsDto, nil | ||
122 | +} | ||
123 | + | ||
124 | +// 返回自定义菜单列表(匹配有设置的菜单) | ||
125 | +// func (companyService *CompanyService) ListCompanyCustomizeMenus(listCompanyCustomizeMenusCommand *command.ListCompanyCustomizeMenusCommand) (interface{}, error) { | ||
126 | +// return nil, nil | ||
127 | +// } | ||
128 | + | ||
129 | +// 移除企业 | ||
130 | +// func (companyService *CompanyService) RemoveCompany(removeCompanyCommand *command.RemoveCompanyCommand) (interface{}, error) { | ||
131 | +// return nil, nil | ||
132 | +// } | ||
133 | + | ||
134 | +// 更新企业 | ||
135 | +func (companyService *CompanyService) UpdateCompany(updateCompanyCommand *command.UpdateCompanyCommand) (interface{}, error) { | ||
136 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(updateCompanyCommand.Operator) | ||
137 | + _, err := creationUserGateway.CompanyUpdate(allied_creation_user.ReqCompanyUpdate{ | ||
138 | + CompanyId: updateCompanyCommand.Operator.CompanyId, | ||
139 | + CompanyName: updateCompanyCommand.CompanyName, | ||
140 | + Address: updateCompanyCommand.Address, | ||
141 | + SystemName: updateCompanyCommand.SystemName, | ||
142 | + Logo: updateCompanyCommand.Logo, | ||
143 | + }) | ||
144 | + if err != nil { | ||
145 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
146 | + } | ||
147 | + return updateCompanyCommand, nil | ||
148 | +} | ||
149 | + | ||
150 | +func NewCompanyService(options map[string]interface{}) *CompanyService { | ||
151 | + newCompanyService := &CompanyService{} | ||
152 | + return newCompanyService | ||
153 | +} |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | +) | ||
6 | + | ||
7 | +type AdminUserAddCommand struct { | ||
8 | + //操作人 | ||
9 | + Operator domain.Operator `json:"-"` | ||
10 | + // 用户编号 | ||
11 | + UsersCode string `json:"userCode" valid:"Required"` | ||
12 | + // 用户姓名 | ||
13 | + UsersName string `json:"userName" valid:"Required"` | ||
14 | + // 部门id | ||
15 | + DepartmentName string `json:"departmentName" valid:"Required"` | ||
16 | + // 手机号码 | ||
17 | + Phone string `json:"phone" valid:"Required"` | ||
18 | +} | ||
19 | + | ||
20 | +//func (companyUserAddCommand *CompanyUserAddCommand) Valid(validation *validation.Validation) { | ||
21 | +// | ||
22 | +//} | ||
23 | +// | ||
24 | +//func (companyUserAddCommand *CompanyUserAddCommand) ValidateCommand() error { | ||
25 | +// valid := validation.Validation{} | ||
26 | +// b, err := valid.Valid(companyUserAddCommand) | ||
27 | +// if err != nil { | ||
28 | +// return err | ||
29 | +// } | ||
30 | +// if !b { | ||
31 | +// for _, validErr := range valid.Errors { | ||
32 | +// return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
33 | +// } | ||
34 | +// } | ||
35 | +// return nil | ||
36 | +//} |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | +) | ||
6 | + | ||
7 | +type AdminUserEditCommand struct { | ||
8 | + //操作人 | ||
9 | + Operator domain.Operator `json:"-"` | ||
10 | + UserId int64 `json:"userId"` | ||
11 | + // 用户编号 | ||
12 | + UsersCode string `json:"userCode" valid:"Required"` | ||
13 | + // 用户姓名 | ||
14 | + UsersName string `json:"userName" valid:"Required"` | ||
15 | + // 部门id | ||
16 | + DepartmentName string `json:"departmentName" valid:"Required"` | ||
17 | + // 手机号码 | ||
18 | + Phone string `json:"phone" valid:"Required"` | ||
19 | +} | ||
20 | + | ||
21 | +//func (companyUserAddCommand *CompanyUserAddCommand) Valid(validation *validation.Validation) { | ||
22 | +// | ||
23 | +//} | ||
24 | +// | ||
25 | +//func (companyUserAddCommand *CompanyUserAddCommand) ValidateCommand() error { | ||
26 | +// valid := validation.Validation{} | ||
27 | +// b, err := valid.Valid(companyUserAddCommand) | ||
28 | +// if err != nil { | ||
29 | +// return err | ||
30 | +// } | ||
31 | +// if !b { | ||
32 | +// for _, validErr := range valid.Errors { | ||
33 | +// return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
34 | +// } | ||
35 | +// } | ||
36 | +// return nil | ||
37 | +//} |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
6 | + "reflect" | ||
7 | + "strings" | ||
8 | + | ||
9 | + "github.com/beego/beego/v2/core/validation" | ||
10 | +) | ||
11 | + | ||
12 | +type EnableAdminUserCommand struct { | ||
13 | + Operator domain.Operator `json:"-"` | ||
14 | + UserId int64 `cname:"用户id列表" json:"userId" valid:"Required"` | ||
15 | + // 启用状态(启用:1 禁用:2 ) | ||
16 | + EnableStatus int `cname:"启用状态(启用:1 禁用:2 )" json:"enableStatus" valid:"Required"` | ||
17 | +} | ||
18 | + | ||
19 | +func (batchEnableCommand *EnableAdminUserCommand) Valid(validation *validation.Validation) { | ||
20 | +} | ||
21 | + | ||
22 | +func (batchEnableCommand *EnableAdminUserCommand) ValidateCommand() error { | ||
23 | + valid := validation.Validation{} | ||
24 | + b, err := valid.Valid(batchEnableCommand) | ||
25 | + if err != nil { | ||
26 | + return err | ||
27 | + } | ||
28 | + if !b { | ||
29 | + elem := reflect.TypeOf(batchEnableCommand).Elem() | ||
30 | + for _, validErr := range valid.Errors { | ||
31 | + field, isExist := elem.FieldByName(validErr.Field) | ||
32 | + if isExist { | ||
33 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
34 | + } else { | ||
35 | + return fmt.Errorf(validErr.Message) | ||
36 | + } | ||
37 | + } | ||
38 | + } | ||
39 | + return nil | ||
40 | +} |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
6 | + "reflect" | ||
7 | + "strings" | ||
8 | + | ||
9 | + "github.com/beego/beego/v2/core/validation" | ||
10 | +) | ||
11 | + | ||
12 | +type EnableUserCommand struct { | ||
13 | + Operator domain.Operator `json:"-"` | ||
14 | + UserBaseId int64 `cname:"用户id列表" json:"userBaseId" valid:"Required"` | ||
15 | + // 启用状态(启用:1 禁用:2 注销:3) | ||
16 | + EnableStatus int `cname:"启用状态(启用:1 禁用:2 注销:3)" json:"enableStatus" valid:"Required"` | ||
17 | +} | ||
18 | + | ||
19 | +func (batchEnableCommand *EnableUserCommand) Valid(validation *validation.Validation) { | ||
20 | +} | ||
21 | + | ||
22 | +func (batchEnableCommand *EnableUserCommand) ValidateCommand() error { | ||
23 | + valid := validation.Validation{} | ||
24 | + b, err := valid.Valid(batchEnableCommand) | ||
25 | + if err != nil { | ||
26 | + return err | ||
27 | + } | ||
28 | + if !b { | ||
29 | + elem := reflect.TypeOf(batchEnableCommand).Elem() | ||
30 | + for _, validErr := range valid.Errors { | ||
31 | + field, isExist := elem.FieldByName(validErr.Field) | ||
32 | + if isExist { | ||
33 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
34 | + } else { | ||
35 | + return fmt.Errorf(validErr.Message) | ||
36 | + } | ||
37 | + } | ||
38 | + } | ||
39 | + return nil | ||
40 | +} |
1 | +package dto | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
5 | + "time" | ||
6 | +) | ||
7 | + | ||
8 | +type AdminUserDto struct { | ||
9 | + // 用户基础数据id | ||
10 | + UserId int `json:"userId,omitempty"` | ||
11 | + // 用工编号 | ||
12 | + UserCode string `json:"userCode"` | ||
13 | + //姓名 | ||
14 | + UserName string `json:"userName"` | ||
15 | + // 账号 | ||
16 | + Phone string `json:"phone"` | ||
17 | + // 用户关联的组织 | ||
18 | + DepartmentName string `json:"departmentName"` | ||
19 | + // 账号状态 1:正常 2.禁用 3:注销 | ||
20 | + EnableStatus int `json:"enableStatus,omitempty"` | ||
21 | + // 推荐人 | ||
22 | + Referer string `json:"referer"` | ||
23 | + // 创建时间 | ||
24 | + RegistrationDate string `json:"registrationDate,omitempty"` | ||
25 | + // 最后登录时间 | ||
26 | + LastLogIn string `json:"lastLogIn"` | ||
27 | +} | ||
28 | + | ||
29 | +func NewAdminUserDto(v allied_creation_user.UserDetail) AdminUserDto { | ||
30 | + item := AdminUserDto{ | ||
31 | + UserCode: v.UserCode, | ||
32 | + UserId: v.UserId, | ||
33 | + Phone: v.UserInfo.Phone, | ||
34 | + DepartmentName: v.Department.DepartmentName, | ||
35 | + EnableStatus: v.EnableStatus, | ||
36 | + UserName: v.UserInfo.UserName, | ||
37 | + RegistrationDate: v.CreatedAt.Format("2006-01-02"), | ||
38 | + LastLogIn: "", | ||
39 | + } | ||
40 | + if v.Favorite.LastLogInAt > 0 { | ||
41 | + item.LastLogIn = time.Unix(v.Favorite.LastLogInAt, 0).Format("2006-01-02 15:04:05") | ||
42 | + } | ||
43 | + return item | ||
44 | +} |
pkg/application/background/user/dto/dto.go
0 → 100644
1 | +package dto | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
5 | + "strings" | ||
6 | +) | ||
7 | + | ||
8 | +type UserBaseDto struct { | ||
9 | + // 用户基础数据id | ||
10 | + UserBaseId int `json:"userBaseId,omitempty"` | ||
11 | + //姓名 | ||
12 | + UserName string `json:"userName"` | ||
13 | + // 账号 | ||
14 | + Account string `json:"account"` | ||
15 | + // 用户关联的组织 | ||
16 | + Organizations string `json:"organizations"` | ||
17 | + // 账号状态 1:正常 2.禁用 3:注销 | ||
18 | + Status int `json:"status,omitempty"` | ||
19 | + // 推荐人 | ||
20 | + Referer string `json:"referer"` | ||
21 | + // 创建时间 | ||
22 | + RegistrationDate string `json:"registrationDate,omitempty"` | ||
23 | + // 最后登录时间 | ||
24 | + LastLogIn string `json:"lastLogIn"` | ||
25 | +} | ||
26 | + | ||
27 | +func (dto *UserBaseDto) LoadDto(detail allied_creation_user.UserBaseDetail) { | ||
28 | + dto.UserBaseId = detail.UserBaseId | ||
29 | + dto.UserName = detail.UserInfo.UserName | ||
30 | + dto.Account = detail.UserInfo.Phone | ||
31 | + dto.Status = detail.Status | ||
32 | + dto.Referer = detail.Referer | ||
33 | + dto.RegistrationDate = detail.RegistrationDate | ||
34 | + dto.LastLogIn = detail.LastLogIn | ||
35 | + var organizations []string | ||
36 | + for i := range detail.UserOrg { | ||
37 | + if len(detail.UserOrg[i].OrgName) == 0 { | ||
38 | + continue | ||
39 | + } | ||
40 | + organizations = append(organizations, detail.UserOrg[i].OrgName) | ||
41 | + } | ||
42 | + dto.Organizations = strings.Join(organizations, ",") | ||
43 | +} |
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
6 | + "reflect" | ||
7 | + "strings" | ||
8 | + | ||
9 | + "github.com/beego/beego/v2/core/validation" | ||
10 | +) | ||
11 | + | ||
12 | +type ListAdminUserQuery struct { | ||
13 | + Operator domain.Operator `json:"-"` | ||
14 | + // 查询偏离量 | ||
15 | + PageNumber int `cname:"查询偏离量" json:"pageNumber"` | ||
16 | + // 查询限制 | ||
17 | + PageSize int `cname:"查询限制" json:"pageSize"` | ||
18 | + // 用户姓名 | ||
19 | + UserName string `cname:"用户姓名" json:"userName,omitempty"` | ||
20 | + // 所属组织 | ||
21 | + DepartmentName string `cname:"所属部门" json:"departmentName,omitempty"` | ||
22 | +} | ||
23 | + | ||
24 | +func (listUserQuery *ListAdminUserQuery) Valid(validation *validation.Validation) { | ||
25 | + //validation.SetError("CustomValid", "未实现的自定义认证") | ||
26 | +} | ||
27 | + | ||
28 | +func (listUserQuery *ListAdminUserQuery) ValidateQuery() error { | ||
29 | + valid := validation.Validation{} | ||
30 | + b, err := valid.Valid(listUserQuery) | ||
31 | + if err != nil { | ||
32 | + return err | ||
33 | + } | ||
34 | + if !b { | ||
35 | + elem := reflect.TypeOf(listUserQuery).Elem() | ||
36 | + for _, validErr := range valid.Errors { | ||
37 | + field, isExist := elem.FieldByName(validErr.Field) | ||
38 | + if isExist { | ||
39 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
40 | + } else { | ||
41 | + return fmt.Errorf(validErr.Message) | ||
42 | + } | ||
43 | + } | ||
44 | + } | ||
45 | + return nil | ||
46 | +} |
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
6 | + "reflect" | ||
7 | + "strings" | ||
8 | + | ||
9 | + "github.com/beego/beego/v2/core/validation" | ||
10 | +) | ||
11 | + | ||
12 | +type ListUserQuery struct { | ||
13 | + Operator domain.Operator `json:"-"` | ||
14 | + // 查询偏离量 | ||
15 | + PageNumber int `cname:"查询偏离量" json:"pageNumber"` | ||
16 | + // 查询限制 | ||
17 | + PageSize int `cname:"查询限制" json:"pageSize"` | ||
18 | + // 用户姓名 | ||
19 | + UserName string `cname:"用户姓名" json:"userName,omitempty"` | ||
20 | + // 在用户列表内 | ||
21 | + //InUserBaseIds []int64 `cname:"用户姓名" json:"inUserBaseIds,omitempty"` | ||
22 | + // 所属组织 | ||
23 | + OrgName string `cname:"所属组织" json:"orgName,omitempty"` | ||
24 | + // 关闭查询限制 | ||
25 | + //DisableLimit bool `cname:"关闭查询限制" json:"disableLimit,omitempty"` | ||
26 | + | ||
27 | + // 获取组织 | ||
28 | + //FetchOrgBelong bool `cname:"获取组织" json:"fetchOrgBelong,omitempty"` | ||
29 | +} | ||
30 | + | ||
31 | +func (listUserQuery *ListUserQuery) Valid(validation *validation.Validation) { | ||
32 | + //validation.SetError("CustomValid", "未实现的自定义认证") | ||
33 | +} | ||
34 | + | ||
35 | +func (listUserQuery *ListUserQuery) ValidateQuery() error { | ||
36 | + valid := validation.Validation{} | ||
37 | + b, err := valid.Valid(listUserQuery) | ||
38 | + if err != nil { | ||
39 | + return err | ||
40 | + } | ||
41 | + if !b { | ||
42 | + elem := reflect.TypeOf(listUserQuery).Elem() | ||
43 | + for _, validErr := range valid.Errors { | ||
44 | + field, isExist := elem.FieldByName(validErr.Field) | ||
45 | + if isExist { | ||
46 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
47 | + } else { | ||
48 | + return fmt.Errorf(validErr.Message) | ||
49 | + } | ||
50 | + } | ||
51 | + } | ||
52 | + return nil | ||
53 | +} |
1 | +package service | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/linmadan/egglib-go/core/application" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/command" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/dto" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/query" | ||
8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
10 | + "strconv" | ||
11 | +) | ||
12 | + | ||
13 | +// 返回公司用户信息列表 | ||
14 | +func (usersService *UserService) AdminUserList(companyUserListQuery *query.ListAdminUserQuery) (int64, interface{}, error) { | ||
15 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
16 | + result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
17 | + Offset: (companyUserListQuery.PageNumber - 1) * companyUserListQuery.PageSize, | ||
18 | + Limit: companyUserListQuery.PageSize, | ||
19 | + OrganizationId: 0, | ||
20 | + DepartmentId: 0, | ||
21 | + UserName: companyUserListQuery.UserName, | ||
22 | + DepName: companyUserListQuery.DepartmentName, | ||
23 | + Phone: "", | ||
24 | + UserType: domain.UserTypeOperationAdmin, | ||
25 | + PullRealTime: true, | ||
26 | + }) | ||
27 | + | ||
28 | + if err != nil { | ||
29 | + return 0, nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
30 | + } | ||
31 | + //数据转换 | ||
32 | + cnt := int64(result.Count) | ||
33 | + var ( | ||
34 | + listData = make([]dto.AdminUserDto, 0) | ||
35 | + item dto.AdminUserDto | ||
36 | + ) | ||
37 | + for _, v := range result.Users { | ||
38 | + item = dto.NewAdminUserDto(v) | ||
39 | + listData = append(listData, item) | ||
40 | + } | ||
41 | + return cnt, listData, nil | ||
42 | +} | ||
43 | + | ||
44 | +// 启用禁用用户 | ||
45 | +func (usersService *UserService) EnableAdminUser(companyUserEnableCommand *command.EnableAdminUserCommand) (interface{}, error) { | ||
46 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
47 | + companyUserEnableCommand.Operator) | ||
48 | + | ||
49 | + var userIds []int64 = []int64{companyUserEnableCommand.UserId} | ||
50 | + _, err := creationUserGateway.UserBatchEnable(allied_creation_user.ReqBatchEnableUser{ | ||
51 | + UserIds: userIds, | ||
52 | + EnableStatus: companyUserEnableCommand.EnableStatus, | ||
53 | + }) | ||
54 | + if err != nil { | ||
55 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
56 | + } | ||
57 | + return companyUserEnableCommand, err | ||
58 | +} | ||
59 | + | ||
60 | +func (usersService *UserService) GetAdminUser(userId int) (interface{}, error) { | ||
61 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
62 | + domain.Operator{}) | ||
63 | + result, err := creationUserGateway.UserGet(allied_creation_user.ReqGetUser{ | ||
64 | + UserId: userId, | ||
65 | + }) | ||
66 | + if err != nil { | ||
67 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
68 | + } | ||
69 | + userInfo := dto.NewAdminUserDto(result.UserDetail) | ||
70 | + return userInfo, nil | ||
71 | +} | ||
72 | + | ||
73 | +func (usersService *UserService) CreateAdminUser(cmd *command.AdminUserAddCommand) (interface{}, error) { | ||
74 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
75 | + cmd.Operator) | ||
76 | + userOrg := []int64{} | ||
77 | + userRole := []int64{} | ||
78 | + initPassword := domain.DefaultPassword | ||
79 | + | ||
80 | + result, err := creationUserGateway.AdminUserCreate(allied_creation_user.ReqCreateUser{ | ||
81 | + CompanyId: cmd.Operator.CompanyId, | ||
82 | + // 用户类型 1:企业内部用户(内部添加) 2:共创用户 1024:企业注册用户(注册添加) | ||
83 | + UserType: domain.UserTypeOperationAdmin, | ||
84 | + UserCode: cmd.UsersCode, | ||
85 | + UserOrg: userOrg, | ||
86 | + UserRole: userRole, | ||
87 | + // 启用状态(启用:1 禁用:2) | ||
88 | + EnableStatus: 1, | ||
89 | + UserName: cmd.UsersName, | ||
90 | + Phone: cmd.Phone, | ||
91 | + Password: initPassword, | ||
92 | + DepartmentName: cmd.DepartmentName, | ||
93 | + }) | ||
94 | + if err != nil { | ||
95 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
96 | + } | ||
97 | + | ||
98 | + data := struct { | ||
99 | + UserId string `json:"userId"` | ||
100 | + command.AdminUserAddCommand | ||
101 | + }{ | ||
102 | + UserId: strconv.Itoa(result.UserId), | ||
103 | + AdminUserAddCommand: *cmd, | ||
104 | + } | ||
105 | + return data, err | ||
106 | +} | ||
107 | + | ||
108 | +func (usersService *UserService) UpdateAdminUser(cmd *command.AdminUserEditCommand) (interface{}, error) { | ||
109 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
110 | + cmd.Operator) | ||
111 | + user, err := creationUserGateway.AuthUserBaseInfo(allied_creation_user.ReqAuthUserBase{ | ||
112 | + Account: cmd.Phone, | ||
113 | + }) | ||
114 | + _, err = creationUserGateway.AdminUserUpdate(allied_creation_user.ReqUpdateUser{ | ||
115 | + UserId: cmd.UserId, | ||
116 | + //CooperationCompany: cmd.CooperationCompany, | ||
117 | + //CooperationDeadline: time.Unix(cmd.CooperationDeadline/1000, 0), | ||
118 | + Email: user.UserInfo.Email, | ||
119 | + //EnableStatus: user., | ||
120 | + UserCode: cmd.UsersCode, | ||
121 | + UserName: cmd.UsersName, | ||
122 | + Avatar: user.UserInfo.Avatar, | ||
123 | + //OrgId: cmd.Operator.OrgId, | ||
124 | + Phone: cmd.Phone, | ||
125 | + DepartmentName: cmd.DepartmentName, | ||
126 | + }) | ||
127 | + if err != nil { | ||
128 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
129 | + } | ||
130 | + return cmd, err | ||
131 | +} | ||
132 | + | ||
133 | +func (svr *UserService) GetAdminUserInfo(operator domain.Operator) (interface{}, error) { | ||
134 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
135 | + operator) | ||
136 | + | ||
137 | + resultUser, err := creationUserGateway.AuthUserBaseInfo(allied_creation_user.ReqAuthUserBase{ | ||
138 | + Account: operator.Phone, | ||
139 | + }) | ||
140 | + if err != nil { | ||
141 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
142 | + } | ||
143 | + | ||
144 | + users, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
145 | + UserBaseId: int64(resultUser.UserBaseID), | ||
146 | + UserType: domain.UserTypeOperationAdmin, | ||
147 | + }) | ||
148 | + if err != nil { | ||
149 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
150 | + } | ||
151 | + if len(users.Users) == 0 { | ||
152 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "用户不存在") | ||
153 | + } | ||
154 | + var user = map[string]interface{}{ | ||
155 | + "userId": users.Users[0].UserId, | ||
156 | + "userInfo": map[string]interface{}{ | ||
157 | + "userName": resultUser.UserInfo.UserName, | ||
158 | + "userPhone": resultUser.UserInfo.Phone, | ||
159 | + "userAvatar": resultUser.UserInfo.Avatar, | ||
160 | + "email": resultUser.UserInfo.Email, | ||
161 | + }, | ||
162 | + "department": struct{}{}, | ||
163 | + "company": map[string]interface{}{}, | ||
164 | + //"im": resultUser.Im, | ||
165 | + "org": struct{}{}, | ||
166 | + } | ||
167 | + return user, nil | ||
168 | +} |
1 | +package service | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/linmadan/egglib-go/core/application" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/command" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/dto" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/query" | ||
8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
10 | +) | ||
11 | + | ||
12 | +type UserService struct { | ||
13 | +} | ||
14 | + | ||
15 | +// 创建菜单服务 | ||
16 | +func (userService *UserService) SearchUser(cmd *query.ListUserQuery) (int64, interface{}, error) { | ||
17 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(cmd.Operator) | ||
18 | + result, err := creationUserGateway.UserBaseSearch(allied_creation_user.ReqUserBaseSearch{ | ||
19 | + Offset: (cmd.PageNumber - 1) * cmd.PageSize, | ||
20 | + Limit: cmd.PageSize, | ||
21 | + UserName: cmd.UserName, | ||
22 | + OrgName: cmd.OrgName, | ||
23 | + FetchOrgBelong: true, | ||
24 | + }) | ||
25 | + if err != nil { | ||
26 | + return 0, nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
27 | + } | ||
28 | + var users = make([]dto.UserBaseDto, 0) | ||
29 | + for i := range result.Users { | ||
30 | + item := &dto.UserBaseDto{} | ||
31 | + item.LoadDto(result.Users[i]) | ||
32 | + users = append(users, *item) | ||
33 | + } | ||
34 | + return result.Count, users, nil | ||
35 | +} | ||
36 | + | ||
37 | +func (userService *UserService) EnableUser(cmd *command.EnableUserCommand) (interface{}, error) { | ||
38 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(cmd.Operator) | ||
39 | + _, err := creationUserGateway.EnableUserBase(allied_creation_user.ReqEnableUserBase{ | ||
40 | + UserBaseIds: []int64{cmd.UserBaseId}, | ||
41 | + EnableStatus: cmd.EnableStatus, | ||
42 | + }) | ||
43 | + if err != nil { | ||
44 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
45 | + } | ||
46 | + return struct{}{}, nil | ||
47 | +} | ||
48 | + | ||
49 | +func (userService *UserService) ResetPassword(cmd *command.ResetPasswordCommand) (interface{}, error) { | ||
50 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(cmd.Operator) | ||
51 | + _, err := creationUserGateway.AuthResetPassword(allied_creation_user.ReqAuthResetPassword{ | ||
52 | + Phone: cmd.Account, | ||
53 | + Password: domain.DefaultPassword, //TL123456! | ||
54 | + }) | ||
55 | + if err != nil { | ||
56 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
57 | + } | ||
58 | + return struct{}{}, nil | ||
59 | +} | ||
60 | + | ||
61 | +func NewUserService(options map[string]interface{}) *UserService { | ||
62 | + newUserService := &UserService{} | ||
63 | + return newUserService | ||
64 | +} |
@@ -26,7 +26,7 @@ func (menuService *MenuService) MenuFavorite(menuFavoriteCommand *command.MenuFa | @@ -26,7 +26,7 @@ func (menuService *MenuService) MenuFavorite(menuFavoriteCommand *command.MenuFa | ||
26 | } | 26 | } |
27 | 27 | ||
28 | // 返回菜单列表 | 28 | // 返回菜单列表 |
29 | -func (menuService *MenuService) MenuList(menuListQuery *query.MenuListQuery) (interface{}, error) { | 29 | +func (menuService *MenuService) CustomizeMenus(menuListQuery *query.MenuListQuery) (interface{}, error) { |
30 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | 30 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( |
31 | menuListQuery.Operator, | 31 | menuListQuery.Operator, |
32 | ) | 32 | ) |
@@ -59,6 +59,21 @@ func (menuService *MenuService) MenuUpdate(menuUpdateCommand *command.MenuUpdate | @@ -59,6 +59,21 @@ func (menuService *MenuService) MenuUpdate(menuUpdateCommand *command.MenuUpdate | ||
59 | return menuUpdateCommand, nil | 59 | return menuUpdateCommand, nil |
60 | } | 60 | } |
61 | 61 | ||
62 | +func (menuService *MenuService) MenuSearch(menuListQuery *query.MenuListQuery) (interface{}, error) { | ||
63 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
64 | + menuListQuery.Operator, | ||
65 | + ) | ||
66 | + result, err := creationUserGateway.MenusSearch(allied_creation_user.ReqMenusSearch{ | ||
67 | + MenuCategory: menuListQuery.MenuCategory, | ||
68 | + }) | ||
69 | + if err != nil { | ||
70 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
71 | + } | ||
72 | + return map[string]interface{}{ | ||
73 | + "menus": result.Menus, | ||
74 | + }, nil | ||
75 | +} | ||
76 | + | ||
62 | func NewMenuService(options map[string]interface{}) *MenuService { | 77 | func NewMenuService(options map[string]interface{}) *MenuService { |
63 | newMenuService := &MenuService{} | 78 | newMenuService := &MenuService{} |
64 | return newMenuService | 79 | return newMenuService |
@@ -14,6 +14,10 @@ type ImportDataCommand struct { | @@ -14,6 +14,10 @@ type ImportDataCommand struct { | ||
14 | FileExt string `json:"-"` | 14 | FileExt string `json:"-"` |
15 | // 业务编码 | 15 | // 业务编码 |
16 | Code string `form:"code"` | 16 | Code string `form:"code"` |
17 | + // 条件 - 成本结构会增加条件 | ||
18 | + Where string `form:"where"` | ||
19 | + // 文件名 | ||
20 | + FileName string `json:"fileName"` | ||
17 | } | 21 | } |
18 | 22 | ||
19 | func (importDataCommand *ImportDataCommand) Valid(validation *validation.Validation) { | 23 | func (importDataCommand *ImportDataCommand) Valid(validation *validation.Validation) { |
1 | +package query | ||
2 | + | ||
3 | +import "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
4 | + | ||
5 | +type ManufactureEmployeeProductiveQuery struct { | ||
6 | + // 页码 | ||
7 | + PageNumber int `cname:"页码" json:"pageNumber,omitempty"` | ||
8 | + // 页数 | ||
9 | + PageSize int `cname:"页数" json:"pageSize,omitempty"` | ||
10 | + // 车间名称 | ||
11 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
12 | + // 生产线名称 | ||
13 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
14 | + // 工段名称 | ||
15 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
16 | + // 姓名 | ||
17 | + UserName string `cname:"姓名" json:"userName"` | ||
18 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
19 | + EmployeeType string `cname:"员工类型 1:固定 2:派遣 3.临时" json:"employeeType"` | ||
20 | + // 开始时间 | ||
21 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
22 | + // 结束时间 | ||
23 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
24 | + //操作人 | ||
25 | + Operator domain.Operator `json:"-"` | ||
26 | + SelectedField []string `json:"selectedField"` | ||
27 | +} |
pkg/application/web/excelData/query/manufacture_export_employee_attendance_statics_query.go
0 → 100644
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
6 | +) | ||
7 | + | ||
8 | +type ManufactureExportEmployeeAttendanceStaticsQuery struct { | ||
9 | + *allied_creation_manufacture.SearchEmployeeAttendanceStaticsRequest | ||
10 | + //操作人 | ||
11 | + Operator domain.Operator `json:"-"` | ||
12 | + SelectedField []string `json:"selectedField"` | ||
13 | +} |
pkg/application/web/excelData/query/manufacture_export_workshop_attendance_statics_query.go
0 → 100644
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
6 | +) | ||
7 | + | ||
8 | +type ManufactureExportWorkshopAttendanceStaticsQuery struct { | ||
9 | + *allied_creation_manufacture.SearchWorkshopWorkTimeStaticsRequest | ||
10 | + //操作人 | ||
11 | + Operator domain.Operator `json:"-"` | ||
12 | + SelectedField []string `json:"selectedField"` | ||
13 | +} |
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
6 | +) | ||
7 | + | ||
8 | +type ManufactureSecondLevelRecordQuery struct { | ||
9 | + *allied_creation_manufacture.SearchSecondLevelRecordRequest | ||
10 | + //操作人 | ||
11 | + Operator domain.Operator `json:"-"` | ||
12 | + SelectedField []string `json:"selectedField"` | ||
13 | +} |
1 | +package query | ||
2 | + | ||
3 | +import "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
4 | + | ||
5 | +type ManufactureWorkshopProductiveQuery struct { | ||
6 | + // 工段名称 | ||
7 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
8 | + // 品名 | ||
9 | + PlanProductName string `cname:"品名" json:"planProductName,omitempty"` | ||
10 | + // 开始时间 | ||
11 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
12 | + // 结束时间 | ||
13 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
14 | + //操作人 | ||
15 | + Operator domain.Operator `json:"-"` | ||
16 | + SelectedField []string `json:"selectedField"` | ||
17 | +} |
1 | +package query | ||
2 | + | ||
3 | +import "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
4 | + | ||
5 | +type SearchProductQuery struct { | ||
6 | + // 产品名称 | ||
7 | + ProductName string `json:"productName,omitempty"` | ||
8 | + // 产品类别 | ||
9 | + ProductCategory string `cname:"产品类别" json:"productCategory"` | ||
10 | + //操作人 | ||
11 | + Operator domain.Operator `json:"-"` | ||
12 | + SelectedField []string `json:"selectedField"` | ||
13 | +} |
@@ -2,6 +2,7 @@ package service | @@ -2,6 +2,7 @@ package service | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
5 | 6 | ||
6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/query" | 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/query" |
7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" |
@@ -51,3 +52,88 @@ func (srv ExcelDataService) ExportCooperationUser(companyUserListQuery *query.Co | @@ -51,3 +52,88 @@ func (srv ExcelDataService) ExportCooperationUser(companyUserListQuery *query.Co | ||
51 | } | 52 | } |
52 | return ExportCooperationUserData{SourceData: result.Users, SelectedField: companyUserListQuery.SelectedField}, nil | 53 | return ExportCooperationUserData{SourceData: result.Users, SelectedField: companyUserListQuery.SelectedField}, nil |
53 | } | 54 | } |
55 | + | ||
56 | +// ExportCooperationUser 导出共创用户信息列表 | ||
57 | +func (srv ExcelDataService) ExportProducts(cmd *query.SearchProductQuery) (ExportProductsData, error) { | ||
58 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
59 | + result, err := creationUserGateway.SearchProduct(allied_creation_manufacture.SearchProductRequest{ | ||
60 | + ProductName: cmd.ProductName, | ||
61 | + ProductCategory: cmd.ProductCategory, | ||
62 | + }) | ||
63 | + if err != nil { | ||
64 | + return ExportProductsData{}, fmt.Errorf("获取企业用户数据失败:%w", err) | ||
65 | + } | ||
66 | + return ExportProductsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
67 | +} | ||
68 | + | ||
69 | +// ExportEmployeeProductive 导出员工产能 | ||
70 | +func (srv ExcelDataService) ExportEmployeeProductive(cmd *query.ManufactureEmployeeProductiveQuery) (ExportEmployeeProductiveData, error) { | ||
71 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
72 | + result, err := creationUserGateway.SearchEmployeeProductive(allied_creation_manufacture.SearchEmployeeProductiveRequest{ | ||
73 | + WorkshopName: cmd.WorkshopName, | ||
74 | + LineName: cmd.LineName, | ||
75 | + SectionName: cmd.SectionName, | ||
76 | + UserName: cmd.UserName, | ||
77 | + EmployeeType: cmd.EmployeeType, | ||
78 | + BeginTime: cmd.BeginTime, | ||
79 | + EndTime: cmd.EndTime, | ||
80 | + }) | ||
81 | + if err != nil { | ||
82 | + return ExportEmployeeProductiveData{}, fmt.Errorf("获取员工产能数据失败:%w", err) | ||
83 | + } | ||
84 | + return ExportEmployeeProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
85 | +} | ||
86 | + | ||
87 | +// ExportEmployeeProductive 导出车间产能 | ||
88 | +func (srv ExcelDataService) ExportWorkshopProductive(cmd *query.ManufactureWorkshopProductiveQuery) (ExportWorkshopProductiveData, error) { | ||
89 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
90 | + result, err := creationUserGateway.SearchWorkshopProductive(allied_creation_manufacture.SearchWorkshopProductiveRequest{ | ||
91 | + SectionName: cmd.SectionName, | ||
92 | + PlanProductName: cmd.PlanProductName, | ||
93 | + BeginTime: cmd.BeginTime, | ||
94 | + EndTime: cmd.EndTime, | ||
95 | + }) | ||
96 | + if err != nil { | ||
97 | + return ExportWorkshopProductiveData{}, fmt.Errorf("获取员工产能数据失败:%w", err) | ||
98 | + } | ||
99 | + return ExportWorkshopProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
100 | +} | ||
101 | + | ||
102 | +// ExportSecondLevelRecord 二级废品 | ||
103 | +func (srv ExcelDataService) ExportSecondLevelRecord(cmd *query.ManufactureSecondLevelRecordQuery) (ExportSecondLevelData, error) { | ||
104 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
105 | + result, err := creationUserGateway.SearchSecondLevelRecord(allied_creation_manufacture.SearchSecondLevelRecordRequest{ | ||
106 | + WorkshopName: cmd.WorkshopName, | ||
107 | + BatchNumber: cmd.BatchNumber, | ||
108 | + UserName: cmd.UserName, | ||
109 | + LineName: cmd.LineName, | ||
110 | + SectionName: cmd.SectionName, | ||
111 | + EmployeeType: cmd.EmployeeType, | ||
112 | + BeginTime: cmd.BeginTime, | ||
113 | + EndTime: cmd.EndTime, | ||
114 | + }) | ||
115 | + if err != nil { | ||
116 | + return ExportSecondLevelData{}, fmt.Errorf("获取二级废品数据失败:%w", err) | ||
117 | + } | ||
118 | + return ExportSecondLevelData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
119 | +} | ||
120 | + | ||
121 | +// ExportEmployeeAttendanceStatics 导出员工工时 | ||
122 | +func (srv ExcelDataService) ExportEmployeeAttendanceStatics(cmd *query.ManufactureExportEmployeeAttendanceStaticsQuery) (ExportEmployeeAttendanceStaticsData, error) { | ||
123 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
124 | + result, err := creationUserGateway.SearchEmployeeAttendanceStatics(*cmd.SearchEmployeeAttendanceStaticsRequest) | ||
125 | + if err != nil { | ||
126 | + return ExportEmployeeAttendanceStaticsData{}, fmt.Errorf("获取员工工时数据失败:%w", err) | ||
127 | + } | ||
128 | + return ExportEmployeeAttendanceStaticsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
129 | +} | ||
130 | + | ||
131 | +// ExportWorkshopAttendanceStatics 导出车间工时 | ||
132 | +func (srv ExcelDataService) ExportWorkshopAttendanceStatics(cmd *query.ManufactureExportWorkshopAttendanceStaticsQuery) (ExportWorkshopAttendanceStaticsData, error) { | ||
133 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
134 | + result, err := creationUserGateway.SearchWorkshopWorkTimeStatics(*cmd.SearchWorkshopWorkTimeStaticsRequest) | ||
135 | + if err != nil { | ||
136 | + return ExportWorkshopAttendanceStaticsData{}, fmt.Errorf("获取车间工时数据失败:%w", err) | ||
137 | + } | ||
138 | + return ExportWorkshopAttendanceStaticsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
139 | +} |
1 | package service | 1 | package service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "bytes" | ||
5 | + "encoding/json" | ||
4 | "fmt" | 6 | "fmt" |
5 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/util/converter" | ||
6 | - "strings" | ||
7 | - | ||
8 | "github.com/linmadan/egglib-go/core/application" | 7 | "github.com/linmadan/egglib-go/core/application" |
9 | "github.com/linmadan/egglib-go/utils/excel" | 8 | "github.com/linmadan/egglib-go/utils/excel" |
9 | + "github.com/xuri/excelize/v2" | ||
10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/command" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/command" |
11 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/query" | ||
11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | 12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" |
12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/domainService" | 13 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/domainService" |
14 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
13 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | 15 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" |
16 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/cost_structured" | ||
17 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/util/converter" | ||
18 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/util/oss" | ||
19 | + "io" | ||
20 | + "strings" | ||
14 | ) | 21 | ) |
15 | 22 | ||
16 | type ExcelDataService struct { | 23 | type ExcelDataService struct { |
@@ -90,6 +97,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | @@ -90,6 +97,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | ||
90 | {EnName: "department", CnName: "*所属部门"}, | 97 | {EnName: "department", CnName: "*所属部门"}, |
91 | {EnName: "enableStatus", CnName: "*用户状态"}, | 98 | {EnName: "enableStatus", CnName: "*用户状态"}, |
92 | {EnName: "phone", CnName: "*手机号"}, | 99 | {EnName: "phone", CnName: "*手机号"}, |
100 | + {EnName: "employeeType", CnName: "*员工类型"}, | ||
101 | + {EnName: "icCardNumber", CnName: "IC卡号"}, | ||
93 | {EnName: "email", CnName: "邮箱"}, | 102 | {EnName: "email", CnName: "邮箱"}, |
94 | } | 103 | } |
95 | excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | 104 | excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader) |
@@ -111,6 +120,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | @@ -111,6 +120,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | ||
111 | Phone: strings.TrimSpace(v["phone"]), | 120 | Phone: strings.TrimSpace(v["phone"]), |
112 | Email: strings.TrimSpace(v["email"]), | 121 | Email: strings.TrimSpace(v["email"]), |
113 | EnableStatus: strings.TrimSpace(v["enableStatus"]), | 122 | EnableStatus: strings.TrimSpace(v["enableStatus"]), |
123 | + EmployeeType: strings.TrimSpace(v["employeeType"]), | ||
124 | + IcCardNumber: strings.TrimSpace(v["icCardNumber"]), | ||
114 | } | 125 | } |
115 | users = append(users, item) | 126 | users = append(users, item) |
116 | } | 127 | } |
@@ -161,6 +172,247 @@ func (srv ExcelDataService) ImportOrganization(importDataCommand *command.Import | @@ -161,6 +172,247 @@ func (srv ExcelDataService) ImportOrganization(importDataCommand *command.Import | ||
161 | return srv.importResultWithHeader(excelImport.DataFields, result.FailRows, len(items)), nil | 172 | return srv.importResultWithHeader(excelImport.DataFields, result.FailRows, len(items)), nil |
162 | } | 173 | } |
163 | 174 | ||
175 | +// ImportProduct 导入生产信息 | ||
176 | +func (srv ExcelDataService) ImportProduct(importDataCommand *command.ImportDataCommand) (interface{}, error) { | ||
177 | + excelImport := excel.NewExcelImport() | ||
178 | + excelImport.RowBegin = 3 //第二行开始读取 | ||
179 | + excelImport.DataFields = []excel.DataField{ | ||
180 | + {EnName: "productCode", CnName: "产品编号"}, | ||
181 | + {EnName: "productName", CnName: "*品名"}, | ||
182 | + {EnName: "unit", CnName: "*规格"}, | ||
183 | + {EnName: "productCategory", CnName: "*类别"}, | ||
184 | + {EnName: "unitWeight", CnName: "投入单份重量"}, | ||
185 | + } | ||
186 | + excelData, err := converter.OpenImportFileFromIoReader(excelImport, importDataCommand.Reader, importDataCommand.FileExt) //excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | ||
187 | + if err != nil { | ||
188 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
189 | + } | ||
190 | + items := make([]*domain.ImportProductItem, 0) | ||
191 | + for _, v := range excelData { | ||
192 | + item := &domain.ImportProductItem{ | ||
193 | + ProductCode: strings.TrimSpace(v["productCode"]), | ||
194 | + ProductName: strings.TrimSpace(v["productName"]), | ||
195 | + ProductCategory: strings.TrimSpace(v["productCategory"]), | ||
196 | + Unit: strings.TrimSpace(v["unit"]), | ||
197 | + UnitWeight: strings.TrimSpace(v["unitWeight"]), | ||
198 | + } | ||
199 | + items = append(items, item) | ||
200 | + } | ||
201 | + | ||
202 | + svr := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(importDataCommand.Operator) | ||
203 | + result, err := svr.BatchAddProduct(allied_creation_manufacture.BatchAddProductRequest{ | ||
204 | + List: items, | ||
205 | + }) | ||
206 | + if err != nil { | ||
207 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
208 | + } | ||
209 | + return srv.importResultWithHeader(excelImport.DataFields, *result, len(items)), nil | ||
210 | +} | ||
211 | + | ||
212 | +// ImportProduct 导入生产信息 | ||
213 | +func (srv ExcelDataService) ImportDevice(importDataCommand *command.ImportDataCommand) (interface{}, error) { | ||
214 | + excelImport := excel.NewExcelImport() | ||
215 | + excelImport.RowBegin = 3 //第二行开始读取 | ||
216 | + excelImport.DataFields = []excel.DataField{ | ||
217 | + {EnName: "deviceCode", CnName: "*设备编号"}, | ||
218 | + {EnName: "deviceName", CnName: "*设备名称"}, | ||
219 | + {EnName: "deviceModel", CnName: "*设备型号"}, | ||
220 | + {EnName: "deviceType", CnName: "*设备类型"}, | ||
221 | + {EnName: "brand", CnName: "品牌"}, | ||
222 | + {EnName: "status", CnName: "*状态"}, | ||
223 | + {EnName: "level", CnName: "*风险等级"}, | ||
224 | + } | ||
225 | + excelData, err := converter.OpenImportFileFromIoReader(excelImport, importDataCommand.Reader, importDataCommand.FileExt) //excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | ||
226 | + if err != nil { | ||
227 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
228 | + } | ||
229 | + items := make([]*domain.ImportDeviceItem, 0) | ||
230 | + for _, v := range excelData { | ||
231 | + item := &domain.ImportDeviceItem{ | ||
232 | + DeviceCode: strings.TrimSpace(v["deviceCode"]), | ||
233 | + DeviceName: strings.TrimSpace(v["deviceName"]), | ||
234 | + DeviceModel: strings.TrimSpace(v["deviceModel"]), | ||
235 | + DeviceType: strings.TrimSpace(v["deviceType"]), | ||
236 | + Brand: strings.TrimSpace(v["brand"]), | ||
237 | + Status: strings.TrimSpace(v["status"]), | ||
238 | + Level: strings.TrimSpace(v["level"]), | ||
239 | + } | ||
240 | + items = append(items, item) | ||
241 | + } | ||
242 | + | ||
243 | + svr := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(importDataCommand.Operator) | ||
244 | + result, err := svr.BatchAddDevice(allied_creation_manufacture.BatchAddDeviceRequest{ | ||
245 | + List: items, | ||
246 | + }) | ||
247 | + if err != nil { | ||
248 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
249 | + } | ||
250 | + return srv.importResultWithHeader(excelImport.DataFields, *result, len(items)), nil | ||
251 | +} | ||
252 | + | ||
253 | +// ImportCost 导入成本结构化 | ||
254 | +func (srv ExcelDataService) ImportCost(importDataCommand *command.ImportDataCommand) (interface{}, error) { | ||
255 | + excelImport := excel.NewExcelImport() | ||
256 | + excelImport.RowBegin = 2 //第二行开始读取 | ||
257 | + excelImport.DataFields = []excel.DataField{ | ||
258 | + {EnName: "projectCode", CnName: "*项目编码"}, | ||
259 | + {EnName: "itemName", CnName: "*细项名称"}, | ||
260 | + {EnName: "choiceId", CnName: "*节点类型"}, | ||
261 | + {EnName: "text", CnName: "文本(数值)内容"}, | ||
262 | + {EnName: "image1", CnName: "图片1"}, | ||
263 | + {EnName: "image2", CnName: "图片2"}, | ||
264 | + {EnName: "image3", CnName: "图片3"}, | ||
265 | + {EnName: "formula", CnName: "计算公式"}, | ||
266 | + {EnName: "chargePersons", CnName: "*负责人"}, | ||
267 | + {EnName: "target", CnName: "目标值"}, | ||
268 | + {EnName: "targetPeriod", CnName: "目标值期限"}, | ||
269 | + {EnName: "present", CnName: "现状值"}, | ||
270 | + {EnName: "schedulePlanPercent", CnName: "进度计划比"}, | ||
271 | + {EnName: "benchmark", CnName: "标杆值"}, | ||
272 | + {EnName: "highest", CnName: "历史最高值"}, | ||
273 | + {EnName: "yesterdayActual", CnName: "昨日实际值"}, | ||
274 | + } | ||
275 | + var buf bytes.Buffer | ||
276 | + tee := io.TeeReader(importDataCommand.Reader, &buf) | ||
277 | + excelData, err := converter.OpenImportFileFromIoReader(excelImport, tee, importDataCommand.FileExt) //excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | ||
278 | + if err != nil { | ||
279 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
280 | + } | ||
281 | + importCostCommand := &command.ImportCostDataCommand{} | ||
282 | + err = json.Unmarshal([]byte(importDataCommand.Where), importCostCommand) | ||
283 | + if err != nil { | ||
284 | + return nil, application.ThrowError(application.ARG_ERROR, "风险类型不能为空") | ||
285 | + } | ||
286 | + if importCostCommand.Types <= 0 { | ||
287 | + return nil, application.ThrowError(application.ARG_ERROR, "风险类型不能为空") | ||
288 | + } | ||
289 | + f, err := excelize.OpenReader(&buf) | ||
290 | + if err != nil { | ||
291 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
292 | + } | ||
293 | + index := f.GetActiveSheetIndex() | ||
294 | + //获取公司下所有用户 | ||
295 | + users, err := allied_creation_user.NewHttplibAlliedCreationUser(importDataCommand.Operator).UserSearch(allied_creation_user.ReqUserSearch{CompanyId: importDataCommand.Operator.CompanyId, Limit: 10000}) | ||
296 | + if err != nil { | ||
297 | + return nil, application.ThrowError(application.ARG_ERROR, "获取用户数据失败") | ||
298 | + } | ||
299 | + userMap := make(map[string]allied_creation_user.UserDetail) | ||
300 | + for _, item := range users.Users { | ||
301 | + userMap[item.UserInfo.UserName] = item | ||
302 | + } | ||
303 | + createCostManagemant := cost_structured.BatchAddCostManagemantRequest{ | ||
304 | + BatchCreateCostManagemant: &domain.BatchCreateCostManagemant{ | ||
305 | + UserId: importDataCommand.Operator.UserId, | ||
306 | + CompanyId: importDataCommand.Operator.CompanyId, | ||
307 | + ProjectName: importDataCommand.FileName, | ||
308 | + Types: importCostCommand.Types, | ||
309 | + CostManagemants: make([]*domain.CostManagemant, 0), | ||
310 | + }, | ||
311 | + } | ||
312 | + for key, v := range excelData { | ||
313 | + //图片1 | ||
314 | + _, mBytes1, err := f.GetPicture(f.GetSheetName(index), "E"+fmt.Sprintf("%v", excelImport.RowBegin+key+1)) | ||
315 | + if err != nil { | ||
316 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "读取图片失败") | ||
317 | + } | ||
318 | + var ossFile []string | ||
319 | + if mBytes1 != nil { | ||
320 | + ossFile1, err := oss.UploadOss(mBytes1) | ||
321 | + if err != nil { | ||
322 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "上传图片失败") | ||
323 | + } | ||
324 | + ossFile = append(ossFile,ossFile1) | ||
325 | + } | ||
326 | + //图片2 | ||
327 | + _,mBytes2,err := f.GetPicture(f.GetSheetName(index), "F"+fmt.Sprintf("%v", excelImport.RowBegin+key+1)) | ||
328 | + if err != nil { | ||
329 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "读取图片失败") | ||
330 | + } | ||
331 | + if mBytes2 != nil { | ||
332 | + ossFile2, err := oss.UploadOss(mBytes2) | ||
333 | + if err != nil { | ||
334 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "上传图片失败") | ||
335 | + } | ||
336 | + ossFile = append(ossFile,ossFile2) | ||
337 | + } | ||
338 | + //图片3 | ||
339 | + _,mBytes3,err := f.GetPicture(f.GetSheetName(index), "G"+fmt.Sprintf("%v", excelImport.RowBegin+key+1)) | ||
340 | + if err != nil { | ||
341 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "读取图片失败") | ||
342 | + } | ||
343 | + if mBytes3 != nil { | ||
344 | + ossFile3, err := oss.UploadOss(mBytes3) | ||
345 | + if err != nil { | ||
346 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "上传图片失败") | ||
347 | + } | ||
348 | + ossFile = append(ossFile,ossFile3) | ||
349 | + } | ||
350 | + //choiceId, err := strconv.Atoi(v["choiceId"]) | ||
351 | + choiceId := domain.NodeType{}.GetIdByName(strings.TrimSpace(v["choiceId"])) | ||
352 | + // 负责人 | ||
353 | + chargePersons := make([]string, 0) | ||
354 | + names := strings.Split(strings.TrimSpace(v["chargePersons"]), " ") | ||
355 | + | ||
356 | + for _, userName := range names { | ||
357 | + if userName == "" { | ||
358 | + continue | ||
359 | + } | ||
360 | + if user, ok := userMap[userName]; ok { | ||
361 | + chargePersons = append(chargePersons, fmt.Sprintf("%v", user.UserId)) | ||
362 | + } else { | ||
363 | + chargePersons = append(chargePersons, "0") | ||
364 | + } | ||
365 | + } | ||
366 | + //目标值期限 | ||
367 | + targetPeriod := domain.GetTargetPeriod(v["targetPeriod"]) | ||
368 | + item := &domain.CostManagemant{ | ||
369 | + ProjectCode: strings.TrimSpace(v["projectCode"]), | ||
370 | + ProjectName: importDataCommand.FileName, | ||
371 | + ItemName: strings.TrimSpace(v["itemName"]), | ||
372 | + ChoiceId: choiceId, | ||
373 | + Text: strings.TrimSpace(v["text"]), | ||
374 | + Formula: strings.TrimSpace(v["formula"]), | ||
375 | + ChargePersons: chargePersons, | ||
376 | + Target: strings.TrimSpace(v["target"]), | ||
377 | + TargetPeriod: targetPeriod, | ||
378 | + Present: strings.TrimSpace(v["present"]), | ||
379 | + SchedulePlanPercent: strings.TrimSpace(v["schedulePlanPercent"]), | ||
380 | + Benchmark: strings.TrimSpace(v["benchmark"]), | ||
381 | + Highest: strings.TrimSpace(v["highest"]), | ||
382 | + YesterdayActual: strings.TrimSpace(v["yesterdayActual"]), | ||
383 | + Types: importCostCommand.Types, | ||
384 | + } | ||
385 | + if len(ossFile) >0 { | ||
386 | + item.Urls = ossFile | ||
387 | + } else { | ||
388 | + item.Urls = []string{} | ||
389 | + } | ||
390 | + createCostManagemant.CostManagemants = append(createCostManagemant.CostManagemants, item) | ||
391 | + } | ||
392 | + result, err := cost_structured.NewHttpLibCostStructured(importDataCommand.Operator).BatchCreateCostManagemant(createCostManagemant) | ||
393 | + if err != nil { | ||
394 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
395 | + } | ||
396 | + if result.Code != 0 { | ||
397 | + return map[string]interface{}{ | ||
398 | + "successCount": 0, | ||
399 | + "fail": map[string]interface{}{ | ||
400 | + "header": map[string]string{ | ||
401 | + "failReason": "错误详情", | ||
402 | + "projectCode": "项目编码", | ||
403 | + "itemName": "细项名称", | ||
404 | + }, | ||
405 | + "body": []map[string]interface{}{ | ||
406 | + {"failReason":result.Msg,"projectCode":"","itemName":""}, | ||
407 | + }, | ||
408 | + }, | ||
409 | + "successData":nil, | ||
410 | + }, nil | ||
411 | + } else { | ||
412 | + return result.Data, nil | ||
413 | + } | ||
414 | +} | ||
415 | + | ||
164 | // 导入结果 | 416 | // 导入结果 |
165 | func (srv ExcelDataService) importResultWithHeader(headers []excel.DataField, failRows []interface{}, totalRow int) interface{} { | 417 | func (srv ExcelDataService) importResultWithHeader(headers []excel.DataField, failRows []interface{}, totalRow int) interface{} { |
166 | var result = map[string]interface{}{ | 418 | var result = map[string]interface{}{ |
@@ -199,11 +451,14 @@ func (srv ExcelDataService) fieldValueAllEmpty(param map[string]string) bool { | @@ -199,11 +451,14 @@ func (srv ExcelDataService) fieldValueAllEmpty(param map[string]string) bool { | ||
199 | // FileImportTemplate 导入模板 | 451 | // FileImportTemplate 导入模板 |
200 | func (srv ExcelDataService) FileImportTemplate(importDataCommand *command.ImportDataCommand) (interface{}, error) { | 452 | func (srv ExcelDataService) FileImportTemplate(importDataCommand *command.ImportDataCommand) (interface{}, error) { |
201 | var mapTemplate = map[string]string{ | 453 | var mapTemplate = map[string]string{ |
202 | - domain.ImportCompanyUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807485_EaxECeRz23WpzrMZmbwdEPRJ3Pdxpx5X.xlsx", | 454 | + domain.ImportCompanyUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/opportunity/dev_online/20220222/object/1645495589_cFNDGRTfCxYMZ5hPYzfKxThYd3ywARRz.xlsx", |
203 | domain.ImportOrganization: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807490_r2XWhGmbWWmpbeePBkZ3EJQFKcZEMpEm.xlsx", | 455 | domain.ImportOrganization: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807490_r2XWhGmbWWmpbeePBkZ3EJQFKcZEMpEm.xlsx", |
204 | domain.ImportDividendsOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210927/object/1632743206_NPYTKw6RGhXn4TpYNEQhGGdCkXKXTnxM.xlsx", | 456 | domain.ImportDividendsOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210927/object/1632743206_NPYTKw6RGhXn4TpYNEQhGGdCkXKXTnxM.xlsx", |
205 | domain.ImportCooperationUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210926/object/1632635345_SbfzmkXjQHhCwPw4MB7zb5EBBtdp2MSE.xlsx", | 457 | domain.ImportCooperationUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210926/object/1632635345_SbfzmkXjQHhCwPw4MB7zb5EBBtdp2MSE.xlsx", |
206 | domain.ImportDividendsReturnOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210927/object/1632743214_rNHm6ZBXZaC5xKTrsE7M4h45MY6n6Ff3.xlsx", | 458 | domain.ImportDividendsReturnOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210927/object/1632743214_rNHm6ZBXZaC5xKTrsE7M4h45MY6n6Ff3.xlsx", |
459 | + domain.ImportProducts: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20220120/object/1642670543_cbraNKjNPHcbN6RNBYQBrwhC7BXGbDWp.xlsx", | ||
460 | + domain.ImportDevices: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20220126/object/1643184320_hT6sY5BKHmBa4TynfSGSCGyZ2KTTtzkj.xlsx", | ||
461 | + domain.ImportCosts: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/test/20220318/object/1647587204_B5azRmr2TB73jRKWsnFyDe4yxXJWnrDT.xlsx", | ||
207 | } | 462 | } |
208 | var url string | 463 | var url string |
209 | var ok bool | 464 | var ok bool |
@@ -215,9 +470,9 @@ func (srv ExcelDataService) FileImportTemplate(importDataCommand *command.Import | @@ -215,9 +470,9 @@ func (srv ExcelDataService) FileImportTemplate(importDataCommand *command.Import | ||
215 | }, nil | 470 | }, nil |
216 | } | 471 | } |
217 | 472 | ||
218 | -func (srv ExcelDataService) GetExcelDataFields(code string) (interface{}, error) { | 473 | +func (srv ExcelDataService) GetExcelDataFields(param *query.ExcelDataFieldsQuery) (interface{}, error) { |
219 | dataFileds := []DataFieldOptions{} | 474 | dataFileds := []DataFieldOptions{} |
220 | - switch code { | 475 | + switch param.Code { |
221 | case domain.ExportCompanyUser: | 476 | case domain.ExportCompanyUser: |
222 | dataFileds = (ExportCompanyUserData{}).AllFields() | 477 | dataFileds = (ExportCompanyUserData{}).AllFields() |
223 | case domain.ExportCooperationUser: | 478 | case domain.ExportCooperationUser: |
1 | package service | 1 | package service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "fmt" | ||
4 | "github.com/linmadan/egglib-go/utils/excel" | 5 | "github.com/linmadan/egglib-go/utils/excel" |
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
5 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" |
6 | ) | 9 | ) |
7 | 10 | ||
@@ -175,3 +178,461 @@ func (data ExportCooperationUserData) DataListLen() int { | @@ -175,3 +178,461 @@ func (data ExportCooperationUserData) DataListLen() int { | ||
175 | func (data ExportCooperationUserData) TableTitle() []string { | 178 | func (data ExportCooperationUserData) TableTitle() []string { |
176 | return nil | 179 | return nil |
177 | } | 180 | } |
181 | + | ||
182 | +//ExportProductsData 导出产品数据 | ||
183 | +type ExportProductsData struct { | ||
184 | + SourceData []allied_creation_manufacture.SearchProductItem | ||
185 | + SelectedField []string | ||
186 | +} | ||
187 | + | ||
188 | +var _ excel.ExcelMaker = (*ExportProductsData)(nil) | ||
189 | + | ||
190 | +func (data ExportProductsData) AllFields() []DataFieldOptions { | ||
191 | + return []DataFieldOptions{ | ||
192 | + {EnName: "productCode", CnName: "产品编号"}, | ||
193 | + {EnName: "productName", CnName: "*品名"}, | ||
194 | + {EnName: "unit", CnName: "*规格"}, | ||
195 | + {EnName: "productCategory", CnName: "*类别"}, | ||
196 | + {EnName: "unitWeight", CnName: "投入单份重量"}, | ||
197 | + } | ||
198 | +} | ||
199 | + | ||
200 | +func (data ExportProductsData) DataFieldList() []excel.DataField { | ||
201 | + fields := []excel.DataField{} | ||
202 | + allFields := data.AllFields() | ||
203 | + for _, value2 := range allFields { | ||
204 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
205 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
206 | + continue | ||
207 | + } | ||
208 | + for _, value3 := range data.SelectedField { | ||
209 | + if value2.EnName == value3 { | ||
210 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
211 | + } | ||
212 | + } | ||
213 | + } | ||
214 | + return fields | ||
215 | +} | ||
216 | + | ||
217 | +func (data ExportProductsData) CellValue(index int, enName string) (value interface{}) { | ||
218 | + if index > data.DataListLen() { | ||
219 | + return "" | ||
220 | + } | ||
221 | + switch enName { | ||
222 | + case "productCode": | ||
223 | + return data.SourceData[index].ProductCode | ||
224 | + case "productName": | ||
225 | + return data.SourceData[index].ProductName | ||
226 | + case "unit": | ||
227 | + return data.SourceData[index].Unit | ||
228 | + case "productCategory": | ||
229 | + return data.SourceData[index].ProductCategory | ||
230 | + case "unitWeight": | ||
231 | + return fmt.Sprintf("%v", data.SourceData[index].UnitWeight) | ||
232 | + } | ||
233 | + return nil | ||
234 | +} | ||
235 | + | ||
236 | +func (data ExportProductsData) DataListLen() int { | ||
237 | + return len(data.SourceData) | ||
238 | +} | ||
239 | + | ||
240 | +func (data ExportProductsData) TableTitle() []string { | ||
241 | + return nil | ||
242 | +} | ||
243 | + | ||
244 | +//ExportEmployeeProductiveData 导出员工产能数据 | ||
245 | +type ExportEmployeeProductiveData struct { | ||
246 | + SourceData []allied_creation_manufacture.EmployeeProductiveItem | ||
247 | + SelectedField []string | ||
248 | +} | ||
249 | + | ||
250 | +var _ excel.ExcelMaker = (*ExportEmployeeProductiveData)(nil) | ||
251 | + | ||
252 | +func (data ExportEmployeeProductiveData) AllFields() []DataFieldOptions { | ||
253 | + return []DataFieldOptions{ | ||
254 | + {EnName: "createdAt", CnName: "日期"}, | ||
255 | + {EnName: "workshopName", CnName: "车间名称"}, | ||
256 | + {EnName: "lineName", CnName: "线别"}, | ||
257 | + {EnName: "sectionName", CnName: "工段"}, | ||
258 | + {EnName: "workOn", CnName: "班别"}, | ||
259 | + {EnName: "userName", CnName: "姓名"}, | ||
260 | + {EnName: "employeeType", CnName: "员工类型"}, | ||
261 | + {EnName: "participateType", CnName: "类别"}, | ||
262 | + {EnName: "planProductName", CnName: "品名"}, | ||
263 | + {EnName: "productWeigh", CnName: "产能"}, | ||
264 | + {EnName: "secondLevelWeigh", CnName: "二级品"}, | ||
265 | + {EnName: "qualificationRate", CnName: "合格率"}, | ||
266 | + {EnName: "orgName", CnName: "组织机构"}, | ||
267 | + } | ||
268 | +} | ||
269 | + | ||
270 | +func (data ExportEmployeeProductiveData) DataFieldList() []excel.DataField { | ||
271 | + fields := []excel.DataField{} | ||
272 | + allFields := data.AllFields() | ||
273 | + for _, value2 := range allFields { | ||
274 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
275 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
276 | + continue | ||
277 | + } | ||
278 | + for _, value3 := range data.SelectedField { | ||
279 | + if value2.EnName == value3 { | ||
280 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
281 | + } | ||
282 | + } | ||
283 | + } | ||
284 | + return fields | ||
285 | +} | ||
286 | + | ||
287 | +func (data ExportEmployeeProductiveData) CellValue(index int, enName string) (value interface{}) { | ||
288 | + if index > data.DataListLen() { | ||
289 | + return "" | ||
290 | + } | ||
291 | + switch enName { | ||
292 | + case "createdAt": | ||
293 | + return data.SourceData[index].CreatedAt | ||
294 | + case "workshopName": | ||
295 | + return data.SourceData[index].WorkshopName | ||
296 | + case "lineName": | ||
297 | + return data.SourceData[index].LineName | ||
298 | + case "sectionName": | ||
299 | + return data.SourceData[index].SectionName | ||
300 | + case "workOn": | ||
301 | + return data.SourceData[index].WorkOn | ||
302 | + case "userName": | ||
303 | + return data.SourceData[index].ProductWorker.UserName | ||
304 | + case "employeeType": | ||
305 | + return domain.EmployeeTypeDescription(data.SourceData[index].ProductWorker.EmployeeType) | ||
306 | + case "participateType": | ||
307 | + return domain.ParticipateTypeDescription(data.SourceData[index].ParticipateType) | ||
308 | + case "planProductName": | ||
309 | + return data.SourceData[index].PlanProductName | ||
310 | + case "productWeigh": | ||
311 | + return fmt.Sprintf("%vKg", data.SourceData[index].ProductWeigh) | ||
312 | + case "secondLevelWeigh": | ||
313 | + return fmt.Sprintf("%vKg", data.SourceData[index].SecondLevelWeigh) | ||
314 | + case "qualificationRate": | ||
315 | + return fmt.Sprintf("%v%%", data.SourceData[index].QualificationRate) | ||
316 | + case "orgName": | ||
317 | + return data.SourceData[index].OrgName | ||
318 | + } | ||
319 | + return nil | ||
320 | +} | ||
321 | + | ||
322 | +func (data ExportEmployeeProductiveData) DataListLen() int { | ||
323 | + return len(data.SourceData) | ||
324 | +} | ||
325 | + | ||
326 | +func (data ExportEmployeeProductiveData) TableTitle() []string { | ||
327 | + return nil | ||
328 | +} | ||
329 | + | ||
330 | +//ExportWorkshopProductiveData 导出员工产能数据 | ||
331 | +type ExportWorkshopProductiveData struct { | ||
332 | + SourceData []allied_creation_manufacture.WorkshopProductiveItem | ||
333 | + SelectedField []string | ||
334 | +} | ||
335 | + | ||
336 | +var _ excel.ExcelMaker = (*ExportWorkshopProductiveData)(nil) | ||
337 | + | ||
338 | +func (data ExportWorkshopProductiveData) AllFields() []DataFieldOptions { | ||
339 | + return []DataFieldOptions{ | ||
340 | + {EnName: "createdAt", CnName: "日期"}, | ||
341 | + {EnName: "batchNumber", CnName: "批次号"}, | ||
342 | + {EnName: "workshopName", CnName: "车间名称"}, | ||
343 | + {EnName: "lineName", CnName: "线别"}, | ||
344 | + {EnName: "sectionName", CnName: "工段"}, | ||
345 | + {EnName: "planProductName", CnName: "品名"}, | ||
346 | + {EnName: "devotedProductWeigh", CnName: "投入量"}, | ||
347 | + {EnName: "productWeigh", CnName: "产出量"}, | ||
348 | + {EnName: "secondLevelWeigh", CnName: "二级品"}, | ||
349 | + {EnName: "qualificationRate", CnName: "出品率"}, | ||
350 | + {EnName: "orgName", CnName: "组织机构"}, | ||
351 | + } | ||
352 | +} | ||
353 | + | ||
354 | +func (data ExportWorkshopProductiveData) DataFieldList() []excel.DataField { | ||
355 | + fields := []excel.DataField{} | ||
356 | + allFields := data.AllFields() | ||
357 | + for _, value2 := range allFields { | ||
358 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
359 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
360 | + continue | ||
361 | + } | ||
362 | + for _, value3 := range data.SelectedField { | ||
363 | + if value2.EnName == value3 { | ||
364 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
365 | + } | ||
366 | + } | ||
367 | + } | ||
368 | + return fields | ||
369 | +} | ||
370 | + | ||
371 | +func (data ExportWorkshopProductiveData) CellValue(index int, enName string) (value interface{}) { | ||
372 | + if index > data.DataListLen() { | ||
373 | + return "" | ||
374 | + } | ||
375 | + switch enName { | ||
376 | + case "createdAt": | ||
377 | + return data.SourceData[index].CreatedAt | ||
378 | + case "batchNumber": | ||
379 | + return data.SourceData[index].BatchNumber | ||
380 | + case "workshopName": | ||
381 | + return data.SourceData[index].WorkshopName | ||
382 | + case "lineName": | ||
383 | + return data.SourceData[index].LineName | ||
384 | + case "sectionName": | ||
385 | + return data.SourceData[index].SectionName | ||
386 | + case "userName": | ||
387 | + return data.SourceData[index].ProductWorker.UserName | ||
388 | + case "planProductName": | ||
389 | + return data.SourceData[index].PlanProductName | ||
390 | + case "devotedProductWeigh": | ||
391 | + return fmt.Sprintf("%vKg", data.SourceData[index].DevotedProductWeigh) | ||
392 | + case "productWeigh": | ||
393 | + return fmt.Sprintf("%vKg", data.SourceData[index].ProductWeigh) | ||
394 | + case "secondLevelWeigh": | ||
395 | + return fmt.Sprintf("%vKg", data.SourceData[index].SecondLevelWeigh) | ||
396 | + case "qualificationRate": | ||
397 | + return fmt.Sprintf("%v%%", data.SourceData[index].QualificationRate) | ||
398 | + case "orgName": | ||
399 | + return data.SourceData[index].OrgName | ||
400 | + } | ||
401 | + return nil | ||
402 | +} | ||
403 | + | ||
404 | +func (data ExportWorkshopProductiveData) DataListLen() int { | ||
405 | + return len(data.SourceData) | ||
406 | +} | ||
407 | + | ||
408 | +func (data ExportWorkshopProductiveData) TableTitle() []string { | ||
409 | + return nil | ||
410 | +} | ||
411 | + | ||
412 | +//ExportEmployeeAttendanceStaticsData 导出员工产能数据 | ||
413 | +type ExportEmployeeAttendanceStaticsData struct { | ||
414 | + SourceData []allied_creation_manufacture.SearchEmployeeAttendanceStaticsItem | ||
415 | + SelectedField []string | ||
416 | +} | ||
417 | + | ||
418 | +var _ excel.ExcelMaker = (*ExportEmployeeAttendanceStaticsData)(nil) | ||
419 | + | ||
420 | +func (data ExportEmployeeAttendanceStaticsData) AllFields() []DataFieldOptions { | ||
421 | + return []DataFieldOptions{ | ||
422 | + {EnName: "signDate", CnName: "日期"}, | ||
423 | + {EnName: "workshopName", CnName: "车间名称"}, | ||
424 | + {EnName: "lineName", CnName: "线别"}, | ||
425 | + {EnName: "sectionName", CnName: "工段"}, | ||
426 | + {EnName: "userName", CnName: "姓名"}, | ||
427 | + {EnName: "employeeTypeDescription", CnName: "员工类型"}, | ||
428 | + {EnName: "attendanceTypeDescription", CnName: "类别"}, | ||
429 | + {EnName: "workTime", CnName: "工时"}, | ||
430 | + {EnName: "attendanceStatusDescription", CnName: "状态"}, | ||
431 | + {EnName: "orgName", CnName: "组织机构"}, | ||
432 | + } | ||
433 | +} | ||
434 | + | ||
435 | +func (data ExportEmployeeAttendanceStaticsData) DataFieldList() []excel.DataField { | ||
436 | + fields := []excel.DataField{} | ||
437 | + allFields := data.AllFields() | ||
438 | + for _, value2 := range allFields { | ||
439 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
440 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
441 | + continue | ||
442 | + } | ||
443 | + for _, value3 := range data.SelectedField { | ||
444 | + if value2.EnName == value3 { | ||
445 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
446 | + } | ||
447 | + } | ||
448 | + } | ||
449 | + return fields | ||
450 | +} | ||
451 | + | ||
452 | +func (data ExportEmployeeAttendanceStaticsData) CellValue(index int, enName string) (value interface{}) { | ||
453 | + if index > data.DataListLen() { | ||
454 | + return "" | ||
455 | + } | ||
456 | + switch enName { | ||
457 | + case "signDate": | ||
458 | + return data.SourceData[index].SignDate | ||
459 | + case "workshopName": | ||
460 | + return data.SourceData[index].WorkshopName | ||
461 | + case "lineName": | ||
462 | + return data.SourceData[index].LineName | ||
463 | + case "sectionName": | ||
464 | + return data.SourceData[index].SectionName | ||
465 | + case "userName": | ||
466 | + return data.SourceData[index].ProductWorker.UserName | ||
467 | + case "employeeTypeDescription": | ||
468 | + return data.SourceData[index].EmployeeTypeDescription | ||
469 | + case "attendanceTypeDescription": | ||
470 | + return data.SourceData[index].AttendanceTypeDescription | ||
471 | + case "workTime": | ||
472 | + return fmt.Sprintf("%vh", data.SourceData[index].WorkTime) | ||
473 | + case "attendanceStatusDescription": | ||
474 | + return data.SourceData[index].AttendanceStatusDescription | ||
475 | + case "orgName": | ||
476 | + return data.SourceData[index].OrgName | ||
477 | + } | ||
478 | + return nil | ||
479 | +} | ||
480 | + | ||
481 | +func (data ExportEmployeeAttendanceStaticsData) DataListLen() int { | ||
482 | + return len(data.SourceData) | ||
483 | +} | ||
484 | + | ||
485 | +func (data ExportEmployeeAttendanceStaticsData) TableTitle() []string { | ||
486 | + return nil | ||
487 | +} | ||
488 | + | ||
489 | +//ExportWorkshopAttendanceStaticsData 导出车间工时统计 | ||
490 | +type ExportWorkshopAttendanceStaticsData struct { | ||
491 | + SourceData []allied_creation_manufacture.SearchWorkshopWorkTimeStaticsItem | ||
492 | + SelectedField []string | ||
493 | +} | ||
494 | + | ||
495 | +var _ excel.ExcelMaker = (*ExportWorkshopAttendanceStaticsData)(nil) | ||
496 | + | ||
497 | +func (data ExportWorkshopAttendanceStaticsData) AllFields() []DataFieldOptions { | ||
498 | + return []DataFieldOptions{ | ||
499 | + {EnName: "recordDate", CnName: "日期"}, | ||
500 | + {EnName: "workshopName", CnName: "车间名称"}, | ||
501 | + {EnName: "lineName", CnName: "线别"}, | ||
502 | + {EnName: "sectionName", CnName: "工段"}, | ||
503 | + {EnName: "eftWorkTime", CnName: "固定工时"}, | ||
504 | + {EnName: "edWorkTime", CnName: "临时工时"}, | ||
505 | + {EnName: "epWorkTime", CnName: "派遣工时"}, | ||
506 | + {EnName: "orgName", CnName: "组织机构"}, | ||
507 | + } | ||
508 | +} | ||
509 | + | ||
510 | +func (data ExportWorkshopAttendanceStaticsData) DataFieldList() []excel.DataField { | ||
511 | + fields := []excel.DataField{} | ||
512 | + allFields := data.AllFields() | ||
513 | + for _, value2 := range allFields { | ||
514 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
515 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
516 | + continue | ||
517 | + } | ||
518 | + for _, value3 := range data.SelectedField { | ||
519 | + if value2.EnName == value3 { | ||
520 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
521 | + } | ||
522 | + } | ||
523 | + } | ||
524 | + return fields | ||
525 | +} | ||
526 | + | ||
527 | +func (data ExportWorkshopAttendanceStaticsData) CellValue(index int, enName string) (value interface{}) { | ||
528 | + if index > data.DataListLen() { | ||
529 | + return "" | ||
530 | + } | ||
531 | + switch enName { | ||
532 | + case "recordDate": | ||
533 | + return data.SourceData[index].RecordDate | ||
534 | + case "workshopName": | ||
535 | + return data.SourceData[index].WorkshopName | ||
536 | + case "lineName": | ||
537 | + return data.SourceData[index].LineName | ||
538 | + case "sectionName": | ||
539 | + return data.SourceData[index].SectionName | ||
540 | + case "eftWorkTime": | ||
541 | + return data.SourceData[index].EftWorkTime | ||
542 | + case "edWorkTime": | ||
543 | + return data.SourceData[index].EdWorkTime | ||
544 | + case "epWorkTime": | ||
545 | + return data.SourceData[index].EptWorkTime | ||
546 | + case "orgName": | ||
547 | + return data.SourceData[index].OrgName | ||
548 | + } | ||
549 | + return nil | ||
550 | +} | ||
551 | + | ||
552 | +func (data ExportWorkshopAttendanceStaticsData) DataListLen() int { | ||
553 | + return len(data.SourceData) | ||
554 | +} | ||
555 | + | ||
556 | +func (data ExportWorkshopAttendanceStaticsData) TableTitle() []string { | ||
557 | + return nil | ||
558 | +} | ||
559 | + | ||
560 | +//ExportWorkshopProductiveData 导出员工产能数据 | ||
561 | +type ExportSecondLevelData struct { | ||
562 | + SourceData []allied_creation_manufacture.SecondLevelRecordItem | ||
563 | + SelectedField []string | ||
564 | +} | ||
565 | + | ||
566 | +var _ excel.ExcelMaker = (*ExportSecondLevelData)(nil) | ||
567 | + | ||
568 | +func (data ExportSecondLevelData) AllFields() []DataFieldOptions { | ||
569 | + return []DataFieldOptions{ | ||
570 | + {EnName: "workshopName", CnName: "车间名称"}, | ||
571 | + {EnName: "lineName", CnName: "线别"}, | ||
572 | + {EnName: "sectionName", CnName: "工段"}, | ||
573 | + {EnName: "workOn", CnName: "班别"}, | ||
574 | + {EnName: "userName", CnName: "姓名"}, | ||
575 | + {EnName: "employeeType", CnName: "员工类型"}, | ||
576 | + {EnName: "batchNumber", CnName: "批次号"}, | ||
577 | + {EnName: "planProductName", CnName: "生产品名"}, | ||
578 | + {EnName: "weightBefore", CnName: "二级品"}, | ||
579 | + {EnName: "createdAt", CnName: "提报时间"}, | ||
580 | + {EnName: "orgName", CnName: "组织机构"}, | ||
581 | + } | ||
582 | +} | ||
583 | + | ||
584 | +func (data ExportSecondLevelData) DataFieldList() []excel.DataField { | ||
585 | + fields := []excel.DataField{} | ||
586 | + allFields := data.AllFields() | ||
587 | + for _, value2 := range allFields { | ||
588 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
589 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
590 | + continue | ||
591 | + } | ||
592 | + for _, value3 := range data.SelectedField { | ||
593 | + if value2.EnName == value3 { | ||
594 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
595 | + } | ||
596 | + } | ||
597 | + } | ||
598 | + return fields | ||
599 | +} | ||
600 | + | ||
601 | +func (data ExportSecondLevelData) CellValue(index int, enName string) (value interface{}) { | ||
602 | + if index > data.DataListLen() { | ||
603 | + return "" | ||
604 | + } | ||
605 | + switch enName { | ||
606 | + case "workshopName": | ||
607 | + return data.SourceData[index].WorkshopName | ||
608 | + case "lineName": | ||
609 | + return data.SourceData[index].LineName | ||
610 | + case "sectionName": | ||
611 | + return data.SourceData[index].SectionName | ||
612 | + case "userName": | ||
613 | + return data.SourceData[index].ProductWorker.UserName | ||
614 | + case "workOn": | ||
615 | + return domain.WorkOnDescription(data.SourceData[index].WorkOn) | ||
616 | + case "employeeType": | ||
617 | + return domain.EmployeeTypeDescription(data.SourceData[index].ProductWorker.EmployeeType) | ||
618 | + case "batchNumber": | ||
619 | + return data.SourceData[index].BatchNumber | ||
620 | + case "planProductName": | ||
621 | + return data.SourceData[index].PlanProductName | ||
622 | + case "weightBefore": | ||
623 | + return fmt.Sprintf("%vKg", data.SourceData[index].WeightBefore) | ||
624 | + case "createdAt": | ||
625 | + return data.SourceData[index].CreatedAt | ||
626 | + case "orgName": | ||
627 | + return data.SourceData[index].OrgName | ||
628 | + } | ||
629 | + return nil | ||
630 | +} | ||
631 | + | ||
632 | +func (data ExportSecondLevelData) DataListLen() int { | ||
633 | + return len(data.SourceData) | ||
634 | +} | ||
635 | + | ||
636 | +func (data ExportSecondLevelData) TableTitle() []string { | ||
637 | + return nil | ||
638 | +} |
@@ -30,6 +30,10 @@ type CompanyUserAddCommand struct { | @@ -30,6 +30,10 @@ type CompanyUserAddCommand struct { | ||
30 | UserRole []Role `json:"userRole,omitempty"` | 30 | UserRole []Role `json:"userRole,omitempty"` |
31 | // 头像 | 31 | // 头像 |
32 | Avatar string `json:"avatar" valid:"Required"` | 32 | Avatar string `json:"avatar" valid:"Required"` |
33 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
34 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
35 | + // IC卡号 | ||
36 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
33 | } | 37 | } |
34 | 38 | ||
35 | func (companyUserAddCommand *CompanyUserAddCommand) Valid(validation *validation.Validation) { | 39 | func (companyUserAddCommand *CompanyUserAddCommand) Valid(validation *validation.Validation) { |
@@ -25,6 +25,10 @@ type CompanyUserUpdateCommand struct { | @@ -25,6 +25,10 @@ type CompanyUserUpdateCommand struct { | ||
25 | Phone string `json:"phone,omitempty"` | 25 | Phone string `json:"phone,omitempty"` |
26 | // 邮箱 | 26 | // 邮箱 |
27 | Email string `json:"email,omitempty"` | 27 | Email string `json:"email,omitempty"` |
28 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
29 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
30 | + // IC卡号 | ||
31 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
28 | // 关联的组织机构 | 32 | // 关联的组织机构 |
29 | UserOrg []Org `json:"userOrg,omitempty"` | 33 | UserOrg []Org `json:"userOrg,omitempty"` |
30 | // 关联的组织结构 | 34 | // 关联的组织结构 |
@@ -9,24 +9,32 @@ type CompanyUserItem struct { | @@ -9,24 +9,32 @@ type CompanyUserItem struct { | ||
9 | UserId string `json:"userId"` | 9 | UserId string `json:"userId"` |
10 | UserName string `json:"userName"` | 10 | UserName string `json:"userName"` |
11 | UserType int `json:"userType"` | 11 | UserType int `json:"userType"` |
12 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
13 | + EmployeeType int `json:"employeeType"` | ||
14 | + // IC卡号 | ||
15 | + IcCardNumber string `json:"icCardNumber"` | ||
12 | AuthFlag bool `json:"authFlag"` // 1:可操作(编辑,修改等) | 16 | AuthFlag bool `json:"authFlag"` // 1:可操作(编辑,修改等) |
13 | } | 17 | } |
14 | 18 | ||
15 | //CompanyUserInfo 用户数据详情 | 19 | //CompanyUserInfo 用户数据详情 |
16 | type CompanyUserInfo struct { | 20 | type CompanyUserInfo struct { |
17 | - Email string `json:"email"` | ||
18 | - Phone string `json:"phone"` | ||
19 | - Avatar string `json:"avatar"` | ||
20 | - EnableStatus int `json:"enableStatus"` | ||
21 | - UsersCode string `json:"userCode"` | ||
22 | - UsersID string `json:"userId"` | ||
23 | - UsersName string `json:"userName"` | ||
24 | - OrgID string `json:"orgId"` | ||
25 | - OrgName string `json:"orgName"` | ||
26 | - DepartmentID string `json:"departmentId"` | ||
27 | - DepartmentName string `json:"departmentName"` | ||
28 | - UsersOrg []UserOrg `json:"userOrg"` | ||
29 | - UsersRole []UserRole `json:"userRole"` | 21 | + Email string `json:"email"` |
22 | + Phone string `json:"phone"` | ||
23 | + Avatar string `json:"avatar"` | ||
24 | + EnableStatus int `json:"enableStatus"` | ||
25 | + UsersCode string `json:"userCode"` | ||
26 | + UsersID string `json:"userId"` | ||
27 | + UsersName string `json:"userName"` | ||
28 | + OrgID string `json:"orgId"` | ||
29 | + OrgName string `json:"orgName"` | ||
30 | + DepartmentID string `json:"departmentId"` | ||
31 | + DepartmentName string `json:"departmentName"` | ||
32 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
33 | + EmployeeType int `json:"employeeType"` | ||
34 | + // IC卡号 | ||
35 | + IcCardNumber string `json:"icCardNumber"` | ||
36 | + UsersOrg []UserOrg `json:"userOrg"` | ||
37 | + UsersRole []UserRole `json:"userRole"` | ||
30 | } | 38 | } |
31 | 39 | ||
32 | type UserOrg struct { | 40 | type UserOrg struct { |
@@ -93,6 +93,8 @@ func (usersService *UsersService) CompanyUserGet(companyUserGetQuery *query.Comp | @@ -93,6 +93,8 @@ func (usersService *UsersService) CompanyUserGet(companyUserGetQuery *query.Comp | ||
93 | DepartmentName: resultUser.Department.DepartmentName, | 93 | DepartmentName: resultUser.Department.DepartmentName, |
94 | UsersOrg: usersOrg, | 94 | UsersOrg: usersOrg, |
95 | UsersRole: userRole, | 95 | UsersRole: userRole, |
96 | + EmployeeType: resultUser.UserInfo.EmployeeType, | ||
97 | + IcCardNumber: resultUser.UserInfo.IcCardNumber, | ||
96 | } | 98 | } |
97 | 99 | ||
98 | datas := map[string]interface{}{ | 100 | datas := map[string]interface{}{ |
@@ -141,6 +143,8 @@ func (usersService *UsersService) CompanyUserAdd(companyUserAddCommand *command. | @@ -141,6 +143,8 @@ func (usersService *UsersService) CompanyUserAdd(companyUserAddCommand *command. | ||
141 | Phone: companyUserAddCommand.Phone, | 143 | Phone: companyUserAddCommand.Phone, |
142 | Avatar: companyUserAddCommand.Avatar, | 144 | Avatar: companyUserAddCommand.Avatar, |
143 | Email: companyUserAddCommand.Email, | 145 | Email: companyUserAddCommand.Email, |
146 | + IcCardNumber: companyUserAddCommand.IcCardNumber, | ||
147 | + EmployeeType: companyUserAddCommand.EmployeeType, | ||
144 | Password: initPassword, | 148 | Password: initPassword, |
145 | }) | 149 | }) |
146 | if err != nil { | 150 | if err != nil { |
@@ -181,7 +185,7 @@ func (usersService *UsersService) CompanyUserEnable(companyUserEnableCommand *co | @@ -181,7 +185,7 @@ func (usersService *UsersService) CompanyUserEnable(companyUserEnableCommand *co | ||
181 | func (usersService *UsersService) CompanyUserList(companyUserListQuery *query.CompanyUserListQuery) (int64, interface{}, error) { | 185 | func (usersService *UsersService) CompanyUserList(companyUserListQuery *query.CompanyUserListQuery) (int64, interface{}, error) { |
182 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | 186 | creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) |
183 | result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | 187 | result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ |
184 | - Offset: (companyUserListQuery.PageNumber - 1) * companyUserListQuery.PageSize, | 188 | + Offset: (companyUserListQuery.PageNumber - 1) * companyUserListQuery.PageSize, |
185 | Limit: companyUserListQuery.PageSize, | 189 | Limit: companyUserListQuery.PageSize, |
186 | CompanyId: companyUserListQuery.Operator.CompanyId, | 190 | CompanyId: companyUserListQuery.Operator.CompanyId, |
187 | OrganizationId: 0, | 191 | OrganizationId: 0, |
@@ -214,6 +218,8 @@ func (usersService *UsersService) CompanyUserList(companyUserListQuery *query.Co | @@ -214,6 +218,8 @@ func (usersService *UsersService) CompanyUserList(companyUserListQuery *query.Co | ||
214 | UserId: strconv.Itoa(v.UserId), | 218 | UserId: strconv.Itoa(v.UserId), |
215 | UserName: v.UserInfo.UserName, | 219 | UserName: v.UserInfo.UserName, |
216 | UserType: v.UserType, | 220 | UserType: v.UserType, |
221 | + EmployeeType: v.UserInfo.EmployeeType, | ||
222 | + IcCardNumber: v.UserInfo.IcCardNumber, | ||
217 | } | 223 | } |
218 | if v.Org.OrgId == int(companyUserListQuery.Operator.OrgId) { | 224 | if v.Org.OrgId == int(companyUserListQuery.Operator.OrgId) { |
219 | item.AuthFlag = true | 225 | item.AuthFlag = true |
@@ -280,6 +286,8 @@ func (usersService *UsersService) CompanyUserUpdate(companyUserUpdateCommand *co | @@ -280,6 +286,8 @@ func (usersService *UsersService) CompanyUserUpdate(companyUserUpdateCommand *co | ||
280 | Phone: companyUserUpdateCommand.Phone, | 286 | Phone: companyUserUpdateCommand.Phone, |
281 | Avatar: companyUserUpdateCommand.Avatar, | 287 | Avatar: companyUserUpdateCommand.Avatar, |
282 | Email: companyUserUpdateCommand.Email, | 288 | Email: companyUserUpdateCommand.Email, |
289 | + EmployeeType: companyUserUpdateCommand.EmployeeType, | ||
290 | + IcCardNumber: companyUserUpdateCommand.IcCardNumber, | ||
283 | }) | 291 | }) |
284 | if err != nil { | 292 | if err != nil { |
285 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 293 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
@@ -27,6 +27,9 @@ var ALLIED_CREATION_USER_HOST = "http://localhost:8081" //"http://allied-creatio | @@ -27,6 +27,9 @@ var ALLIED_CREATION_USER_HOST = "http://localhost:8081" //"http://allied-creatio | ||
27 | //天联共创业务模块 | 27 | //天联共创业务模块 |
28 | var ALLIED_CREATION_COOPERATION_HOST = "http://localhost:8082" // "http://allied-creation-cooperation-dev.fjmaimaimai.com" | 28 | var ALLIED_CREATION_COOPERATION_HOST = "http://localhost:8082" // "http://allied-creation-cooperation-dev.fjmaimaimai.com" |
29 | 29 | ||
30 | +// 天联共创 生产制造模块 | ||
31 | +var ALLIED_CREATION_MANUFACTURE_HOST = "http://localhost:8083" | ||
32 | + | ||
30 | // 版本更新模块 | 33 | // 版本更新模块 |
31 | var SUPLUS_ADMIN_BASE_HOST = "http://suplus-admin-base-dev.fjmaimaimai.com" | 34 | var SUPLUS_ADMIN_BASE_HOST = "http://suplus-admin-base-dev.fjmaimaimai.com" |
32 | 35 | ||
@@ -41,6 +44,10 @@ var SMSCODE_ALL_POWER = "999512" | @@ -41,6 +44,10 @@ var SMSCODE_ALL_POWER = "999512" | ||
41 | 44 | ||
42 | var EnableBlockChain = true | 45 | var EnableBlockChain = true |
43 | 46 | ||
47 | +// 天联共创 成本结构化 | ||
48 | +var COST_STRUCTURED = "http://cost-structured-dev.fjmaimaimai.com" | ||
49 | +//var COST_STRUCTURED = "http://localhost:8085" | ||
50 | + | ||
44 | func init() { | 51 | func init() { |
45 | if os.Getenv("LOG_LEVEL") != "" { | 52 | if os.Getenv("LOG_LEVEL") != "" { |
46 | LOG_LEVEL = os.Getenv("LOG_LEVEL") | 53 | LOG_LEVEL = os.Getenv("LOG_LEVEL") |
@@ -63,6 +70,9 @@ func init() { | @@ -63,6 +70,9 @@ func init() { | ||
63 | if os.Getenv("ALLIED_CREATION_COOPERATION_HOST") != "" { | 70 | if os.Getenv("ALLIED_CREATION_COOPERATION_HOST") != "" { |
64 | ALLIED_CREATION_COOPERATION_HOST = os.Getenv("ALLIED_CREATION_COOPERATION_HOST") | 71 | ALLIED_CREATION_COOPERATION_HOST = os.Getenv("ALLIED_CREATION_COOPERATION_HOST") |
65 | } | 72 | } |
73 | + if os.Getenv("ALLIED_CREATION_MANUFACTURE_HOST") != "" { | ||
74 | + ALLIED_CREATION_MANUFACTURE_HOST = os.Getenv("ALLIED_CREATION_MANUFACTURE_HOST") | ||
75 | + } | ||
66 | if os.Getenv("SMS_SERVE_HOST") != "" { | 76 | if os.Getenv("SMS_SERVE_HOST") != "" { |
67 | SMS_SERVE_HOST = os.Getenv("SMS_SERVE_HOST") | 77 | SMS_SERVE_HOST = os.Getenv("SMS_SERVE_HOST") |
68 | } | 78 | } |
@@ -75,4 +85,7 @@ func init() { | @@ -75,4 +85,7 @@ func init() { | ||
75 | if os.Getenv("SUPLUS_SALE_APP") != "" { | 85 | if os.Getenv("SUPLUS_SALE_APP") != "" { |
76 | SUPLUS_SALE_APP = os.Getenv("SUPLUS_SALE_APP") | 86 | SUPLUS_SALE_APP = os.Getenv("SUPLUS_SALE_APP") |
77 | } | 87 | } |
88 | + if os.Getenv("COST_STRUCTURED") != "" { | ||
89 | + COST_STRUCTURED = os.Getenv("COST_STRUCTURED") | ||
90 | + } | ||
78 | } | 91 | } |
pkg/constant/manufacture.go
0 → 100644
1 | +package constant | ||
2 | + | ||
3 | +import ( | ||
4 | + "os" | ||
5 | + "strconv" | ||
6 | +) | ||
7 | + | ||
8 | +var ( | ||
9 | + // 生产制造 - 称重系统 - 默认公司 | ||
10 | + MANUFACTURE_WEIGH_DEFAULT_COMPANYID = 1 | ||
11 | + // 生产制造 - 称重系统 - 默认组织 | ||
12 | + MANUFACTURE_WEIGH_DEFAULT_ORGID = 1 | ||
13 | +) | ||
14 | + | ||
15 | +func init() { | ||
16 | + if os.Getenv("MANUFACTURE_WEIGH_DEFAULT_COMPANYID") != "" { | ||
17 | + MANUFACTURE_WEIGH_DEFAULT_COMPANYID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_WEIGH_DEFAULT_COMPANYID")) | ||
18 | + } | ||
19 | + if os.Getenv("MANUFACTURE_WEIGH_DEFAULT_ORGID") != "" { | ||
20 | + MANUFACTURE_WEIGH_DEFAULT_ORGID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_WEIGH_DEFAULT_ORGID")) | ||
21 | + } | ||
22 | +} |
pkg/constant/oss.go
0 → 100644
@@ -2,11 +2,18 @@ package constant | @@ -2,11 +2,18 @@ package constant | ||
2 | 2 | ||
3 | import "os" | 3 | import "os" |
4 | 4 | ||
5 | -var POSTGRESQL_DB_NAME = "terms" | 5 | +//var POSTGRESQL_DB_NAME = "terms" |
6 | +//var POSTGRESQL_USER = "postgres" | ||
7 | +//var POSTGRESQL_PASSWORD = "123456" | ||
8 | +//var POSTGRESQL_HOST = "127.0.0.1" | ||
9 | +//var POSTGRESQL_PORT = "5432" | ||
10 | +//var DISABLE_CREATE_TABLE = false | ||
11 | +//var DISABLE_SQL_GENERATE_PRINT = false | ||
12 | +var POSTGRESQL_DB_NAME = "allied_creation_dev" | ||
6 | var POSTGRESQL_USER = "postgres" | 13 | var POSTGRESQL_USER = "postgres" |
7 | var POSTGRESQL_PASSWORD = "123456" | 14 | var POSTGRESQL_PASSWORD = "123456" |
8 | -var POSTGRESQL_HOST = "127.0.0.1" | ||
9 | -var POSTGRESQL_PORT = "5432" | 15 | +var POSTGRESQL_HOST = "114.55.200.59" |
16 | +var POSTGRESQL_PORT = "31543" | ||
10 | var DISABLE_CREATE_TABLE = false | 17 | var DISABLE_CREATE_TABLE = false |
11 | var DISABLE_SQL_GENERATE_PRINT = false | 18 | var DISABLE_SQL_GENERATE_PRINT = false |
12 | 19 |
1 | package domain | 1 | package domain |
2 | 2 | ||
3 | +// 公司状态状态 1:已注册 2:已通过 3:已拒绝 | ||
4 | +const ( | ||
5 | + CompanyRegistered = iota + 1 | ||
6 | + CompanyAuthenticated | ||
7 | + CompanyUnauthenticated | ||
8 | +) | ||
9 | + | ||
3 | //公司 | 10 | //公司 |
4 | type CompanyData struct { | 11 | type CompanyData struct { |
5 | CompanyID int `json:"companyId"` | 12 | CompanyID int `json:"companyId"` |
@@ -12,3 +19,10 @@ type Company struct { | @@ -12,3 +19,10 @@ type Company struct { | ||
12 | Logo string `json:"logo"` | 19 | Logo string `json:"logo"` |
13 | CompanyName string `json:"companyName"` | 20 | CompanyName string `json:"companyName"` |
14 | } | 21 | } |
22 | + | ||
23 | +// 营业执照所在地 | ||
24 | +type BusinessLicenseAddress struct { | ||
25 | + Province string `json:"province"` | ||
26 | + City string `json:"city"` | ||
27 | + Address string `json:"address"` | ||
28 | +} |
pkg/domain/cost_managemant.go
0 → 100644
1 | +package domain | ||
2 | + | ||
3 | +import "strings" | ||
4 | + | ||
5 | +type BatchCreateCostManagemant struct { | ||
6 | + UserId int64 `cname:"操作人id" json:"UserId" valid:"Required"` | ||
7 | + // 公司id | ||
8 | + CompanyId int64 `cname:"公司id" json:"companyId" valid:"Required"` | ||
9 | + // 项目id | ||
10 | + ProjectId int64 `cname:"项目id" json:"projectId,string"` | ||
11 | + // 项目名称 | ||
12 | + ProjectName string `cname:"项目名称" json:"projectName" valid:"Required"` | ||
13 | + // 项目分类: 1风险 2成本 3品质 4交期 5服务 6客户关系 7品牌 | ||
14 | + Types int `cname:"项目分类: 1风险 2成本 3品质 4交期 5服务 6客户关系 7品牌" json:"types" valid:"Required"` | ||
15 | + //成本數組 | ||
16 | + CostManagemants []*CostManagemant `cname:"成本数组" json:"costManagemants" valid:"Required"` | ||
17 | +} | ||
18 | + | ||
19 | +// 成本管理 | ||
20 | +type CostManagemant struct { | ||
21 | + // 项目编码 | ||
22 | + ProjectCode string `json:"projectCode"` | ||
23 | + // 成本管理Id | ||
24 | + CostManagemantId int64 `json:"costManagemantId,string"` | ||
25 | + // 公式id | ||
26 | + CompanyId int64 `json:"companyId,string"` | ||
27 | + // 标杆值,字符串,如果纯数字的时候参与计算 | ||
28 | + Benchmark string `json:"benchmark"` | ||
29 | + // 负责人数组 | ||
30 | + ChargePersons []string `json:"chargePersons"` | ||
31 | + // 历史最高值,字符串,如果纯数字的时候参与计算 | ||
32 | + Highest string `json:"highest"` | ||
33 | + // 细项名称 | ||
34 | + ItemName string `json:"itemName"` | ||
35 | + // 级别 | ||
36 | + Level int `json:"level"` | ||
37 | + // 父id | ||
38 | + ParentId int64 `json:"parentId,string"` | ||
39 | + // 现状值,字符串,如果纯数字的时候参与计算 | ||
40 | + Present string `json:"present"` | ||
41 | + // 当前选择的节点类型 1、combination 组合框 2、staff 员工选取 3、text 文本框 4、BOM BOM表 | ||
42 | + // 5、number数值框 6、calculate计算框 | ||
43 | + ChoiceId int `cname:"当前选择的节点类型 1、combination 组合框 2、staff 员工选取 3、text 文本框 4、BOM BOM表 5、number数值框 6、calculate计算框" json:"choiceId"` | ||
44 | + // 文本内容 | ||
45 | + Text string `cname:"文本内容" json:"text"` | ||
46 | + // 图片 | ||
47 | + Urls []string `cname:"图片" json:"urls"` | ||
48 | + // calculate 计算框:计算框公式 | ||
49 | + Formula string `cname:"calculate 计算框:计算框公式" json:"formula" ` | ||
50 | + // 项目id | ||
51 | + //ProjectId int64 `json:"projectId,string"` | ||
52 | + // 项目名称 | ||
53 | + ProjectName string `json:"projectName"` | ||
54 | + // 进度计划比,字符串,如果纯数字的时候参与计算 | ||
55 | + SchedulePlanPercent string `json:"schedulePlanPercent"` | ||
56 | + // 结构类型 | ||
57 | + //StructureType int `json:"structureType"` | ||
58 | + // 目标值 字符串 为数字时 参与计算 | ||
59 | + Target string `json:"target"` | ||
60 | + // 目标值期限 1 第一季度 2第二季度 3第三季度 4第四季度 5 年度 | ||
61 | + TargetPeriod int `json:"targetPeriod"` | ||
62 | + // 顶级成本管理id | ||
63 | + TopCostManagemantId int64 `json:"topCostManagemantId,string"` | ||
64 | + // 项目分类: 1风险 2成本 3品质 4交期 5服务 6客户关系 7品牌 | ||
65 | + Types int `json:"types"` | ||
66 | + // 昨日实际值 | ||
67 | + YesterdayActual string `json:"yesterdayActual"` | ||
68 | +} | ||
69 | + | ||
70 | +type NodeType struct { | ||
71 | + TypeId int | ||
72 | + TypeName string | ||
73 | +} | ||
74 | + | ||
75 | +var NodeTypeGroup = []NodeType{ | ||
76 | + {TypeId: 1, TypeName: "组合框"}, | ||
77 | + {TypeId: 2, TypeName: "员工类型"}, | ||
78 | + {TypeId: 3, TypeName: "文本类型"}, | ||
79 | + {TypeId: 4, TypeName: "BOM表类型"}, | ||
80 | + {TypeId: 5, TypeName: "数值类型"}, | ||
81 | + {TypeId: 6, TypeName: "计算类型"}, | ||
82 | + {TypeId: 7, TypeName: "图片类型"}, | ||
83 | +} | ||
84 | + | ||
85 | +func (NodeType) GetIdByName(name string) int { | ||
86 | + group := NodeTypeGroup | ||
87 | + for _, item := range group { | ||
88 | + if item.TypeName == name { | ||
89 | + return item.TypeId | ||
90 | + } | ||
91 | + } | ||
92 | + return 0 | ||
93 | +} | ||
94 | + | ||
95 | +func GetTargetPeriod(targetPeriod string) int { | ||
96 | + targetPeriod = strings.TrimSpace(targetPeriod) | ||
97 | + switch targetPeriod { | ||
98 | + case "年度": | ||
99 | + return 5 | ||
100 | + case "第一季度": | ||
101 | + return 1 | ||
102 | + case "第二季度": | ||
103 | + return 2 | ||
104 | + case "第三季度": | ||
105 | + return 3 | ||
106 | + case "第四季度": | ||
107 | + return 4 | ||
108 | + case "": | ||
109 | + return 0 | ||
110 | + } | ||
111 | + return -1 | ||
112 | +} |
@@ -3,10 +3,11 @@ package domain | @@ -3,10 +3,11 @@ package domain | ||
3 | /***** 1.用户模块 *****/ | 3 | /***** 1.用户模块 *****/ |
4 | // 用户类型 | 4 | // 用户类型 |
5 | const ( | 5 | const ( |
6 | - UserTypeEmployee = 1 | ||
7 | - UserTypeCooperation = 2 | ||
8 | - UserTypeVisitor = 4 | ||
9 | - UserTypeCompanyAdmin = 1024 | 6 | + UserTypeEmployee = 1 |
7 | + UserTypeCooperation = 2 | ||
8 | + UserTypeVisitor = 4 | ||
9 | + UserTypeOperationAdmin = 8 | ||
10 | + UserTypeCompanyAdmin = 1024 | ||
10 | ) | 11 | ) |
11 | 12 | ||
12 | // 用户状态 | 13 | // 用户状态 |
@@ -62,6 +63,13 @@ const ( | @@ -62,6 +63,13 @@ const ( | ||
62 | ImportDividendsOrders = "BUSINESS_ALLIED-CREATION_BONUS_ORDER" | 63 | ImportDividendsOrders = "BUSINESS_ALLIED-CREATION_BONUS_ORDER" |
63 | // 导入退货订单 | 64 | // 导入退货订单 |
64 | ImportDividendsReturnOrders = "BUSINESS_ALLIED-CREATION_BONUS_RETURN" | 65 | ImportDividendsReturnOrders = "BUSINESS_ALLIED-CREATION_BONUS_RETURN" |
66 | + | ||
67 | + // 导入产品 | ||
68 | + ImportProducts = "BUSINESS_ALLIED-MANUFACTURING_BASIC_PRODUCT" | ||
69 | + // 导入设备 | ||
70 | + ImportDevices = "BUSINESS_ALLIED-MANUFACTURING_BASIC_DEVICE" | ||
71 | + //导入成本结构 | ||
72 | + ImportCosts = "BUSINESS_ALLIED-COST" | ||
65 | ) | 73 | ) |
66 | 74 | ||
67 | const ( | 75 | const ( |
@@ -69,6 +77,20 @@ const ( | @@ -69,6 +77,20 @@ const ( | ||
69 | ExportCompanyUser = "ExportCompanyUser" | 77 | ExportCompanyUser = "ExportCompanyUser" |
70 | // 导入共创用户 | 78 | // 导入共创用户 |
71 | ExportCooperationUser = "ExportCooperationUser" | 79 | ExportCooperationUser = "ExportCooperationUser" |
80 | + | ||
81 | + // 导入产品 | ||
82 | + ExportProducts = "ExportProducts" | ||
83 | + // 导出员工产能统计 | ||
84 | + ExportManufactureEmployeeProductive = "ExportManufactureEmployeeProductive" | ||
85 | + // 导出车间产能统计 | ||
86 | + ExportManufactureWorkshopProductive = "ExportManufactureWorkshopProductive" | ||
87 | + // 报废记录 | ||
88 | + ExportSecondLevelRecord = "ExportSecondLevelRecord" | ||
89 | + | ||
90 | + // 员工工时 | ||
91 | + ExportManufactureEmployeeAttendanceStatics = "ExportManufactureEmployeeAttendanceStatics" | ||
92 | + // 车间工时 | ||
93 | + ExportManufactureWorkshopAttendanceStatics = "ExportManufactureWorkshopAttendanceStatics" | ||
72 | ) | 94 | ) |
73 | 95 | ||
74 | const ( | 96 | const ( |
@@ -80,3 +102,54 @@ const ( | @@ -80,3 +102,54 @@ const ( | ||
80 | BlockChainSourceCooperationProject = "allied-creation.cooperation.project" | 102 | BlockChainSourceCooperationProject = "allied-creation.cooperation.project" |
81 | BlockChainSourceCooperationDividendsEstimate = "allied-creation.cooperation.dividends-estimate" | 103 | BlockChainSourceCooperationDividendsEstimate = "allied-creation.cooperation.dividends-estimate" |
82 | ) | 104 | ) |
105 | + | ||
106 | +const ( | ||
107 | + DefaultPassword = "4a693460c4cf078ea5b6b5a9e2cf382064a6f810" // TL123456! | ||
108 | +) | ||
109 | + | ||
110 | +func EmployeeTypeDescription(employeeType int) string { | ||
111 | + if employeeType == 1 { | ||
112 | + return "固定" | ||
113 | + } | ||
114 | + if employeeType == 2 { | ||
115 | + return "派遣" | ||
116 | + } | ||
117 | + if employeeType == 3 { | ||
118 | + return "临时" | ||
119 | + } | ||
120 | + return "固定" | ||
121 | +} | ||
122 | + | ||
123 | +func ParticipateTypeDescription(participateType int) string { | ||
124 | + if participateType == 1 { | ||
125 | + return "正常" | ||
126 | + } | ||
127 | + if participateType == 2 { | ||
128 | + return "支援" | ||
129 | + } | ||
130 | + return "正常" | ||
131 | +} | ||
132 | + | ||
133 | +// 班次 | ||
134 | +const ( | ||
135 | + WorkOnFullDay = 1 //全天 | ||
136 | + WorkOnDay = 2 //白班 | ||
137 | + WorkOnMidDay = 4 //中班 | ||
138 | + WorkOnNight = 8 //夜班 | ||
139 | +) | ||
140 | + | ||
141 | +func WorkOnDescription(workOn int) string { | ||
142 | + if workOn&WorkOnFullDay > 0 { | ||
143 | + return "全天" | ||
144 | + } | ||
145 | + if workOn&WorkOnDay > 0 { | ||
146 | + return "白班" | ||
147 | + } | ||
148 | + if workOn&WorkOnMidDay > 0 { | ||
149 | + return "中班" | ||
150 | + } | ||
151 | + if workOn&WorkOnNight > 0 { | ||
152 | + return "夜班" | ||
153 | + } | ||
154 | + return "" | ||
155 | +} |
pkg/domain/excel.go
0 → 100644
1 | +package domain | ||
2 | + | ||
3 | +// 导入数据体 | ||
4 | +type ImportProductItem struct { | ||
5 | + // 产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001 | ||
6 | + ProductCode string `json:"productCode,omitempty"` | ||
7 | + // 产品名称 | ||
8 | + ProductName string `json:"productName,omitempty"` | ||
9 | + // 产品类别 | ||
10 | + ProductCategory string `json:"productCategory,omitempty"` | ||
11 | + // 单位 | ||
12 | + Unit string `json:"unit,omitempty"` | ||
13 | + // 单份重量(原材料) | ||
14 | + UnitWeight string `json:"unitWeight,omitempty"` | ||
15 | + // 失败理由 | ||
16 | + FailReason string `json:"failReason"` | ||
17 | +} | ||
18 | + | ||
19 | +// 导入设备数据体 | ||
20 | +type ImportDeviceItem struct { | ||
21 | + // 设备编号 | ||
22 | + DeviceCode string `json:"deviceCode,omitempty"` | ||
23 | + // 设备名称 | ||
24 | + DeviceName string `json:"deviceName,omitempty"` | ||
25 | + // 设备型号 | ||
26 | + DeviceModel string `json:"deviceModel,omitempty"` | ||
27 | + // 设备类型 | ||
28 | + DeviceType string `json:"deviceType,omitempty"` | ||
29 | + // 品牌 | ||
30 | + Brand string `json:"brand,omitempty"` | ||
31 | + // 设备状态 1:正常 2:封存 3:报废 | ||
32 | + Status string `json:"status,omitempty"` | ||
33 | + // 风险等级 1:高 2:中 3:低 | ||
34 | + Level string `json:"level,omitempty"` | ||
35 | + // 失败理由 | ||
36 | + FailReason string `json:"failReason"` | ||
37 | +} |
@@ -7,8 +7,9 @@ import ( | @@ -7,8 +7,9 @@ import ( | ||
7 | 7 | ||
8 | //登录的平台 | 8 | //登录的平台 |
9 | const ( | 9 | const ( |
10 | - LoginPlatformApp string = "app" | ||
11 | - LoginPlatformWeb string = "web" | 10 | + LoginPlatformApp string = "app" //天联共创app |
11 | + LoginPlatformWeb string = "web" //天联共创web | ||
12 | + LoginPlatformOperatorWeb string = "operator-web" //天联共创运营-web | ||
12 | ) | 13 | ) |
13 | 14 | ||
14 | const ( | 15 | const ( |
@@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
5 | "github.com/linmadan/egglib-go/utils/json" | 5 | "github.com/linmadan/egglib-go/utils/json" |
6 | "github.com/tal-tech/go-queue/kq" | 6 | "github.com/tal-tech/go-queue/kq" |
7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" | 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" |
8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" | ||
8 | "strings" | 9 | "strings" |
9 | ) | 10 | ) |
10 | 11 | ||
@@ -32,7 +33,13 @@ func Push(topic string, o interface{}) error { | @@ -32,7 +33,13 @@ func Push(topic string, o interface{}) error { | ||
32 | if pusher, ok = defaultClientMap[topic]; !ok { | 33 | if pusher, ok = defaultClientMap[topic]; !ok { |
33 | return fmt.Errorf("pusher client [%v] not found ", topic) | 34 | return fmt.Errorf("pusher client [%v] not found ", topic) |
34 | } | 35 | } |
35 | - return pusher.Push(json.MarshalToString(o)) | 36 | + if err := pusher.Push(json.MarshalToString(o)); err != nil { |
37 | + log.Logger.Debug(fmt.Sprintf("Topic:%v error:%v", topic, err.Error()), map[string]interface{}{"value": o}) | ||
38 | + return err | ||
39 | + } else { | ||
40 | + log.Logger.Debug(fmt.Sprintf("Topic:%v 发送成功", topic), map[string]interface{}{"value": o}) | ||
41 | + } | ||
42 | + return nil | ||
36 | } | 43 | } |
37 | 44 | ||
38 | // 新建一个推送对象 | 45 | // 新建一个推送对象 |
1 | +package allied_creation_manufacture | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "time" | ||
6 | + | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" | ||
8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway" | ||
10 | +) | ||
11 | + | ||
12 | +//HttpLibAlliedCreationManufacture 生产制造模块 | ||
13 | +type HttpLibAlliedCreationManufacture struct { | ||
14 | + service_gateway.BaseServiceGateway | ||
15 | + baseUrL string | ||
16 | +} | ||
17 | + | ||
18 | +func NewHttpLibAlliedCreationManufacture(operator domain.Operator) *HttpLibAlliedCreationManufacture { | ||
19 | + return &HttpLibAlliedCreationManufacture{ | ||
20 | + BaseServiceGateway: service_gateway.BaseServiceGateway{ | ||
21 | + ConnectTimeout: 100 * time.Second, | ||
22 | + ReadWriteTimeout: 100 * time.Second, | ||
23 | + CompanyId: operator.CompanyId, | ||
24 | + OrgId: operator.OrgId, | ||
25 | + InOrgIds: operator.OrgIds, | ||
26 | + UserId: operator.UserId, | ||
27 | + UserBaseId: operator.UserBaseId, | ||
28 | + }, | ||
29 | + baseUrL: constant.ALLIED_CREATION_MANUFACTURE_HOST, | ||
30 | + } | ||
31 | + | ||
32 | +} | ||
33 | + | ||
34 | +func (gateway HttpLibAlliedCreationManufacture) BaseUrl() string { | ||
35 | + return gateway.baseUrL | ||
36 | +} | ||
37 | + | ||
38 | +//BatchAddProduct 批量添加产品 | ||
39 | +func (gateway HttpLibAlliedCreationManufacture) BatchAddProduct(param BatchAddProductRequest) (*BatchAddProductResponse, error) { | ||
40 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/products/batch-add") | ||
41 | + method := "post" | ||
42 | + var data BatchAddProductResponse | ||
43 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
44 | + return &data, err | ||
45 | +} | ||
46 | + | ||
47 | +type BatchAddProductRequest struct { | ||
48 | + List []*domain.ImportProductItem `json:"list"` | ||
49 | +} | ||
50 | +type BatchAddProductResponse []interface{} | ||
51 | + | ||
52 | +//SearchProduct 搜索产品 | ||
53 | +func (gateway HttpLibAlliedCreationManufacture) SearchProduct(param SearchProductRequest) (*SearchProductResponse, error) { | ||
54 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/products/search") | ||
55 | + method := "post" | ||
56 | + var data SearchProductResponse | ||
57 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
58 | + return &data, err | ||
59 | +} | ||
60 | + | ||
61 | +type ( | ||
62 | + SearchProductRequest struct { | ||
63 | + // 页码 | ||
64 | + PageNumber int `cname:"页码" json:"pageNumber,omitempty"` | ||
65 | + // 页数 | ||
66 | + PageSize int `cname:"页数" json:"pageSize,omitempty"` | ||
67 | + // 产品名称 | ||
68 | + ProductName string `json:"productName,omitempty"` | ||
69 | + // 产品类别 | ||
70 | + ProductCategory string `cname:"产品类别" json:"productCategory"` | ||
71 | + } | ||
72 | + SearchProductResponse struct { | ||
73 | + Grid struct { | ||
74 | + List []SearchProductItem `json:"list"` | ||
75 | + Total int `json:"total"` | ||
76 | + } `json:"grid"` | ||
77 | + } | ||
78 | + SearchProductItem struct { | ||
79 | + ProductID int `json:"productId"` | ||
80 | + ProductCode string `json:"productCode"` | ||
81 | + ProductName string `json:"productName"` | ||
82 | + ProductCategory string `json:"productCategory"` | ||
83 | + Unit string `json:"unit"` | ||
84 | + UnitWeight float64 `json:"unitWeight"` | ||
85 | + } | ||
86 | +) | ||
87 | + | ||
88 | +/*设备*/ | ||
89 | + | ||
90 | +//BatchAddProduct 批量添加产品 | ||
91 | +func (gateway HttpLibAlliedCreationManufacture) BatchAddDevice(param BatchAddDeviceRequest) (*BatchAddProductResponse, error) { | ||
92 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/devices/batch-add") | ||
93 | + method := "post" | ||
94 | + var data BatchAddProductResponse | ||
95 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
96 | + return &data, err | ||
97 | +} | ||
98 | + | ||
99 | +type BatchAddDeviceRequest struct { | ||
100 | + List []*domain.ImportDeviceItem `json:"list"` | ||
101 | +} | ||
102 | +type BatchAddDeviceResponse []interface{} | ||
103 | + | ||
104 | +/**生产记录**/ | ||
105 | +//SearchProduct 搜索员工产能统计 | ||
106 | +func (gateway HttpLibAlliedCreationManufacture) SearchEmployeeProductive(param SearchEmployeeProductiveRequest) (*SearchEmployeeProductiveResponse, error) { | ||
107 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/employee-productive/search") | ||
108 | + method := "post" | ||
109 | + var data SearchEmployeeProductiveResponse | ||
110 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
111 | + return &data, err | ||
112 | +} | ||
113 | + | ||
114 | +type ( | ||
115 | + SearchEmployeeProductiveRequest struct { | ||
116 | + // 页码 | ||
117 | + //PageNumber int `cname:"页码" json:"pageNumber,omitempty"` | ||
118 | + // 页数 | ||
119 | + //PageSize int `cname:"页数" json:"pageSize,omitempty"` | ||
120 | + // 车间名称 | ||
121 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
122 | + // 生产线名称 | ||
123 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
124 | + // 工段名称 | ||
125 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
126 | + // 姓名 | ||
127 | + UserName string `cname:"姓名" json:"userName"` | ||
128 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
129 | + EmployeeType string `cname:"员工类型 1:固定 2:派遣 3.临时" json:"employeeType"` | ||
130 | + // 开始时间 | ||
131 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
132 | + // 结束时间 | ||
133 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
134 | + } | ||
135 | + SearchEmployeeProductiveResponse struct { | ||
136 | + Grid struct { | ||
137 | + List []EmployeeProductiveItem `json:"list"` | ||
138 | + Total int `json:"total"` | ||
139 | + } `json:"grid"` | ||
140 | + } | ||
141 | + EmployeeProductiveItem struct { | ||
142 | + EmployeeProductRecordID int `json:"employeeProductRecordId"` | ||
143 | + ProductWorker struct { | ||
144 | + UserID int `json:"userId"` | ||
145 | + UserName string `json:"userName"` | ||
146 | + Avatar string `json:"avatar"` | ||
147 | + Phone string `json:"phone"` | ||
148 | + EmployeeType int `json:"employeeType"` | ||
149 | + } `json:"productWorker"` | ||
150 | + WorkStationID string `json:"workStationId"` | ||
151 | + WorkshopID int `json:"workshopId"` | ||
152 | + WorkshopName string `json:"workshopName"` | ||
153 | + LineID int `json:"lineId"` | ||
154 | + LineName string `json:"lineName"` | ||
155 | + SectionID int `json:"sectionId"` | ||
156 | + SectionName string `json:"sectionName"` | ||
157 | + WorkOn string `json:"workOn"` | ||
158 | + PlanProductName string `json:"planProductName"` | ||
159 | + BatchNumber string `json:"batchNumber"` | ||
160 | + ParticipateType int `json:"participateType"` | ||
161 | + ProductWeigh float64 `json:"productWeigh"` | ||
162 | + SecondLevelWeigh float64 `json:"secondLevelWeigh"` | ||
163 | + CreatedAt string `json:"createdAt"` | ||
164 | + OrgName string `json:"orgName"` | ||
165 | + AuthFlag bool `json:"authFlag"` | ||
166 | + QualificationRate int `json:"qualificationRate"` | ||
167 | + } | ||
168 | +) | ||
169 | + | ||
170 | +//SearchProduct 搜索员工产能统计 | ||
171 | +func (gateway HttpLibAlliedCreationManufacture) SearchWorkshopProductive(param SearchWorkshopProductiveRequest) (*SearchWorkshopProductiveResponse, error) { | ||
172 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/workshop-productive/search") | ||
173 | + method := "post" | ||
174 | + var data SearchWorkshopProductiveResponse | ||
175 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
176 | + return &data, err | ||
177 | +} | ||
178 | + | ||
179 | +type ( | ||
180 | + SearchWorkshopProductiveRequest struct { | ||
181 | + // 品名 | ||
182 | + PlanProductName string `cname:"品名" json:"planProductName,omitempty"` | ||
183 | + // 工段名称 | ||
184 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
185 | + // 开始时间 | ||
186 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
187 | + // 结束时间 | ||
188 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
189 | + } | ||
190 | + SearchWorkshopProductiveResponse struct { | ||
191 | + Grid struct { | ||
192 | + List []WorkshopProductiveItem `json:"list"` | ||
193 | + Total int `json:"total"` | ||
194 | + } `json:"grid"` | ||
195 | + } | ||
196 | + WorkshopProductiveItem struct { | ||
197 | + EmployeeProductRecordID int `json:"employeeProductRecordId"` | ||
198 | + ProductWorker struct { | ||
199 | + UserID int `json:"userId"` | ||
200 | + UserName string `json:"userName"` | ||
201 | + Avatar string `json:"avatar"` | ||
202 | + Phone string `json:"phone"` | ||
203 | + EmployeeType int `json:"employeeType"` | ||
204 | + } `json:"productWorker"` | ||
205 | + WorkStationID string `json:"workStationId"` | ||
206 | + WorkshopID int `json:"workshopId"` | ||
207 | + WorkshopName string `json:"workshopName"` | ||
208 | + LineID int `json:"lineId"` | ||
209 | + LineName string `json:"lineName"` | ||
210 | + SectionID int `json:"sectionId"` | ||
211 | + SectionName string `json:"sectionName"` | ||
212 | + WorkOn string `json:"workOn"` | ||
213 | + PlanProductName string `json:"planProductName"` | ||
214 | + BatchNumber string `json:"batchNumber"` | ||
215 | + //ParticipateType int `json:"participateType"` | ||
216 | + // 投入量 | ||
217 | + DevotedProductWeigh float64 `json:"devotedProductWeigh"` | ||
218 | + // 产能 | ||
219 | + ProductWeigh float64 `json:"productWeigh"` | ||
220 | + // 二级品产能 | ||
221 | + SecondLevelWeigh float64 `json:"secondLevelWeigh"` | ||
222 | + CreatedAt string `json:"createdAt"` | ||
223 | + OrgName string `json:"orgName"` | ||
224 | + AuthFlag bool `json:"authFlag"` | ||
225 | + QualificationRate int `json:"qualificationRate"` | ||
226 | + } | ||
227 | +) | ||
228 | + | ||
229 | +//SearchProduct 搜索员工产能统计 | ||
230 | +func (gateway HttpLibAlliedCreationManufacture) SearchSecondLevelRecord(param SearchSecondLevelRecordRequest) (*SearchSecondLevelRecordResponse, error) { | ||
231 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/second-level-record/search") | ||
232 | + method := "post" | ||
233 | + var data SearchSecondLevelRecordResponse | ||
234 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
235 | + return &data, err | ||
236 | +} | ||
237 | + | ||
238 | +type ( | ||
239 | + SearchSecondLevelRecordRequest struct { | ||
240 | + // 车间名称 | ||
241 | + WorkshopName string `cname:"车间名称" json:"workshopName"` | ||
242 | + // 批号 | ||
243 | + BatchNumber string `cname:"批号" json:"batchNumber"` | ||
244 | + // 姓名 | ||
245 | + UserName string `cname:"姓名" json:"userName"` | ||
246 | + // 生产记录类型:1:领料 2:退料 4:称重 8:二级品称重 | ||
247 | + //ProductRecordType int `cname:"生产记录类型:1:领料 2:退料 4:称重 8:二级品称重"` | ||
248 | + // 生产线名称 | ||
249 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
250 | + // 工段名称 | ||
251 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
252 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
253 | + EmployeeType int `cname:"员工类型 1:固定 2:派遣 3.临时" json:"employeeType"` | ||
254 | + // 开始时间 | ||
255 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
256 | + // 结束时间 | ||
257 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
258 | + } | ||
259 | + SearchSecondLevelRecordResponse struct { | ||
260 | + Grid struct { | ||
261 | + List []SecondLevelRecordItem `json:"list"` | ||
262 | + Total int `json:"total"` | ||
263 | + } `json:"grid"` | ||
264 | + } | ||
265 | + SecondLevelRecordItem struct { | ||
266 | + ProductRecordID int `json:"productRecordId"` | ||
267 | + ProductWorker struct { | ||
268 | + UserID int `json:"userId"` | ||
269 | + UserName string `json:"userName"` | ||
270 | + EmployeeType int `json:"employeeType"` | ||
271 | + Phone string `json:"phone"` | ||
272 | + } `json:"productWorker"` | ||
273 | + WorkStationID string `json:"workStationId"` | ||
274 | + WorkshopID int `json:"workshopId"` | ||
275 | + WorkshopName string `json:"workshopName"` | ||
276 | + LineID int `json:"lineId"` | ||
277 | + LineName string `json:"lineName"` | ||
278 | + SectionID int `json:"sectionId"` | ||
279 | + SectionName string `json:"sectionName"` | ||
280 | + WorkOn int `json:"workOn"` | ||
281 | + WeightBefore int `json:"weightBefore"` | ||
282 | + WeightAfter int `json:"weightAfter"` | ||
283 | + ApproveStatus int `json:"approveStatus"` | ||
284 | + ApproveUser struct { | ||
285 | + UserID int `json:"userId"` | ||
286 | + UserName string `json:"userName"` | ||
287 | + } `json:"approveUser"` | ||
288 | + ApproveAt string `json:"approveAt"` | ||
289 | + PlanProductName string `json:"planProductName"` | ||
290 | + BatchNumber string `json:"batchNumber"` | ||
291 | + CreatedDate string `json:"createdDate"` | ||
292 | + CreatedAt string `json:"createdAt"` | ||
293 | + OrgName string `json:"orgName"` | ||
294 | + AuthFlag bool `json:"authFlag"` | ||
295 | + } | ||
296 | +) | ||
297 | + | ||
298 | +/*** 考勤记录 ***/ | ||
299 | +//SearchEmployeeAttendanceStatics 搜索员工工时统计 | ||
300 | +func (gateway HttpLibAlliedCreationManufacture) SearchEmployeeAttendanceStatics(param SearchEmployeeAttendanceStaticsRequest) (*SearchEmployeeAttendanceStaticsResponse, error) { | ||
301 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/employee-attendance-statics/search") | ||
302 | + method := "post" | ||
303 | + var data SearchEmployeeAttendanceStaticsResponse | ||
304 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
305 | + return &data, err | ||
306 | +} | ||
307 | + | ||
308 | +type ( | ||
309 | + SearchEmployeeAttendanceStaticsRequest struct { | ||
310 | + // 车间名称 | ||
311 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
312 | + // 生产线名称 | ||
313 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
314 | + // 工段名称 | ||
315 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
316 | + // 姓名 | ||
317 | + UserName string `cname:"姓名" json:"userName,omitempty"` | ||
318 | + // 考勤状态 1.未审核 2:已审核 4.自动审核 | ||
319 | + AttendanceStatus int `cname:"考勤状态 1.未审核 2:已审核 4.自动审核" json:"attendanceStatus,omitempty"` | ||
320 | + // 开始时间 | ||
321 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
322 | + // 结束时间 | ||
323 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
324 | + } | ||
325 | + SearchEmployeeAttendanceStaticsResponse struct { | ||
326 | + Grid struct { | ||
327 | + List []SearchEmployeeAttendanceStaticsItem `json:"list"` | ||
328 | + Total int `json:"total"` | ||
329 | + } `json:"grid"` | ||
330 | + } | ||
331 | + SearchEmployeeAttendanceStaticsItem struct { | ||
332 | + ProductAttendanceID int `json:"productAttendanceId"` | ||
333 | + SignDate string `json:"signDate"` | ||
334 | + WorkStationID string `json:"workStationId"` | ||
335 | + WorkshopID int `json:"workshopId"` | ||
336 | + WorkshopName string `json:"workshopName"` | ||
337 | + LineID int `json:"lineId"` | ||
338 | + LineName string `json:"lineName"` | ||
339 | + SectionID int `json:"sectionId"` | ||
340 | + SectionName string `json:"sectionName"` | ||
341 | + ProductWorker struct { | ||
342 | + UserID int `json:"userId"` | ||
343 | + UserName string `json:"userName"` | ||
344 | + EmployeeType int `json:"employeeType"` | ||
345 | + Avatar string `json:"avatar"` | ||
346 | + Phone string `json:"phone"` | ||
347 | + } `json:"productWorker"` | ||
348 | + AttendanceType int `json:"attendanceType"` | ||
349 | + AttendanceStatus int `json:"attendanceStatus"` | ||
350 | + AttendanceTypeDescription string `json:"attendanceTypeDescription"` | ||
351 | + EmployeeTypeDescription string `json:"employeeTypeDescription"` | ||
352 | + AttendanceStatusDescription string `json:"attendanceStatusDescription"` | ||
353 | + WorkTime float64 `json:"workTime"` | ||
354 | + OrgName string `json:"orgName"` | ||
355 | + AuthFlag bool `json:"authFlag"` | ||
356 | + } | ||
357 | +) | ||
358 | + | ||
359 | +//SearchEmployeeAttendanceStatics 搜索员工工时统计 | ||
360 | +func (gateway HttpLibAlliedCreationManufacture) SearchWorkshopWorkTimeStatics(param SearchWorkshopWorkTimeStaticsRequest) (*SearchWorkshopWorkTimeStaticsResponse, error) { | ||
361 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/workshop-attendance-statics/search") | ||
362 | + method := "post" | ||
363 | + var data SearchWorkshopWorkTimeStaticsResponse | ||
364 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
365 | + return &data, err | ||
366 | +} | ||
367 | + | ||
368 | +type ( | ||
369 | + SearchWorkshopWorkTimeStaticsRequest struct { | ||
370 | + // 车间名称 | ||
371 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
372 | + // 生产线名称 | ||
373 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
374 | + // 开始时间 | ||
375 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
376 | + // 结束时间 | ||
377 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
378 | + } | ||
379 | + SearchWorkshopWorkTimeStaticsResponse struct { | ||
380 | + Grid struct { | ||
381 | + List []SearchWorkshopWorkTimeStaticsItem `json:"list"` | ||
382 | + Total int `json:"total"` | ||
383 | + } `json:"grid"` | ||
384 | + } | ||
385 | + SearchWorkshopWorkTimeStaticsItem struct { | ||
386 | + WorkshopWorkTimeRecordID int `json:"workshopWorkTimeRecordId"` | ||
387 | + WorkStationID string `json:"workStationId"` | ||
388 | + WorkshopID int `json:"workshopId"` | ||
389 | + WorkshopName string `json:"workshopName"` | ||
390 | + LineID int `json:"lineId"` | ||
391 | + LineName string `json:"lineName"` | ||
392 | + SectionID int `json:"sectionId"` | ||
393 | + SectionName string `json:"sectionName"` | ||
394 | + EftWorkTime float64 `json:"eftWorkTime"` | ||
395 | + EdWorkTime int `json:"edWorkTime"` | ||
396 | + EptWorkTime int `json:"eptWorkTime"` | ||
397 | + RecordDate string `json:"recordDate"` | ||
398 | + OrgName string `json:"orgName"` | ||
399 | + AuthFlag bool `json:"authFlag"` | ||
400 | + } | ||
401 | +) |
@@ -28,3 +28,7 @@ func NewHttplibAlliedCreationUser(operator domain.Operator) *HttplibAlliedCreati | @@ -28,3 +28,7 @@ func NewHttplibAlliedCreationUser(operator domain.Operator) *HttplibAlliedCreati | ||
28 | } | 28 | } |
29 | 29 | ||
30 | } | 30 | } |
31 | + | ||
32 | +func (gateway HttplibAlliedCreationUser) BaseUrl() string { | ||
33 | + return gateway.baseUrL | ||
34 | +} |
@@ -135,7 +135,7 @@ func (gateway HttplibAlliedCreationUser) CompanyRemove(param ReqCompanyRemove) ( | @@ -135,7 +135,7 @@ func (gateway HttplibAlliedCreationUser) CompanyRemove(param ReqCompanyRemove) ( | ||
135 | 135 | ||
136 | // CompanyGet 返回企业 | 136 | // CompanyGet 返回企业 |
137 | func (gateway HttplibAlliedCreationUser) CompanyGet(param ReqCompanyGet) (*DataCompanyGet, error) { | 137 | func (gateway HttplibAlliedCreationUser) CompanyGet(param ReqCompanyGet) (*DataCompanyGet, error) { |
138 | - url := gateway.baseUrL + "/company/{companyId}" | 138 | + url := gateway.baseUrL + "/company/" + strconv.Itoa(param.CompanyId) |
139 | method := "GET" | 139 | method := "GET" |
140 | req := gateway.CreateRequest(url, method) | 140 | req := gateway.CreateRequest(url, method) |
141 | log.Logger.Debug("向用户模块请求数据:返回企业。", map[string]interface{}{ | 141 | log.Logger.Debug("向用户模块请求数据:返回企业。", map[string]interface{}{ |
@@ -164,6 +164,66 @@ func (gateway HttplibAlliedCreationUser) CompanyGet(param ReqCompanyGet) (*DataC | @@ -164,6 +164,66 @@ func (gateway HttplibAlliedCreationUser) CompanyGet(param ReqCompanyGet) (*DataC | ||
164 | return &data, err | 164 | return &data, err |
165 | } | 165 | } |
166 | 166 | ||
167 | +func (gateway HttplibAlliedCreationUser) AuditCompany(param ReqCompanyAudit) (DataCompanyAudit, error) { | ||
168 | + url := gateway.baseUrL + fmt.Sprintf("/company/%d/audit", param.CompanyId) | ||
169 | + method := "post" | ||
170 | + req := gateway.CreateRequest(url, method) | ||
171 | + moduleDesc := "审核公司" | ||
172 | + //TODO traceID | ||
173 | + log.Logger.Debug("向用户模块请求数据:"+moduleDesc, map[string]interface{}{ | ||
174 | + "api": method + ":" + url, | ||
175 | + "param": param, | ||
176 | + }) | ||
177 | + req, err := req.JSONBody(param) | ||
178 | + if err != nil { | ||
179 | + return nil, fmt.Errorf("%v失败:%w", moduleDesc, err) | ||
180 | + } | ||
181 | + | ||
182 | + byteResult, err := req.Bytes() | ||
183 | + if err != nil { | ||
184 | + return nil, fmt.Errorf("%v失败:%w", moduleDesc, err) | ||
185 | + } | ||
186 | + | ||
187 | + var result service_gateway.GatewayResponse | ||
188 | + err = json.Unmarshal(byteResult, &result) | ||
189 | + if err != nil { | ||
190 | + return nil, fmt.Errorf("解析错误:%w", err) | ||
191 | + } | ||
192 | + var data DataCompanyAudit | ||
193 | + err = gateway.GetResponseData(result, &data) | ||
194 | + return data, err | ||
195 | +} | ||
196 | + | ||
197 | +func (gateway HttplibAlliedCreationUser) EnableCompany(param ReqCompanyEnable) (DataCompanyEnable, error) { | ||
198 | + url := gateway.baseUrL + fmt.Sprintf("/company/%d/enable", param.CompanyId) | ||
199 | + method := "post" | ||
200 | + req := gateway.CreateRequest(url, method) | ||
201 | + moduleDesc := "启用公司" | ||
202 | + //TODO traceID | ||
203 | + log.Logger.Debug("向用户模块请求数据:"+moduleDesc, map[string]interface{}{ | ||
204 | + "api": method + ":" + url, | ||
205 | + "param": param, | ||
206 | + }) | ||
207 | + req, err := req.JSONBody(param) | ||
208 | + if err != nil { | ||
209 | + return nil, fmt.Errorf("%v失败:%w", moduleDesc, err) | ||
210 | + } | ||
211 | + | ||
212 | + byteResult, err := req.Bytes() | ||
213 | + if err != nil { | ||
214 | + return nil, fmt.Errorf("%v失败:%w", moduleDesc, err) | ||
215 | + } | ||
216 | + | ||
217 | + var result service_gateway.GatewayResponse | ||
218 | + err = json.Unmarshal(byteResult, &result) | ||
219 | + if err != nil { | ||
220 | + return nil, fmt.Errorf("解析错误:%w", err) | ||
221 | + } | ||
222 | + var data DataCompanyEnable | ||
223 | + err = gateway.GetResponseData(result, &data) | ||
224 | + return data, err | ||
225 | +} | ||
226 | + | ||
167 | // CompanySearch 返回企业列表 | 227 | // CompanySearch 返回企业列表 |
168 | func (gateway HttplibAlliedCreationUser) CompanySearch(param ReqCompanySearch) (*DataCompanySearch, error) { | 228 | func (gateway HttplibAlliedCreationUser) CompanySearch(param ReqCompanySearch) (*DataCompanySearch, error) { |
169 | url := gateway.baseUrL + "/company/search" | 229 | url := gateway.baseUrL + "/company/search" |
@@ -430,3 +430,131 @@ func (gateway HttplibAlliedCreationUser) UserAccessMenus(param ReqUserAccessMenu | @@ -430,3 +430,131 @@ func (gateway HttplibAlliedCreationUser) UserAccessMenus(param ReqUserAccessMenu | ||
430 | err = gateway.GetResponseData(result, &data) | 430 | err = gateway.GetResponseData(result, &data) |
431 | return &data, err | 431 | return &data, err |
432 | } | 432 | } |
433 | + | ||
434 | +//UserSearch 搜索用户列表 | ||
435 | +func (gateway HttplibAlliedCreationUser) UserBaseSearch(param ReqUserBaseSearch) (*DataUserBaseSearch, error) { | ||
436 | + url := gateway.baseUrL + "/user-base/search" | ||
437 | + method := "post" | ||
438 | + req := gateway.CreateRequest(url, method) | ||
439 | + //TODO traceID | ||
440 | + log.Logger.Debug("向用户模块请求数据:搜索用户列表。", map[string]interface{}{ | ||
441 | + "api": method + ":" + url, | ||
442 | + "param": param, | ||
443 | + }) | ||
444 | + req, err := req.JSONBody(param) | ||
445 | + if err != nil { | ||
446 | + return nil, fmt.Errorf("搜索用户列表失败:%w", err) | ||
447 | + } | ||
448 | + | ||
449 | + byteResult, err := req.Bytes() | ||
450 | + if err != nil { | ||
451 | + return nil, fmt.Errorf("获取搜索用户列表失败:%w", err) | ||
452 | + } | ||
453 | + if param.Limit > 50 { | ||
454 | + //太多就不打印了 | ||
455 | + log.Logger.Debug("获取用户模块请求数据:搜索用户列表。", map[string]interface{}{ | ||
456 | + "result": string(byteResult), | ||
457 | + }) | ||
458 | + } | ||
459 | + | ||
460 | + var result service_gateway.GatewayResponse | ||
461 | + err = json.Unmarshal(byteResult, &result) | ||
462 | + if err != nil { | ||
463 | + return nil, fmt.Errorf("解析搜索用户列表:%w", err) | ||
464 | + } | ||
465 | + var data DataUserBaseSearch | ||
466 | + err = gateway.GetResponseData(result, &data) | ||
467 | + return &data, err | ||
468 | +} | ||
469 | + | ||
470 | +func (gateway HttplibAlliedCreationUser) EnableUserBase(param ReqEnableUserBase) (interface{}, error) { | ||
471 | + url := gateway.baseUrL + "/user-base/batch-enable" | ||
472 | + method := "post" | ||
473 | + req := gateway.CreateRequest(url, method) | ||
474 | + //TODO traceID | ||
475 | + log.Logger.Debug("向用户模块请求数据:搜索用户列表。", map[string]interface{}{ | ||
476 | + "api": method + ":" + url, | ||
477 | + "param": param, | ||
478 | + }) | ||
479 | + req, err := req.JSONBody(param) | ||
480 | + if err != nil { | ||
481 | + return nil, fmt.Errorf("搜索用户列表失败:%w", err) | ||
482 | + } | ||
483 | + | ||
484 | + byteResult, err := req.Bytes() | ||
485 | + if err != nil { | ||
486 | + return nil, fmt.Errorf("获取搜索用户列表失败:%w", err) | ||
487 | + } | ||
488 | + | ||
489 | + var result service_gateway.GatewayResponse | ||
490 | + err = json.Unmarshal(byteResult, &result) | ||
491 | + if err != nil { | ||
492 | + return nil, fmt.Errorf("解析搜索用户列表:%w", err) | ||
493 | + } | ||
494 | + //var data DataCompanyEnable | ||
495 | + //err = gateway.GetResponseData(result, &data) | ||
496 | + return nil, err | ||
497 | +} | ||
498 | + | ||
499 | +func (gateway HttplibAlliedCreationUser) AdminUserCreate(param ReqCreateUser) (*DataCreateUser, error) { | ||
500 | + url := gateway.baseUrL + "/admin-user" | ||
501 | + method := "post" | ||
502 | + req := gateway.CreateRequest(url, method) | ||
503 | + //TODO traceID | ||
504 | + log.Logger.Debug("向用户模块请求数据:创建用户。", map[string]interface{}{ | ||
505 | + "api": method + ":" + url, | ||
506 | + "param": param, | ||
507 | + }) | ||
508 | + req, err := req.JSONBody(param) | ||
509 | + if err != nil { | ||
510 | + return nil, fmt.Errorf("创建用户失败:%w", err) | ||
511 | + } | ||
512 | + | ||
513 | + byteResult, err := req.Bytes() | ||
514 | + if err != nil { | ||
515 | + return nil, fmt.Errorf("获取创建用户失败:%w", err) | ||
516 | + } | ||
517 | + log.Logger.Debug("获取用户模块请求数据:创建用户。", map[string]interface{}{ | ||
518 | + "result": string(byteResult), | ||
519 | + }) | ||
520 | + var result service_gateway.GatewayResponse | ||
521 | + err = json.Unmarshal(byteResult, &result) | ||
522 | + if err != nil { | ||
523 | + return nil, fmt.Errorf("解析创建用户:%w", err) | ||
524 | + } | ||
525 | + var data DataCreateUser | ||
526 | + err = gateway.GetResponseData(result, &data) | ||
527 | + return &data, err | ||
528 | +} | ||
529 | + | ||
530 | +//UserUpdate 更新用户 | ||
531 | +func (gateway HttplibAlliedCreationUser) AdminUserUpdate(param ReqUpdateUser) (*DataUpdateUser, error) { | ||
532 | + url := gateway.baseUrL + "/admin-user/" + strconv.Itoa(int(param.UserId)) | ||
533 | + method := "put" | ||
534 | + req := gateway.CreateRequest(url, method) | ||
535 | + //TODO traceID | ||
536 | + log.Logger.Debug("向用户模块请求数据:更新用户。", map[string]interface{}{ | ||
537 | + "api": method + ":" + url, | ||
538 | + "param": param, | ||
539 | + }) | ||
540 | + req, err := req.JSONBody(param) | ||
541 | + if err != nil { | ||
542 | + return nil, fmt.Errorf("请求更新用户失败:%w", err) | ||
543 | + } | ||
544 | + | ||
545 | + byteResult, err := req.Bytes() | ||
546 | + if err != nil { | ||
547 | + return nil, fmt.Errorf("获取更新用户失败:%w", err) | ||
548 | + } | ||
549 | + log.Logger.Debug("获取用户模块请求数据:更新用户。", map[string]interface{}{ | ||
550 | + "result": string(byteResult), | ||
551 | + }) | ||
552 | + var result service_gateway.GatewayResponse | ||
553 | + err = json.Unmarshal(byteResult, &result) | ||
554 | + if err != nil { | ||
555 | + return nil, fmt.Errorf("解析更新用户:%w", err) | ||
556 | + } | ||
557 | + var data DataUpdateUser | ||
558 | + err = gateway.GetResponseData(result, &data) | ||
559 | + return &data, err | ||
560 | +} |
1 | package allied_creation_user | 1 | package allied_creation_user |
2 | 2 | ||
3 | +import "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
4 | + | ||
3 | //企业注册 | 5 | //企业注册 |
4 | type ( | 6 | type ( |
5 | ReqAuthCompanySignUp struct { | 7 | ReqAuthCompanySignUp struct { |
@@ -9,6 +11,15 @@ type ( | @@ -9,6 +11,15 @@ type ( | ||
9 | Password string `json:"password"` | 11 | Password string `json:"password"` |
10 | Phone string `json:"phone"` | 12 | Phone string `json:"phone"` |
11 | Scale string `json:"scale"` | 13 | Scale string `json:"scale"` |
14 | + | ||
15 | + // 法人 | ||
16 | + LegalPerson string `cname:"法人" json:"legalPerson" valid:"Required"` | ||
17 | + // 社会信用代码 | ||
18 | + SocialCreditCode string `cname:"社会信用代码" json:"socialCreditCode" valid:"Required"` | ||
19 | + // 营业执照所在地 | ||
20 | + BusinessLicenseAddress domain.BusinessLicenseAddress `cname:"营业执照所在地" json:"businessLicenseAddress" valid:"Required"` | ||
21 | + // 营业执照-附件 | ||
22 | + BusinessLicenseAttachments []domain.Attachment `cname:"营业执照-附件" json:"businessLicenseAttachments" valid:"Required"` | ||
12 | } | 23 | } |
13 | 24 | ||
14 | DataAuthCompanySignUp struct { | 25 | DataAuthCompanySignUp struct { |
1 | package allied_creation_user | 1 | package allied_creation_user |
2 | 2 | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | + "time" | ||
6 | +) | ||
7 | + | ||
3 | //创建企业 | 8 | //创建企业 |
4 | type ( | 9 | type ( |
5 | ReqCompanyCreate struct { | 10 | ReqCompanyCreate struct { |
@@ -49,18 +54,78 @@ type ( | @@ -49,18 +54,78 @@ type ( | ||
49 | //返回企业 | 54 | //返回企业 |
50 | type ( | 55 | type ( |
51 | ReqCompanyGet struct { | 56 | ReqCompanyGet struct { |
57 | + CompanyId int `json:"companyId"` | ||
52 | } | 58 | } |
53 | 59 | ||
54 | - DataCompanyGet struct { | 60 | + DataCompanyGet CompanyItem |
61 | +) | ||
62 | + | ||
63 | +type ( | ||
64 | + ReqCompanyAudit struct { | ||
65 | + CompanyId int `json:"-"` | ||
66 | + // 审核状态 | ||
67 | + Status int `cname:"审核状态" json:"status" valid:"Required"` | ||
68 | + // 备注 | ||
69 | + Remark string `cname:"备注" json:"remark" valid:"Required"` | ||
55 | } | 70 | } |
71 | + | ||
72 | + DataCompanyAudit map[string]interface{} | ||
73 | +) | ||
74 | + | ||
75 | +type ( | ||
76 | + ReqCompanyEnable struct { | ||
77 | + CompanyId int `json:"-"` | ||
78 | + // 审核状态 | ||
79 | + Status int `cname:"审核状态" json:"status" valid:"Required"` | ||
80 | + } | ||
81 | + | ||
82 | + DataCompanyEnable map[string]interface{} | ||
56 | ) | 83 | ) |
57 | 84 | ||
58 | //返回企业列表 | 85 | //返回企业列表 |
59 | type ( | 86 | type ( |
60 | ReqCompanySearch struct { | 87 | ReqCompanySearch struct { |
88 | + // 查询偏离量 | ||
89 | + Offset int `cname:"查询偏离量" json:"offset,omitempty"` | ||
90 | + // 查询限制 | ||
91 | + Limit int `cname:"查询限制" json:"limit,omitempty"` | ||
92 | + // 状态 | ||
93 | + Status int `cname:"状态" json:"status,omitempty"` | ||
94 | + // 企业名称 | ||
95 | + CompanyName string `cname:"企业名称" json:"companyName,omitempty"` | ||
61 | } | 96 | } |
62 | 97 | ||
63 | DataCompanySearch struct { | 98 | DataCompanySearch struct { |
99 | + Companys []CompanyItem `json:"companys"` | ||
100 | + Count int `json:"count"` | ||
101 | + } | ||
102 | + | ||
103 | + CompanyItem struct { | ||
104 | + CompanyId int `json:"companyId"` | ||
105 | + CompanyConfig struct { | ||
106 | + SystemName string `json:"systemName"` | ||
107 | + Theme string `json:"theme"` | ||
108 | + } `json:"companyConfig"` | ||
109 | + CompanyInfo struct { | ||
110 | + CompanyName string `json:"companyName"` | ||
111 | + Scale string `json:"scale"` | ||
112 | + IndustryCategory string `json:"industryCategory"` | ||
113 | + RegisteredTime time.Time `json:"registeredTime"` | ||
114 | + Legal struct { | ||
115 | + LegalPerson string `json:"legalPerson"` | ||
116 | + SocialCreditCode string `json:"socialCreditCode"` | ||
117 | + BusinessLicenseAddress struct { | ||
118 | + Province string `json:"province"` | ||
119 | + City string `json:"city"` | ||
120 | + Address string `json:"address"` | ||
121 | + } `json:"businessLicenseAddress"` | ||
122 | + BusinessLicenseAttachments []domain.Attachment `json:"businessLicenseAttachments"` | ||
123 | + } `json:"legal"` | ||
124 | + Remark string `json:"备注"` | ||
125 | + } `json:"companyInfo"` | ||
126 | + Status int `json:"status"` | ||
127 | + CreatedAt time.Time `json:"createdAt"` | ||
128 | + UpdatedAt time.Time `json:"updatedAt"` | ||
64 | } | 129 | } |
65 | ) | 130 | ) |
66 | 131 |
@@ -23,6 +23,10 @@ type UserDetail struct { | @@ -23,6 +23,10 @@ type UserDetail struct { | ||
23 | Email string `json:"email"` | 23 | Email string `json:"email"` |
24 | UserName string `json:"userName"` | 24 | UserName string `json:"userName"` |
25 | Avatar string `json:"avatar"` | 25 | Avatar string `json:"avatar"` |
26 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
27 | + EmployeeType int `json:"employeeType,omitempty"` | ||
28 | + // IC卡号 | ||
29 | + IcCardNumber string `json:"icCardNumber,omitempty"` | ||
26 | } `json:"userInfo,omitempty"` | 30 | } `json:"userInfo,omitempty"` |
27 | Company *struct { | 31 | Company *struct { |
28 | CompanyId int `json:"companyId"` | 32 | CompanyId int `json:"companyId"` |
@@ -69,6 +73,11 @@ type UserDetail struct { | @@ -69,6 +73,11 @@ type UserDetail struct { | ||
69 | } `json:"im"` | 73 | } `json:"im"` |
70 | // 收藏的菜单(工作台)(菜单编码列表) | 74 | // 收藏的菜单(工作台)(菜单编码列表) |
71 | FavoriteMenus []string `json:"favoriteMenus"` | 75 | FavoriteMenus []string `json:"favoriteMenus"` |
76 | + Favorite struct { | ||
77 | + OrgItems []int64 `json:"orgItems"` | ||
78 | + Referer string `json:"referer"` | ||
79 | + LastLogInAt int64 `json:"lastLogInAt"` | ||
80 | + } `json:"favorite"` | ||
72 | // 创建时间 | 81 | // 创建时间 |
73 | CreatedAt time.Time `json:"createdAt,omitempty"` | 82 | CreatedAt time.Time `json:"createdAt,omitempty"` |
74 | } | 83 | } |
@@ -106,6 +115,8 @@ type ( | @@ -106,6 +115,8 @@ type ( | ||
106 | EnableStatus int `cname:"状态(1:启用 2:禁用 3:注销)" json:"enableStatus,omitempty"` | 115 | EnableStatus int `cname:"状态(1:启用 2:禁用 3:注销)" json:"enableStatus,omitempty"` |
107 | // 状态(1:启用 2:禁用 3:注销) | 116 | // 状态(1:启用 2:禁用 3:注销) |
108 | InEnableStatus []int `cname:"状态(1:启用 2:禁用 3:注销)" json:"inEnableStatus,omitempty"` | 117 | InEnableStatus []int `cname:"状态(1:启用 2:禁用 3:注销)" json:"inEnableStatus,omitempty"` |
118 | + // 匹配多个公司 | ||
119 | + InCompanyIds []interface{} `json:"inCompanyIds,omitempty"` | ||
109 | 120 | ||
110 | // 自定义高级查询 | 121 | // 自定义高级查询 |
111 | AdvancedQuery string `json:"advancedQuery"` | 122 | AdvancedQuery string `json:"advancedQuery"` |
@@ -151,6 +162,13 @@ type ( | @@ -151,6 +162,13 @@ type ( | ||
151 | Avatar string `json:"avatar"` | 162 | Avatar string `json:"avatar"` |
152 | // 邮箱 | 163 | // 邮箱 |
153 | Email string `json:"email"` | 164 | Email string `json:"email"` |
165 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
166 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
167 | + // IC卡号 | ||
168 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
169 | + | ||
170 | + // 部门 | ||
171 | + DepartmentName string `cname:"部门" json:"departmentName"` | ||
154 | } | 172 | } |
155 | DataCreateUser struct { | 173 | DataCreateUser struct { |
156 | UserId int `json:"userId"` | 174 | UserId int `json:"userId"` |
@@ -187,6 +205,13 @@ type ( | @@ -187,6 +205,13 @@ type ( | ||
187 | Avatar string `json:"avatar"` | 205 | Avatar string `json:"avatar"` |
188 | // 邮箱 | 206 | // 邮箱 |
189 | Email string `json:"email"` | 207 | Email string `json:"email"` |
208 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
209 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
210 | + // IC卡号 | ||
211 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
212 | + // 运营管理扩展 | ||
213 | + // 部门 | ||
214 | + DepartmentName string `cname:"部门" json:"departmentName"` | ||
190 | } | 215 | } |
191 | 216 | ||
192 | DataUpdateUser struct { | 217 | DataUpdateUser struct { |
@@ -405,7 +430,65 @@ type ( | @@ -405,7 +430,65 @@ type ( | ||
405 | CooperationCompany string `json:"cooperationCompany"` | 430 | CooperationCompany string `json:"cooperationCompany"` |
406 | // 共创到期时间 (yyyy-MM-dd) cooperationDeadline | 431 | // 共创到期时间 (yyyy-MM-dd) cooperationDeadline |
407 | CooperationDeadline string `json:"cooperationDeadline"` | 432 | CooperationDeadline string `json:"cooperationDeadline"` |
433 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
434 | + EmployeeType string `json:"employeeType,omitempty"` | ||
435 | + // IC卡号 | ||
436 | + IcCardNumber string `json:"icCardNumber,omitempty"` | ||
408 | // 失败理由 | 437 | // 失败理由 |
409 | FailReason string `json:"failReason"` | 438 | FailReason string `json:"failReason"` |
410 | } | 439 | } |
411 | ) | 440 | ) |
441 | + | ||
442 | +//搜索用户列表 | ||
443 | +type ( | ||
444 | + ReqUserBaseSearch struct { | ||
445 | + // 查询偏离量 | ||
446 | + Offset int `json:"offset"` | ||
447 | + // 查询限制 | ||
448 | + Limit int `json:"limit"` | ||
449 | + // 用户姓名 | ||
450 | + UserName string `cname:"用户姓名" json:"userName,omitempty"` | ||
451 | + // 在用户列表内 | ||
452 | + InUserBaseIds []int64 `cname:"用户姓名" json:"inUserBaseIds,omitempty"` | ||
453 | + // 所属组织 | ||
454 | + OrgName string `cname:"所属组织" json:"orgName,omitempty"` | ||
455 | + // 关闭查询限制 | ||
456 | + DisableLimit bool `cname:"关闭查询限制" json:"disableLimit,omitempty"` | ||
457 | + // 获取组织 | ||
458 | + FetchOrgBelong bool `cname:"获取组织" json:"fetchOrgBelong,omitempty"` | ||
459 | + } | ||
460 | + | ||
461 | + //DataUserSearch 搜索用户列表 | ||
462 | + DataUserBaseSearch struct { | ||
463 | + Count int64 `json:"count"` | ||
464 | + Users []UserBaseDetail `json:"users"` | ||
465 | + } | ||
466 | + | ||
467 | + UserBaseDetail struct { | ||
468 | + UserBaseId int `json:"userBaseId"` | ||
469 | + LastLogIn string `json:"lastLogIn"` | ||
470 | + UserInfo struct { | ||
471 | + UserName string `json:"userName"` | ||
472 | + Phone string `json:"phone"` | ||
473 | + Avatar string `json:"avatar"` | ||
474 | + } `json:"userInfo"` | ||
475 | + Status int `json:"status"` | ||
476 | + Referer string `json:"referer"` | ||
477 | + UserOrg []struct { | ||
478 | + OrgId int `json:"orgId"` | ||
479 | + OrgName string `json:"orgName"` | ||
480 | + } `json:"userOrg"` | ||
481 | + RegistrationDate string `json:"registrationDate"` | ||
482 | + } | ||
483 | +) | ||
484 | + | ||
485 | +type ( | ||
486 | + ReqEnableUserBase struct { | ||
487 | + UserBaseIds []int64 `cname:"用户id列表" json:"userBaseIds" valid:"Required"` | ||
488 | + // 启用状态(启用:1 禁用:2 注销:3) | ||
489 | + EnableStatus int `cname:"启用状态(启用:1 禁用:2 注销:3)" json:"enableStatus" valid:"Required"` | ||
490 | + } | ||
491 | + | ||
492 | + //DataUserSearch 搜索用户列表 | ||
493 | + DataEnableUserBase = interface{} | ||
494 | +) |
1 | +package cost_structured | ||
2 | + | ||
3 | +import ( | ||
4 | + "encoding/json" | ||
5 | + "fmt" | ||
6 | + "strings" | ||
7 | + "time" | ||
8 | + | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" | ||
10 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
11 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway" | ||
12 | +) | ||
13 | + | ||
14 | +//HttpLibCostStructured 成本结构化 | ||
15 | +type HttpLibCostStructured struct { | ||
16 | + service_gateway.BaseServiceGateway | ||
17 | + baseUrL string | ||
18 | +} | ||
19 | + | ||
20 | +func NewHttpLibCostStructured(operator domain.Operator) *HttpLibCostStructured { | ||
21 | + return &HttpLibCostStructured{ | ||
22 | + BaseServiceGateway: service_gateway.BaseServiceGateway{ | ||
23 | + ConnectTimeout: 100 * time.Second, | ||
24 | + ReadWriteTimeout: 100 * time.Second, | ||
25 | + CompanyId: operator.CompanyId, | ||
26 | + OrgId: operator.OrgId, | ||
27 | + InOrgIds: operator.OrgIds, | ||
28 | + UserId: operator.UserId, | ||
29 | + UserBaseId: operator.UserBaseId, | ||
30 | + }, | ||
31 | + baseUrL: constant.COST_STRUCTURED, | ||
32 | + } | ||
33 | + | ||
34 | +} | ||
35 | + | ||
36 | +func (gateway HttpLibCostStructured) BaseUrl() string { | ||
37 | + return gateway.baseUrL | ||
38 | +} | ||
39 | + | ||
40 | +//批量添加成本管理 | ||
41 | +func (gateway HttpLibCostStructured) BatchCreateCostManagemant(param BatchAddCostManagemantRequest) (*service_gateway.GatewayResponse, error) { | ||
42 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/cost-managemants/batch-create-cost-managemants") | ||
43 | + method := "post" | ||
44 | + //var data BatchAddCostManagemantResponse | ||
45 | + //err := gateway.FastDoRequest(url, method, param, &data) | ||
46 | + | ||
47 | + r := gateway.CreateRequest(url, method) | ||
48 | + if len(gateway.InOrgIds) > 0 { | ||
49 | + r.Header("orgIds", strings.Join(service_gateway.ToArrayString(gateway.InOrgIds), ",")) | ||
50 | + } | ||
51 | + req, err := r.JSONBody(param) | ||
52 | + if err != nil { | ||
53 | + return nil,err | ||
54 | + } | ||
55 | + byteResult, err:= req.Bytes() | ||
56 | + if err != nil { | ||
57 | + return nil,err | ||
58 | + } | ||
59 | + var result service_gateway.GatewayResponse | ||
60 | + err = json.Unmarshal(byteResult, &result) | ||
61 | + if err != nil { | ||
62 | + return nil,err | ||
63 | + } | ||
64 | + return &result, nil | ||
65 | +} | ||
66 | +type BatchAddCostManagemantRequest struct { | ||
67 | + *domain.BatchCreateCostManagemant | ||
68 | +} | ||
69 | +type BatchAddCostManagemantResponse []interface{} | ||
70 | + | ||
71 | +func (gateway HttpLibCostStructured) ListCostManagemant(param ListCostManagemantRequest) (*ListCostManagemantResponse, error) { | ||
72 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/cost-managemants/") | ||
73 | + method := "post" | ||
74 | + var data ListCostManagemantResponse | ||
75 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
76 | + return &data, err | ||
77 | +} | ||
78 | + | ||
79 | + | ||
80 | + | ||
81 | + | ||
82 | + | ||
83 | + | ||
84 | + | ||
85 | +type ( | ||
86 | + ListCostManagemantRequest struct { | ||
87 | + // 页码 | ||
88 | + PageNumber int `cname:"页码" json:"pageNumber,omitempty"` | ||
89 | + // 页数 | ||
90 | + PageSize int `cname:"页数" json:"pageSize,omitempty"` | ||
91 | + // 查询项目(结构)类型 | ||
92 | + Types int `cname:"查询项目(结构)类型" json:"types" valid:"Required"` | ||
93 | + // 查询项目id | ||
94 | + ProjectId int64 `cname:"查询项目id" json:"projectId"` | ||
95 | + } | ||
96 | + ListCostManagemantResponse struct { | ||
97 | + Grid struct { | ||
98 | + List []SearchProductItem `json:"list"` | ||
99 | + Total int `json:"total"` | ||
100 | + } `json:"grid"` | ||
101 | + } | ||
102 | + SearchProductItem struct { | ||
103 | + ProductID int `json:"productId"` | ||
104 | + ProductCode string `json:"productCode"` | ||
105 | + ProductName string `json:"productName"` | ||
106 | + ProductCategory string `json:"productCategory"` | ||
107 | + Unit string `json:"unit"` | ||
108 | + UnitWeight float64 `json:"unitWeight"` | ||
109 | + } | ||
110 | +) | ||
111 | + | ||
112 | + | ||
113 | + | ||
114 | + | ||
115 | + | ||
116 | + | ||
117 | + | ||
118 | +/*设备*/ | ||
119 | + | ||
120 | + | ||
121 | + | ||
122 | +type BatchAddDeviceRequest struct { | ||
123 | + List []*domain.ImportDeviceItem `json:"list"` | ||
124 | +} | ||
125 | +type BatchAddDeviceResponse []interface{} | ||
126 | + | ||
127 | +/**生产记录**/ | ||
128 | +//SearchProduct 搜索员工产能统计 | ||
129 | +func (gateway HttpLibCostStructured) SearchEmployeeProductive(param SearchEmployeeProductiveRequest) (*SearchEmployeeProductiveResponse, error) { | ||
130 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/employee-productive/search") | ||
131 | + method := "post" | ||
132 | + var data SearchEmployeeProductiveResponse | ||
133 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
134 | + return &data, err | ||
135 | +} | ||
136 | + | ||
137 | +type ( | ||
138 | + SearchEmployeeProductiveRequest struct { | ||
139 | + // 页码 | ||
140 | + //PageNumber int `cname:"页码" json:"pageNumber,omitempty"` | ||
141 | + // 页数 | ||
142 | + //PageSize int `cname:"页数" json:"pageSize,omitempty"` | ||
143 | + // 车间名称 | ||
144 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
145 | + // 生产线名称 | ||
146 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
147 | + // 工段名称 | ||
148 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
149 | + // 姓名 | ||
150 | + UserName string `cname:"姓名" json:"userName"` | ||
151 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
152 | + EmployeeType string `cname:"员工类型 1:固定 2:派遣 3.临时" json:"employeeType"` | ||
153 | + // 开始时间 | ||
154 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
155 | + // 结束时间 | ||
156 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
157 | + } | ||
158 | + SearchEmployeeProductiveResponse struct { | ||
159 | + Grid struct { | ||
160 | + List []EmployeeProductiveItem `json:"list"` | ||
161 | + Total int `json:"total"` | ||
162 | + } `json:"grid"` | ||
163 | + } | ||
164 | + EmployeeProductiveItem struct { | ||
165 | + EmployeeProductRecordID int `json:"employeeProductRecordId"` | ||
166 | + ProductWorker struct { | ||
167 | + UserID int `json:"userId"` | ||
168 | + UserName string `json:"userName"` | ||
169 | + Avatar string `json:"avatar"` | ||
170 | + Phone string `json:"phone"` | ||
171 | + EmployeeType int `json:"employeeType"` | ||
172 | + } `json:"productWorker"` | ||
173 | + WorkStationID string `json:"workStationId"` | ||
174 | + WorkshopID int `json:"workshopId"` | ||
175 | + WorkshopName string `json:"workshopName"` | ||
176 | + LineID int `json:"lineId"` | ||
177 | + LineName string `json:"lineName"` | ||
178 | + SectionID int `json:"sectionId"` | ||
179 | + SectionName string `json:"sectionName"` | ||
180 | + WorkOn string `json:"workOn"` | ||
181 | + PlanProductName string `json:"planProductName"` | ||
182 | + BatchNumber string `json:"batchNumber"` | ||
183 | + ParticipateType int `json:"participateType"` | ||
184 | + ProductWeigh float64 `json:"productWeigh"` | ||
185 | + SecondLevelWeigh float64 `json:"secondLevelWeigh"` | ||
186 | + CreatedAt string `json:"createdAt"` | ||
187 | + OrgName string `json:"orgName"` | ||
188 | + AuthFlag bool `json:"authFlag"` | ||
189 | + QualificationRate int `json:"qualificationRate"` | ||
190 | + } | ||
191 | +) | ||
192 | + | ||
193 | +//SearchProduct 搜索员工产能统计 | ||
194 | +func (gateway HttpLibCostStructured) SearchWorkshopProductive(param SearchWorkshopProductiveRequest) (*SearchWorkshopProductiveResponse, error) { | ||
195 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/workshop-productive/search") | ||
196 | + method := "post" | ||
197 | + var data SearchWorkshopProductiveResponse | ||
198 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
199 | + return &data, err | ||
200 | +} | ||
201 | + | ||
202 | +type ( | ||
203 | + SearchWorkshopProductiveRequest struct { | ||
204 | + // 品名 | ||
205 | + PlanProductName string `cname:"品名" json:"planProductName,omitempty"` | ||
206 | + // 工段名称 | ||
207 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
208 | + // 开始时间 | ||
209 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
210 | + // 结束时间 | ||
211 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
212 | + } | ||
213 | + SearchWorkshopProductiveResponse struct { | ||
214 | + Grid struct { | ||
215 | + List []WorkshopProductiveItem `json:"list"` | ||
216 | + Total int `json:"total"` | ||
217 | + } `json:"grid"` | ||
218 | + } | ||
219 | + WorkshopProductiveItem struct { | ||
220 | + EmployeeProductRecordID int `json:"employeeProductRecordId"` | ||
221 | + ProductWorker struct { | ||
222 | + UserID int `json:"userId"` | ||
223 | + UserName string `json:"userName"` | ||
224 | + Avatar string `json:"avatar"` | ||
225 | + Phone string `json:"phone"` | ||
226 | + EmployeeType int `json:"employeeType"` | ||
227 | + } `json:"productWorker"` | ||
228 | + WorkStationID string `json:"workStationId"` | ||
229 | + WorkshopID int `json:"workshopId"` | ||
230 | + WorkshopName string `json:"workshopName"` | ||
231 | + LineID int `json:"lineId"` | ||
232 | + LineName string `json:"lineName"` | ||
233 | + SectionID int `json:"sectionId"` | ||
234 | + SectionName string `json:"sectionName"` | ||
235 | + WorkOn string `json:"workOn"` | ||
236 | + PlanProductName string `json:"planProductName"` | ||
237 | + BatchNumber string `json:"batchNumber"` | ||
238 | + //ParticipateType int `json:"participateType"` | ||
239 | + // 投入量 | ||
240 | + DevotedProductWeigh float64 `json:"devotedProductWeigh"` | ||
241 | + // 产能 | ||
242 | + ProductWeigh float64 `json:"productWeigh"` | ||
243 | + // 二级品产能 | ||
244 | + SecondLevelWeigh float64 `json:"secondLevelWeigh"` | ||
245 | + CreatedAt string `json:"createdAt"` | ||
246 | + OrgName string `json:"orgName"` | ||
247 | + AuthFlag bool `json:"authFlag"` | ||
248 | + QualificationRate int `json:"qualificationRate"` | ||
249 | + } | ||
250 | +) | ||
251 | + | ||
252 | +/*** 考勤记录 ***/ | ||
253 | +//SearchEmployeeAttendanceStatics 搜索员工工时统计 | ||
254 | +func (gateway HttpLibCostStructured) SearchEmployeeAttendanceStatics(param SearchEmployeeAttendanceStaticsRequest) (*SearchEmployeeAttendanceStaticsResponse, error) { | ||
255 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/employee-attendance-statics/search") | ||
256 | + method := "post" | ||
257 | + var data SearchEmployeeAttendanceStaticsResponse | ||
258 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
259 | + return &data, err | ||
260 | +} | ||
261 | + | ||
262 | +type ( | ||
263 | + SearchEmployeeAttendanceStaticsRequest struct { | ||
264 | + // 车间名称 | ||
265 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
266 | + // 生产线名称 | ||
267 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
268 | + // 工段名称 | ||
269 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
270 | + // 姓名 | ||
271 | + UserName string `cname:"姓名" json:"userName,omitempty"` | ||
272 | + // 考勤状态 1.未审核 2:已审核 4.自动审核 | ||
273 | + AttendanceStatus int `cname:"考勤状态 1.未审核 2:已审核 4.自动审核" json:"attendanceStatus,omitempty"` | ||
274 | + // 开始时间 | ||
275 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
276 | + // 结束时间 | ||
277 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
278 | + } | ||
279 | + SearchEmployeeAttendanceStaticsResponse struct { | ||
280 | + Grid struct { | ||
281 | + List []SearchEmployeeAttendanceStaticsItem `json:"list"` | ||
282 | + Total int `json:"total"` | ||
283 | + } `json:"grid"` | ||
284 | + } | ||
285 | + SearchEmployeeAttendanceStaticsItem struct { | ||
286 | + ProductAttendanceID int `json:"productAttendanceId"` | ||
287 | + SignDate string `json:"signDate"` | ||
288 | + WorkStationID string `json:"workStationId"` | ||
289 | + WorkshopID int `json:"workshopId"` | ||
290 | + WorkshopName string `json:"workshopName"` | ||
291 | + LineID int `json:"lineId"` | ||
292 | + LineName string `json:"lineName"` | ||
293 | + SectionID int `json:"sectionId"` | ||
294 | + SectionName string `json:"sectionName"` | ||
295 | + ProductWorker struct { | ||
296 | + UserID int `json:"userId"` | ||
297 | + UserName string `json:"userName"` | ||
298 | + EmployeeType int `json:"employeeType"` | ||
299 | + Avatar string `json:"avatar"` | ||
300 | + Phone string `json:"phone"` | ||
301 | + } `json:"productWorker"` | ||
302 | + AttendanceType int `json:"attendanceType"` | ||
303 | + AttendanceStatus int `json:"attendanceStatus"` | ||
304 | + AttendanceTypeDescription string `json:"attendanceTypeDescription"` | ||
305 | + EmployeeTypeDescription string `json:"employeeTypeDescription"` | ||
306 | + AttendanceStatusDescription string `json:"attendanceStatusDescription"` | ||
307 | + WorkTime float64 `json:"workTime"` | ||
308 | + OrgName string `json:"orgName"` | ||
309 | + AuthFlag bool `json:"authFlag"` | ||
310 | + } | ||
311 | +) | ||
312 | + | ||
313 | +//SearchEmployeeAttendanceStatics 搜索员工工时统计 | ||
314 | +func (gateway HttpLibCostStructured) SearchWorkshopWorkTimeStatics(param SearchWorkshopWorkTimeStaticsRequest) (*SearchWorkshopWorkTimeStaticsResponse, error) { | ||
315 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/workshop-attendance-statics/search") | ||
316 | + method := "post" | ||
317 | + var data SearchWorkshopWorkTimeStaticsResponse | ||
318 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
319 | + return &data, err | ||
320 | +} | ||
321 | + | ||
322 | +type ( | ||
323 | + SearchWorkshopWorkTimeStaticsRequest struct { | ||
324 | + // 车间名称 | ||
325 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
326 | + // 生产线名称 | ||
327 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
328 | + // 开始时间 | ||
329 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
330 | + // 结束时间 | ||
331 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
332 | + } | ||
333 | + SearchWorkshopWorkTimeStaticsResponse struct { | ||
334 | + Grid struct { | ||
335 | + List []SearchWorkshopWorkTimeStaticsItem `json:"list"` | ||
336 | + Total int `json:"total"` | ||
337 | + } `json:"grid"` | ||
338 | + } | ||
339 | + SearchWorkshopWorkTimeStaticsItem struct { | ||
340 | + WorkshopWorkTimeRecordID int `json:"workshopWorkTimeRecordId"` | ||
341 | + WorkStationID string `json:"workStationId"` | ||
342 | + WorkshopID int `json:"workshopId"` | ||
343 | + WorkshopName string `json:"workshopName"` | ||
344 | + LineID int `json:"lineId"` | ||
345 | + LineName string `json:"lineName"` | ||
346 | + SectionID int `json:"sectionId"` | ||
347 | + SectionName string `json:"sectionName"` | ||
348 | + EftWorkTime float64 `json:"eftWorkTime"` | ||
349 | + EdWorkTime int `json:"edWorkTime"` | ||
350 | + EptWorkTime int `json:"eptWorkTime"` | ||
351 | + RecordDate string `json:"recordDate"` | ||
352 | + OrgName string `json:"orgName"` | ||
353 | + AuthFlag bool `json:"authFlag"` | ||
354 | + } | ||
355 | +) |
@@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
5 | "fmt" | 5 | "fmt" |
6 | "github.com/linmadan/egglib-go/utils/json" | 6 | "github.com/linmadan/egglib-go/utils/json" |
7 | "strconv" | 7 | "strconv" |
8 | + "strings" | ||
8 | "time" | 9 | "time" |
9 | 10 | ||
10 | "github.com/beego/beego/v2/client/httplib" | 11 | "github.com/beego/beego/v2/client/httplib" |
@@ -27,6 +28,7 @@ type BaseServiceGateway struct { | @@ -27,6 +28,7 @@ type BaseServiceGateway struct { | ||
27 | ReadWriteTimeout time.Duration | 28 | ReadWriteTimeout time.Duration |
28 | CompanyId int64 | 29 | CompanyId int64 |
29 | OrgId int64 | 30 | OrgId int64 |
31 | + InOrgIds []int64 | ||
30 | UserId int64 | 32 | UserId int64 |
31 | UserBaseId int64 | 33 | UserBaseId int64 |
32 | } | 34 | } |
@@ -66,3 +68,57 @@ func (gateway BaseServiceGateway) GetResponseData(result GatewayResponse, data i | @@ -66,3 +68,57 @@ func (gateway BaseServiceGateway) GetResponseData(result GatewayResponse, data i | ||
66 | } | 68 | } |
67 | return nil | 69 | return nil |
68 | } | 70 | } |
71 | + | ||
72 | +func (gateway BaseServiceGateway) FastDoRequest(url, method string, param interface{}, data interface{}) error { | ||
73 | + err := gateway.DoRequest(Request{ | ||
74 | + Url: url, | ||
75 | + Method: method, | ||
76 | + Param: param, | ||
77 | + }, &data) | ||
78 | + log.Logger.Info("接口请求:----", map[string]interface{}{ | ||
79 | + "url": url, | ||
80 | + "method": method, | ||
81 | + "param": param, | ||
82 | + "data": data, | ||
83 | + }) | ||
84 | + if err != nil { | ||
85 | + return err | ||
86 | + } | ||
87 | + return nil | ||
88 | +} | ||
89 | + | ||
90 | +func (gateway BaseServiceGateway) DoRequest(requestParam Request, val interface{}) error { | ||
91 | + r := gateway.CreateRequest(requestParam.Url, requestParam.Method) | ||
92 | + if len(gateway.InOrgIds) > 0 { | ||
93 | + r.Header("orgIds", strings.Join(ToArrayString(gateway.InOrgIds), ",")) | ||
94 | + } | ||
95 | + req, err := r.JSONBody(requestParam.Param) | ||
96 | + if err != nil { | ||
97 | + return err | ||
98 | + } | ||
99 | + byteResult, err := req.Bytes() | ||
100 | + if err != nil { | ||
101 | + return err | ||
102 | + } | ||
103 | + var result GatewayResponse | ||
104 | + err = json.Unmarshal(byteResult, &result) | ||
105 | + if err != nil { | ||
106 | + return err | ||
107 | + } | ||
108 | + err = gateway.GetResponseData(result, val) | ||
109 | + return nil | ||
110 | +} | ||
111 | + | ||
112 | +type Request struct { | ||
113 | + Url string | ||
114 | + Method string | ||
115 | + Param interface{} | ||
116 | +} | ||
117 | + | ||
118 | +func ToArrayString(inputs []int64) []string { | ||
119 | + result := make([]string, 0) | ||
120 | + for i := range inputs { | ||
121 | + result = append(result, strconv.Itoa(int(inputs[i]))) | ||
122 | + } | ||
123 | + return result | ||
124 | +} |
@@ -63,6 +63,43 @@ func (smsServe HttplibSmsServe) SendSms(phone string) error { | @@ -63,6 +63,43 @@ func (smsServe HttplibSmsServe) SendSms(phone string) error { | ||
63 | return nil | 63 | return nil |
64 | } | 64 | } |
65 | 65 | ||
66 | +//SendSms 公共短信验证码服务 发送验证码 | ||
67 | +func (smsServe HttplibSmsServe) SendNoticeSms(phone string, tplId int, tplValues map[string]interface{}) error { | ||
68 | + url := smsServe.baseUrL + "/service/sendNoticeSms" | ||
69 | + method := "post" | ||
70 | + req := smsServe.CreateRequest(url, method) | ||
71 | + param := map[string]interface{}{ | ||
72 | + "phone": phone, | ||
73 | + "tplId": tplId, | ||
74 | + "tplValues": tplValues, | ||
75 | + } | ||
76 | + log.Logger.Debug("向公共短信验证码服务请求数据:短信验证码接口。", map[string]interface{}{ | ||
77 | + "api": method + ":" + url, | ||
78 | + "param": param, | ||
79 | + }) | ||
80 | + req, err := req.JSONBody(param) | ||
81 | + if err != nil { | ||
82 | + return fmt.Errorf("请求公共短信验证码服务失败:%w", err) | ||
83 | + } | ||
84 | + | ||
85 | + byteResult, err := req.Bytes() | ||
86 | + if err != nil { | ||
87 | + return fmt.Errorf("获取公共短信验证码服务失败:%w", err) | ||
88 | + } | ||
89 | + log.Logger.Debug("获取公共短信验证码服务请求数据", map[string]interface{}{ | ||
90 | + "result": string(byteResult), | ||
91 | + }) | ||
92 | + var result service_gateway.GatewayResponse | ||
93 | + err = json.Unmarshal(byteResult, &result) | ||
94 | + if err != nil { | ||
95 | + return fmt.Errorf("解析更新组织:%w", err) | ||
96 | + } | ||
97 | + if result.Code != 0 { | ||
98 | + return fmt.Errorf(result.Msg) | ||
99 | + } | ||
100 | + return nil | ||
101 | +} | ||
102 | + | ||
66 | //CheckSmsCode 公共短信验证码服务 校验验证码 | 103 | //CheckSmsCode 公共短信验证码服务 校验验证码 |
67 | func (smsServe HttplibSmsServe) CheckSmsCode(phone string, code string) error { | 104 | func (smsServe HttplibSmsServe) CheckSmsCode(phone string, code string) error { |
68 | if code == constant.SMSCODE_ALL_POWER { | 105 | if code == constant.SMSCODE_ALL_POWER { |
1 | package beego | 1 | package beego |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | - "encoding/json" | 4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" |
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/cost_structured" | ||
5 | "net/http" | 8 | "net/http" |
6 | "os" | 9 | "os" |
7 | "strconv" | 10 | "strconv" |
@@ -48,25 +51,30 @@ func init() { | @@ -48,25 +51,30 @@ func init() { | ||
48 | filters.SecureKeyMap["token"] = "x-mmm-accesstoken" | 51 | filters.SecureKeyMap["token"] = "x-mmm-accesstoken" |
49 | web.InsertFilter("/*", web.BeforeRouter, AllowCors()) | 52 | web.InsertFilter("/*", web.BeforeRouter, AllowCors()) |
50 | web.InsertFilter("/*", web.BeforeRouter, filters.CreateRequstLogFilter(log.Logger)) | 53 | web.InsertFilter("/*", web.BeforeRouter, filters.CreateRequstLogFilter(log.Logger)) |
51 | - web.InsertFilter("/v1/web/*", web.BeforeExec, middleware.CheckAccessToken2()) | ||
52 | - web.InsertFilter("/v1/app/*", web.BeforeExec, middleware.CheckAccessToken2()) | ||
53 | - web.InsertFilter("/v1/user/*", web.BeforeExec, middleware.CheckAccessToken2()) | 54 | + web.InsertFilter("/v1/background/*", web.BeforeExec, middleware.CheckAccessToken()) |
55 | + web.InsertFilter("/v1/web/*", web.BeforeExec, middleware.CheckAccessToken()) | ||
56 | + web.InsertFilter("/v1/app/*", web.BeforeExec, middleware.CheckAccessToken()) | ||
57 | + web.InsertFilter("/v1/user/*", web.BeforeExec, middleware.CheckAccessToken()) | ||
54 | web.InsertFilter("/*", web.AfterExec, filters.CreateResponseLogFilter(log.Logger), web.WithReturnOnOutput(false)) | 58 | web.InsertFilter("/*", web.AfterExec, filters.CreateResponseLogFilter(log.Logger), web.WithReturnOnOutput(false)) |
55 | - web.InsertFilter("/v1/app11/*", web.BeforeExec, filters.SecureHandler( | ||
56 | - filters.WithEnableCheckTimestamp(false), | ||
57 | - filters.WithOnInvalidRequest(func(ctx *context.Context) { | ||
58 | - headerData, _ := json.Marshal(ctx.Input.Context.Request.Header) | ||
59 | - log.Logger.Info("签名验证失败:" + string(headerData)) | ||
60 | - }), | ||
61 | - )) | ||
62 | - //web.InsertFilterChain("/v1/*", middleware.CheckAccessToken) | 59 | + //web.InsertFilter("/v1/app11/*", web.BeforeExec, filters.SecureHandler( |
60 | + // filters.WithEnableCheckTimestamp(false), | ||
61 | + // filters.WithOnInvalidRequest(func(ctx *context.Context) { | ||
62 | + // headerData, _ := json.Marshal(ctx.Input.Context.Request.Header) | ||
63 | + // log.Logger.Info("签名验证失败:" + string(headerData)) | ||
64 | + // }), | ||
65 | + //)) | ||
66 | + | ||
67 | + web.InsertFilter("/v1/common/user/area/*", web.BeforeRouter, middleware.RedirectInternalService("/v1/common/user", allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}))) | ||
68 | + | ||
69 | + web.InsertFilter("/v1/manufacture/*", web.BeforeRouter, middleware.CheckAccessToken()) | ||
70 | + web.InsertFilter("/v1/manufacture/*", web.BeforeRouter, middleware.RedirectInternalService("/v1/manufacture", allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(domain.Operator{}))) | ||
71 | + web.InsertFilter("/v1/cost/*", web.BeforeRouter, middleware.CheckAccessToken()) | ||
72 | + web.InsertFilter("/v1/cost/*", web.BeforeRouter, middleware.RedirectInternalService("/v1/cost", cost_structured.NewHttpLibCostStructured(domain.Operator{}))) | ||
63 | } | 73 | } |
64 | 74 | ||
65 | func AllowCors() func(ctx *context.Context) { | 75 | func AllowCors() func(ctx *context.Context) { |
66 | return func(ctx *context.Context) { | 76 | return func(ctx *context.Context) { |
67 | ctx.Output.Header("Access-Control-Allow-Methods", "OPTIONS,DELETE,POST,GET,PUT,PATCH") | 77 | ctx.Output.Header("Access-Control-Allow-Methods", "OPTIONS,DELETE,POST,GET,PUT,PATCH") |
68 | - //ctx.Output.Header("Access-Control-Max-Age", "3600") | ||
69 | - //ctx.Output.Header("Access-Control-Allow-Headers", "*,x-mmm-version") | ||
70 | ctx.Output.Header("Access-Control-Allow-Headers", "Content-Type,X-Mmm-Accesstoken,X-Mmm-Devicetype,X-Mmm-Sign,X-Mmm-Timestamp,X-Mmm-Uuid,X-Mmm-Version,x-mmm-appname,*") | 78 | ctx.Output.Header("Access-Control-Allow-Headers", "Content-Type,X-Mmm-Accesstoken,X-Mmm-Devicetype,X-Mmm-Sign,X-Mmm-Timestamp,X-Mmm-Uuid,X-Mmm-Version,x-mmm-appname,*") |
71 | ctx.Output.Header("Access-Control-Allow-Credentials", "true") | 79 | ctx.Output.Header("Access-Control-Allow-Credentials", "true") |
72 | ctx.Output.Header("Access-Control-Allow-Origin", "*") //origin | 80 | ctx.Output.Header("Access-Control-Allow-Origin", "*") //origin |
1 | +package backgroud_client | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/auth/command" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/auth/service" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers" | ||
7 | +) | ||
8 | + | ||
9 | +type AuthController struct { | ||
10 | + controllers.BaseController | ||
11 | +} | ||
12 | + | ||
13 | +func (controller *AuthController) LoginPwd() { | ||
14 | + authService := service.AuthService{} | ||
15 | + loginCmd := &command.LoginPwdCommand{} | ||
16 | + //Must() | ||
17 | + controller.Unmarshal(loginCmd) | ||
18 | + data, err := authService.AuthAdminLogin(loginCmd) | ||
19 | + controller.Response(data, err) | ||
20 | +} |
1 | +package backgroud_client | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/company/command" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/company/query" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/company/service" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers" | ||
8 | +) | ||
9 | + | ||
10 | +type CompanyController struct { | ||
11 | + controllers.BaseController | ||
12 | +} | ||
13 | + | ||
14 | +// func (controller *CompanyController) CreateCompany() { | ||
15 | +// companyService := service.NewCompanyService(nil) | ||
16 | +// createCompanyCommand := &command.CreateCompanyCommand{} | ||
17 | +// controller.Unmarshal(createCompanyCommand) | ||
18 | +// data, err := companyService.CreateCompany(createCompanyCommand) | ||
19 | +// controller.Response(data, err) | ||
20 | +// } | ||
21 | + | ||
22 | +func (controller *CompanyController) UpdateCompany() { | ||
23 | + companyService := service.NewCompanyService(nil) | ||
24 | + updateCompanyCommand := &command.UpdateCompanyCommand{} | ||
25 | + controller.Unmarshal(updateCompanyCommand) | ||
26 | + updateCompanyCommand.Operator = controller.GetOperator() | ||
27 | + data, err := companyService.UpdateCompany(updateCompanyCommand) | ||
28 | + controller.Response(data, err) | ||
29 | +} | ||
30 | + | ||
31 | +func (controller *CompanyController) GetCompany() { | ||
32 | + companyService := service.NewCompanyService(nil) | ||
33 | + getCompanyQuery := &query.GetCompanyQuery{} | ||
34 | + companyId, _ := controller.GetInt(":companyId") | ||
35 | + getCompanyQuery.CompanyId = companyId | ||
36 | + data, err := companyService.GetCompany(getCompanyQuery) | ||
37 | + controller.Response(data, err) | ||
38 | +} | ||
39 | + | ||
40 | +// func (controller *CompanyController) RemoveCompany() { | ||
41 | +// companyService := service.NewCompanyService(nil) | ||
42 | +// removeCompanyCommand := &command.RemoveCompanyCommand{} | ||
43 | +// controller.Unmarshal(removeCompanyCommand) | ||
44 | +// companyId, _ := controller.GetInt64(":companyId") | ||
45 | +// removeCompanyCommand.CompanyId = companyId | ||
46 | +// data, err := companyService.RemoveCompany(removeCompanyCommand) | ||
47 | +// controller.Response(data, err) | ||
48 | +// } | ||
49 | + | ||
50 | +func (controller *CompanyController) SearchCompany() { | ||
51 | + companyService := service.NewCompanyService(nil) | ||
52 | + listCompanyQuery := &query.ListCompanyQuery{} | ||
53 | + controller.Unmarshal(listCompanyQuery) | ||
54 | + cnt, data, err := companyService.ListCompany(listCompanyQuery) | ||
55 | + controller.ReturnPageListData(cnt, data, err, listCompanyQuery.PageNumber) | ||
56 | +} | ||
57 | + | ||
58 | +func (controller *CompanyController) AuditCompany() { | ||
59 | + companyService := service.NewCompanyService(nil) | ||
60 | + cmd := &command.AuditCompanyCommand{} | ||
61 | + controller.Unmarshal(cmd) | ||
62 | + companyId, _ := controller.GetInt64(":companyId") | ||
63 | + cmd.CompanyId = companyId | ||
64 | + data, err := companyService.AuditCompany(cmd) | ||
65 | + controller.Response(data, err) | ||
66 | +} | ||
67 | + | ||
68 | +func (controller *CompanyController) EnableCompany() { | ||
69 | + companyService := service.NewCompanyService(nil) | ||
70 | + cmd := &command.EnableCompanyCommand{} | ||
71 | + controller.Unmarshal(cmd) | ||
72 | + companyId, _ := controller.GetInt64(":companyId") | ||
73 | + cmd.CompanyId = companyId | ||
74 | + data, err := companyService.EnableCompany(cmd) | ||
75 | + controller.Response(data, err) | ||
76 | +} |
1 | +package backgroud_client | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/command" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/query" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/background/user/service" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers" | ||
8 | +) | ||
9 | + | ||
10 | +type UserController struct { | ||
11 | + controllers.BaseController | ||
12 | +} | ||
13 | + | ||
14 | +func (controller *UserController) SearchUser() { | ||
15 | + companyService := service.NewUserService(nil) | ||
16 | + listCompanyQuery := &query.ListUserQuery{} | ||
17 | + controller.Unmarshal(listCompanyQuery) | ||
18 | + cnt, data, err := companyService.SearchUser(listCompanyQuery) | ||
19 | + controller.ReturnPageListData(cnt, data, err, listCompanyQuery.PageNumber) | ||
20 | +} | ||
21 | + | ||
22 | +func (controller *UserController) EnableUser() { | ||
23 | + companyService := service.NewUserService(nil) | ||
24 | + cmd := &command.EnableUserCommand{} | ||
25 | + controller.Unmarshal(cmd) | ||
26 | + data, err := companyService.EnableUser(cmd) | ||
27 | + controller.Response(data, err) | ||
28 | +} | ||
29 | + | ||
30 | +func (controller *UserController) ResetPassword() { | ||
31 | + companyService := service.NewUserService(nil) | ||
32 | + cmd := &command.ResetPasswordCommand{} | ||
33 | + controller.Unmarshal(cmd) | ||
34 | + data, err := companyService.ResetPassword(cmd) | ||
35 | + controller.Response(data, err) | ||
36 | +} | ||
37 | + | ||
38 | +func (controller *UserController) SearchAdminUser() { | ||
39 | + companyService := service.NewUserService(nil) | ||
40 | + q := &query.ListAdminUserQuery{} | ||
41 | + controller.Unmarshal(q) | ||
42 | + cnt, data, err := companyService.AdminUserList(q) | ||
43 | + controller.ReturnPageListData(cnt, data, err, q.PageNumber) | ||
44 | +} | ||
45 | + | ||
46 | +func (controller *UserController) EnableAdminUser() { | ||
47 | + companyService := service.NewUserService(nil) | ||
48 | + cmd := &command.EnableAdminUserCommand{} | ||
49 | + controller.Unmarshal(cmd) | ||
50 | + data, err := companyService.EnableAdminUser(cmd) | ||
51 | + controller.Response(data, err) | ||
52 | +} | ||
53 | + | ||
54 | +func (controller *UserController) GetAdminUser() { | ||
55 | + companyService := service.NewUserService(nil) | ||
56 | + userId, _ := controller.GetInt(":userId") | ||
57 | + data, err := companyService.GetAdminUser(userId) | ||
58 | + controller.Response(data, err) | ||
59 | +} | ||
60 | + | ||
61 | +func (controller *UserController) UpdateAdminUser() { | ||
62 | + companyService := service.NewUserService(nil) | ||
63 | + cmd := &command.AdminUserEditCommand{} | ||
64 | + controller.Unmarshal(cmd) | ||
65 | + userId, _ := controller.GetInt(":userId") | ||
66 | + cmd.UserId = int64(userId) | ||
67 | + data, err := companyService.UpdateAdminUser(cmd) | ||
68 | + controller.Response(data, err) | ||
69 | +} | ||
70 | + | ||
71 | +func (controller *UserController) CreateAdminUser() { | ||
72 | + companyService := service.NewUserService(nil) | ||
73 | + cmd := &command.AdminUserAddCommand{} | ||
74 | + controller.Unmarshal(cmd) | ||
75 | + data, err := companyService.CreateAdminUser(cmd) | ||
76 | + controller.Response(data, err) | ||
77 | +} | ||
78 | + | ||
79 | +func (controller *UserController) GetAdminUserInfo() { | ||
80 | + companyService := service.NewUserService(nil) | ||
81 | + operator := controller.GetOperator() | ||
82 | + data, err := companyService.GetAdminUserInfo(operator) | ||
83 | + controller.Response(data, err) | ||
84 | +} |
@@ -11,6 +11,7 @@ import ( | @@ -11,6 +11,7 @@ import ( | ||
11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/middleware" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/middleware" |
12 | "io" | 12 | "io" |
13 | "path/filepath" | 13 | "path/filepath" |
14 | + "strings" | ||
14 | ) | 15 | ) |
15 | 16 | ||
16 | type BaseController struct { | 17 | type BaseController struct { |
@@ -97,7 +98,7 @@ func (controller *BaseController) GetOperator() domain.Operator { | @@ -97,7 +98,7 @@ func (controller *BaseController) GetOperator() domain.Operator { | ||
97 | } | 98 | } |
98 | 99 | ||
99 | // 打印测试日志 | 100 | // 打印测试日志 |
100 | - // log.Logger.Debug("operator " + json.MarshalToString(op)) | 101 | + log.Logger.Debug("operator " + json.MarshalToString(op)) |
101 | return op | 102 | return op |
102 | } | 103 | } |
103 | 104 | ||
@@ -124,17 +125,19 @@ func (controller *BaseController) GetExcelFile() (io.Reader, error) { | @@ -124,17 +125,19 @@ func (controller *BaseController) GetExcelFile() (io.Reader, error) { | ||
124 | return excelFile, nil | 125 | return excelFile, nil |
125 | } | 126 | } |
126 | 127 | ||
127 | -func (controller *BaseController) GetFileWithExt() (io.Reader, string, error) { | 128 | +func (controller *BaseController) GetFileWithExt() (io.Reader, string,string, error) { |
128 | excelFile, fileHeader, err := controller.GetFile("file") | 129 | excelFile, fileHeader, err := controller.GetFile("file") |
129 | if err != nil { | 130 | if err != nil { |
130 | log.Logger.Error(err.Error()) | 131 | log.Logger.Error(err.Error()) |
131 | - return nil, "", fmt.Errorf("上传文件不存在") | 132 | + return nil, "","", fmt.Errorf("上传文件不存在") |
132 | } | 133 | } |
133 | ext := filepath.Ext(fileHeader.Filename) | 134 | ext := filepath.Ext(fileHeader.Filename) |
134 | if !(ext == ".xlsx" || ext == ".xls" || ext == ".csv") { | 135 | if !(ext == ".xlsx" || ext == ".xls" || ext == ".csv") { |
135 | - return nil, "", fmt.Errorf("仅支持上传文件格式 xls/xlsx/csv") | 136 | + return nil, "","", fmt.Errorf("仅支持上传文件格式 xls/xlsx/csv") |
136 | } | 137 | } |
137 | - return excelFile, ext, nil | 138 | + fileName := filepath.Base(fileHeader.Filename) |
139 | + fileName = strings.TrimRight(fileName,ext) | ||
140 | + return excelFile, ext,fileName, nil | ||
138 | } | 141 | } |
139 | 142 | ||
140 | func Must(err error) { | 143 | func Must(err error) { |
@@ -2,6 +2,7 @@ package web_client | @@ -2,6 +2,7 @@ package web_client | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers" | ||
5 | "io" | 6 | "io" |
6 | "strings" | 7 | "strings" |
7 | 8 | ||
@@ -190,9 +191,10 @@ func defaultImport(controller *ExcelDataController) { | @@ -190,9 +191,10 @@ func defaultImport(controller *ExcelDataController) { | ||
190 | err error | 191 | err error |
191 | r io.Reader | 192 | r io.Reader |
192 | ext string | 193 | ext string |
194 | + fileName string | ||
193 | ) | 195 | ) |
194 | excelService := service.NewExcelDataService(nil) | 196 | excelService := service.NewExcelDataService(nil) |
195 | - r, ext, err = controller.GetFileWithExt() | 197 | + r, ext,fileName, err = controller.GetFileWithExt() |
196 | if err != nil { | 198 | if err != nil { |
197 | controller.Response(nil, err) | 199 | controller.Response(nil, err) |
198 | return | 200 | return |
@@ -202,6 +204,7 @@ func defaultImport(controller *ExcelDataController) { | @@ -202,6 +204,7 @@ func defaultImport(controller *ExcelDataController) { | ||
202 | cmd.Operator = controller.GetOperator() | 204 | cmd.Operator = controller.GetOperator() |
203 | cmd.Reader = r | 205 | cmd.Reader = r |
204 | cmd.FileExt = ext | 206 | cmd.FileExt = ext |
207 | + cmd.FileName = fileName | ||
205 | switch cmd.Code { | 208 | switch cmd.Code { |
206 | case domain.ImportCompanyUser: | 209 | case domain.ImportCompanyUser: |
207 | data, err = excelService.ImportCompanyUser(cmd) | 210 | data, err = excelService.ImportCompanyUser(cmd) |
@@ -209,6 +212,12 @@ func defaultImport(controller *ExcelDataController) { | @@ -209,6 +212,12 @@ func defaultImport(controller *ExcelDataController) { | ||
209 | data, err = excelService.ImportCooperationUser(cmd) | 212 | data, err = excelService.ImportCooperationUser(cmd) |
210 | case domain.ImportOrganization: | 213 | case domain.ImportOrganization: |
211 | data, err = excelService.ImportOrganization(cmd) | 214 | data, err = excelService.ImportOrganization(cmd) |
215 | + case domain.ImportProducts: | ||
216 | + data, err = excelService.ImportProduct(cmd) | ||
217 | + case domain.ImportDevices: | ||
218 | + data, err = excelService.ImportDevice(cmd) | ||
219 | + case domain.ImportCosts: | ||
220 | + data,err = excelService.ImportCost(cmd) | ||
212 | default: | 221 | default: |
213 | err = fmt.Errorf("导入不存在 Code:%v", cmd.Code) | 222 | err = fmt.Errorf("导入不存在 Code:%v", cmd.Code) |
214 | } | 223 | } |
@@ -261,6 +270,36 @@ func fileExport(controller *ExcelDataController, code string) { | @@ -261,6 +270,36 @@ func fileExport(controller *ExcelDataController, code string) { | ||
261 | companyUserListQuery.Operator = exportDataCommand.Operator | 270 | companyUserListQuery.Operator = exportDataCommand.Operator |
262 | data, err = excelService.ExportCooperationUser(companyUserListQuery) | 271 | data, err = excelService.ExportCooperationUser(companyUserListQuery) |
263 | filename = "导出共创用户" | 272 | filename = "导出共创用户" |
273 | + case domain.ExportProducts: | ||
274 | + companyUserListQuery := &query.SearchProductQuery{} | ||
275 | + exportDataCommand.UnmarshalQuery(companyUserListQuery) | ||
276 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
277 | + data, err = excelService.ExportProducts(companyUserListQuery) | ||
278 | + filename = "导出商品" | ||
279 | + case domain.ExportManufactureEmployeeProductive: | ||
280 | + companyUserListQuery := &query.ManufactureEmployeeProductiveQuery{} | ||
281 | + exportDataCommand.UnmarshalQuery(companyUserListQuery) | ||
282 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
283 | + data, err = excelService.ExportEmployeeProductive(companyUserListQuery) | ||
284 | + filename = "导出员工产能统计" | ||
285 | + case domain.ExportManufactureWorkshopProductive: | ||
286 | + companyUserListQuery := &query.ManufactureWorkshopProductiveQuery{} | ||
287 | + exportDataCommand.UnmarshalQuery(companyUserListQuery) | ||
288 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
289 | + data, err = excelService.ExportWorkshopProductive(companyUserListQuery) | ||
290 | + filename = "导出车间产能汇总" | ||
291 | + case domain.ExportManufactureEmployeeAttendanceStatics: | ||
292 | + companyUserListQuery := &query.ManufactureExportEmployeeAttendanceStaticsQuery{} | ||
293 | + controllers.Must(exportDataCommand.UnmarshalQuery(companyUserListQuery)) | ||
294 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
295 | + data, err = excelService.ExportEmployeeAttendanceStatics(companyUserListQuery) | ||
296 | + filename = "导出员工工时统计" | ||
297 | + case domain.ExportManufactureWorkshopAttendanceStatics: | ||
298 | + companyUserListQuery := &query.ManufactureExportWorkshopAttendanceStaticsQuery{} | ||
299 | + controllers.Must(exportDataCommand.UnmarshalQuery(companyUserListQuery)) | ||
300 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
301 | + data, err = excelService.ExportWorkshopAttendanceStatics(companyUserListQuery) | ||
302 | + filename = "导出车间工时汇总" | ||
264 | default: | 303 | default: |
265 | err = fmt.Errorf("export type :%v not exists", exportDataCommand.Code) | 304 | err = fmt.Errorf("export type :%v not exists", exportDataCommand.Code) |
266 | } | 305 | } |
@@ -291,7 +330,35 @@ func (controller *ExcelDataController) ExportCooperationUser() { | @@ -291,7 +330,35 @@ func (controller *ExcelDataController) ExportCooperationUser() { | ||
291 | fileExport(controller, domain.ExportCooperationUser) | 330 | fileExport(controller, domain.ExportCooperationUser) |
292 | } | 331 | } |
293 | 332 | ||
333 | +// ExportProducts 导出生产制造产品 | ||
334 | +func (controller *ExcelDataController) ExportProducts() { | ||
335 | + fileExport(controller, domain.ExportProducts) | ||
336 | +} | ||
337 | + | ||
338 | +// ExportManufactureEmployeeProductive 导出生产制造-员工产能统计 | ||
339 | +func (controller *ExcelDataController) ExportManufactureEmployeeProductive() { | ||
340 | + fileExport(controller, domain.ExportManufactureEmployeeProductive) | ||
341 | +} | ||
342 | + | ||
343 | +// ExportManufactureEmployeeProductive 导出生产制造-车间产能统计 | ||
344 | +func (controller *ExcelDataController) ExportManufactureWorkshopProductive() { | ||
345 | + fileExport(controller, domain.ExportManufactureWorkshopProductive) | ||
346 | +} | ||
347 | + | ||
348 | +// ExportManufactureEmployeeAttendanceStatics 导出生产制造-员工工时统计 | ||
349 | +func (controller *ExcelDataController) ExportManufactureEmployeeAttendanceStatics() { | ||
350 | + fileExport(controller, domain.ExportManufactureEmployeeAttendanceStatics) | ||
351 | +} | ||
352 | + | ||
353 | +// ExportManufactureWorkshopAttendanceStatics 导出生产制造-车间工时统计 | ||
354 | +func (controller *ExcelDataController) ExportManufactureWorkshopAttendanceStatics() { | ||
355 | + fileExport(controller, domain.ExportManufactureWorkshopAttendanceStatics) | ||
356 | +} | ||
357 | + | ||
294 | //GetExcelDataFields 获取导出excel数据的可选字段 | 358 | //GetExcelDataFields 获取导出excel数据的可选字段 |
295 | func (controller *ExcelDataController) GetExcelDataFields() { | 359 | func (controller *ExcelDataController) GetExcelDataFields() { |
296 | - | 360 | + code := controller.GetString(":code") |
361 | + var excelService = service.NewExcelDataService(nil) | ||
362 | + data, _ := excelService.GetExcelDataFields(&query.ExcelDataFieldsQuery{Code: code}) | ||
363 | + controller.Response(data, nil) | ||
297 | } | 364 | } |
@@ -19,7 +19,7 @@ func (controller *MenuController) MenuList() { | @@ -19,7 +19,7 @@ func (controller *MenuController) MenuList() { | ||
19 | log.Logger.Debug("json err:" + err.Error()) | 19 | log.Logger.Debug("json err:" + err.Error()) |
20 | } | 20 | } |
21 | menuListQuery.Operator = controller.GetOperator() | 21 | menuListQuery.Operator = controller.GetOperator() |
22 | - data, err := menuService.MenuList(menuListQuery) | 22 | + data, err := menuService.CustomizeMenus(menuListQuery) |
23 | controller.Response(data, err) | 23 | controller.Response(data, err) |
24 | } | 24 | } |
25 | 25 | ||
@@ -46,3 +46,15 @@ func (controller *MenuController) MenuFavorite() { | @@ -46,3 +46,15 @@ func (controller *MenuController) MenuFavorite() { | ||
46 | data, err := menuService.MenuFavorite(menuFavoriteCommand) | 46 | data, err := menuService.MenuFavorite(menuFavoriteCommand) |
47 | controller.Response(data, err) | 47 | controller.Response(data, err) |
48 | } | 48 | } |
49 | + | ||
50 | +func (controller *MenuController) MenuSearch() { | ||
51 | + menuService := service.NewMenuService(nil) | ||
52 | + menuListQuery := &query.MenuListQuery{} | ||
53 | + err := controller.Unmarshal(menuListQuery) | ||
54 | + if err != nil { | ||
55 | + log.Logger.Debug("json err:" + err.Error()) | ||
56 | + } | ||
57 | + menuListQuery.Operator = controller.GetOperator() | ||
58 | + data, err := menuService.MenuSearch(menuListQuery) | ||
59 | + controller.Response(data, err) | ||
60 | +} |
@@ -2,99 +2,26 @@ package middleware | @@ -2,99 +2,26 @@ package middleware | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | - log1 "log" | ||
6 | "net/http" | 5 | "net/http" |
7 | "net/url" | 6 | "net/url" |
8 | 7 | ||
9 | "github.com/beego/beego/v2/server/web" | 8 | "github.com/beego/beego/v2/server/web" |
10 | "github.com/beego/beego/v2/server/web/context" | 9 | "github.com/beego/beego/v2/server/web/context" |
11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" |
12 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/cache" | ||
13 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" |
14 | ) | 12 | ) |
15 | 13 | ||
16 | type CtxKeyLoginToken struct{} | 14 | type CtxKeyLoginToken struct{} |
17 | 15 | ||
18 | -func JWTAuth(ctx *context.Context) { | ||
19 | - | ||
20 | -} | ||
21 | - | ||
22 | -func CheckAccessToken(next web.FilterFunc) web.FilterFunc { | ||
23 | - return func(ctx *context.Context) { | ||
24 | - tokenStr := ctx.Input.Header("x-mmm-accesstoken") | ||
25 | - filterMap := map[string]string{ | ||
26 | - "/v1/auth/login/pwd": "", | ||
27 | - "/v1/auth/login/sms": "", | ||
28 | - "/v1/auth/login/qrcode": "", | ||
29 | - "/v1/auth/org-switch": "", | ||
30 | - "/v1/user/company-orgs": "", | ||
31 | - "/v1/auth/captcha-init": "", | ||
32 | - "/v1/auth/qrcode-init": "", | ||
33 | - "/v1/auth/sms-code": "", | ||
34 | - "/v1/auth/check-sms-code": "", | ||
35 | - "/v1/auth/company-sign-up": "", | ||
36 | - "/v1/auth/reset-password": "", | ||
37 | - "/v1/auth/refresh-token": "", | ||
38 | - "/v1/app/cooperation-projects/person/search": "", | ||
39 | - } | ||
40 | - var err error | ||
41 | - if filterUrl, err := url.Parse(ctx.Request.RequestURI); err == nil { | ||
42 | - // 不需要验证的接口 | ||
43 | - if _, ok := filterMap[filterUrl.Path]; ok { | ||
44 | - next(ctx) | ||
45 | - return | ||
46 | - } | ||
47 | - } else { | ||
48 | - log.Logger.Error("parse url error:" + err.Error()) | ||
49 | - } | ||
50 | - defer func() { | ||
51 | - if err != nil { | ||
52 | - ctx.Output.SetStatus(http.StatusOK) | ||
53 | - ctx.Output.JSON(map[string]interface{}{ | ||
54 | - "msg": domain.ParseCodeMsg(domain.InvalidAccessToken), | ||
55 | - "code": domain.InvalidAccessToken, | ||
56 | - "data": struct{}{}, | ||
57 | - }, false, false) | ||
58 | - } | ||
59 | - }() | ||
60 | - | ||
61 | - tk := &domain.LoginToken{} | ||
62 | - err = tk.ParseToken(tokenStr) | ||
63 | - if err != nil { | ||
64 | - log.Logger.Error(err.Error()) | ||
65 | - return | ||
66 | - } | ||
67 | - platform := domain.ParsePlatform(ctx.Input.Header("x-mmm-devicetype")) | ||
68 | - // redis缓存 | ||
69 | - tokenCache := cache.LoginTokenCache{} | ||
70 | - token, err := tokenCache.GetAccessToken(tk.Account, platform) | ||
71 | - if err != nil { | ||
72 | - log.Logger.Error(err.Error()) | ||
73 | - return | ||
74 | - } | ||
75 | - if token != tokenStr { | ||
76 | - log1.Println("token not equal \n" + tk.Account + "\n" + tokenStr + "\n" + token) | ||
77 | - err = fmt.Errorf("access token not exists") | ||
78 | - return | ||
79 | - } | ||
80 | - ctx.Input.SetData(CtxKeyLoginToken{}, tk) | ||
81 | - next(ctx) | ||
82 | - } | ||
83 | -} | ||
84 | - | ||
85 | -func NewCtxLoginToken(ctx *context.Context, tk domain.LoginToken) { | ||
86 | - ctx.Input.SetData(CtxKeyLoginToken{}, domain.LoginToken{}) | ||
87 | -} | ||
88 | - | ||
89 | func FormCtxLoginToken(ctx *context.Context) (domain.LoginToken, bool) { | 16 | func FormCtxLoginToken(ctx *context.Context) (domain.LoginToken, bool) { |
90 | val := ctx.Input.GetData(CtxKeyLoginToken{}) | 17 | val := ctx.Input.GetData(CtxKeyLoginToken{}) |
91 | - if v, ok := val.(domain.LoginToken); ok { | ||
92 | - return v, true | 18 | + if v, ok := val.(*domain.LoginToken); ok { |
19 | + return *v, true | ||
93 | } | 20 | } |
94 | return domain.LoginToken{}, false | 21 | return domain.LoginToken{}, false |
95 | } | 22 | } |
96 | 23 | ||
97 | -func CheckAccessToken2() web.FilterFunc { | 24 | +func CheckAccessToken() web.FilterFunc { |
98 | return func(ctx *context.Context) { | 25 | return func(ctx *context.Context) { |
99 | tokenStr := ctx.Input.Header("x-mmm-accesstoken") | 26 | tokenStr := ctx.Input.Header("x-mmm-accesstoken") |
100 | filterMap := map[string]string{ | 27 | filterMap := map[string]string{ |
@@ -116,6 +43,8 @@ func CheckAccessToken2() web.FilterFunc { | @@ -116,6 +43,8 @@ func CheckAccessToken2() web.FilterFunc { | ||
116 | "/v1/user/cooperation-org": "", | 43 | "/v1/user/cooperation-org": "", |
117 | "/v1/app/cooperation-projects/person/shared-info": "", //共创项目详情 - 未登录可以查看 | 44 | "/v1/app/cooperation-projects/person/shared-info": "", //共创项目详情 - 未登录可以查看 |
118 | "/v1/app/cooperation-projects/person/shared-info/attachment": "", | 45 | "/v1/app/cooperation-projects/person/shared-info/attachment": "", |
46 | + | ||
47 | + "/v1/background/auth/login/pwd": "", | ||
119 | } | 48 | } |
120 | var err error | 49 | var err error |
121 | if filterUrl, err := url.Parse(ctx.Request.RequestURI); err == nil { | 50 | if filterUrl, err := url.Parse(ctx.Request.RequestURI); err == nil { |
@@ -136,10 +65,11 @@ func CheckAccessToken2() web.FilterFunc { | @@ -136,10 +65,11 @@ func CheckAccessToken2() web.FilterFunc { | ||
136 | }, false, false) | 65 | }, false, false) |
137 | } | 66 | } |
138 | }() | 67 | }() |
139 | - | 68 | + //log.Logger.Debug(tokenStr) |
140 | tk := &domain.LoginToken{} | 69 | tk := &domain.LoginToken{} |
141 | err = tk.ParseToken(tokenStr) | 70 | err = tk.ParseToken(tokenStr) |
142 | if err != nil { | 71 | if err != nil { |
72 | + fmt.Println(fmt.Sprintf("token:%v|", tokenStr)) | ||
143 | log.Logger.Error(err.Error()) | 73 | log.Logger.Error(err.Error()) |
144 | return | 74 | return |
145 | } | 75 | } |
pkg/port/beego/middleware/redirect.go
0 → 100644
1 | +package middleware | ||
2 | + | ||
3 | +import ( | ||
4 | + "encoding/json" | ||
5 | + "fmt" | ||
6 | + "github.com/beego/beego/v2/client/httplib" | ||
7 | + "github.com/beego/beego/v2/server/web" | ||
8 | + "github.com/beego/beego/v2/server/web/context" | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway" | ||
10 | + "io/ioutil" | ||
11 | + "net/http" | ||
12 | + "strings" | ||
13 | +) | ||
14 | + | ||
15 | +type internalService interface { | ||
16 | + GetResponseData(result service_gateway.GatewayResponse, data interface{}) error | ||
17 | + CreateRequest(url string, method string) *httplib.BeegoHTTPRequest | ||
18 | + BaseUrl() string | ||
19 | +} | ||
20 | + | ||
21 | +func RedirectInternalService(prefix string, svr internalService) web.FilterFunc { | ||
22 | + return func(ctx *context.Context) { | ||
23 | + if !strings.HasPrefix(ctx.Request.RequestURI, prefix) { | ||
24 | + return | ||
25 | + } | ||
26 | + var err error | ||
27 | + var byteResult []byte | ||
28 | + var data = make(map[string]interface{}) | ||
29 | + defer func() { | ||
30 | + if err != nil { | ||
31 | + ctx.Output.SetStatus(http.StatusOK) | ||
32 | + ctx.Output.JSON(map[string]interface{}{ | ||
33 | + "msg": err.Error(), | ||
34 | + "code": 1, | ||
35 | + "data": struct{}{}, | ||
36 | + }, false, false) | ||
37 | + } | ||
38 | + }() | ||
39 | + method := strings.ToLower(ctx.Request.Method) | ||
40 | + url := strings.Replace(ctx.Request.RequestURI, prefix, "", 1) | ||
41 | + req := svr.CreateRequest(svr.BaseUrl()+url, method) | ||
42 | + | ||
43 | + // 传递当前登录信息(可配置) | ||
44 | + loginToken, ok := FormCtxLoginToken(ctx) | ||
45 | + if ok && loginToken.CompanyId > 0 && loginToken.OrgId > 0 { | ||
46 | + req.Header("companyId", fmt.Sprintf("%v", loginToken.CompanyId)) | ||
47 | + req.Header("orgId", fmt.Sprintf("%v", loginToken.OrgId)) | ||
48 | + req.Header("userId", fmt.Sprintf("%v", loginToken.UserId)) | ||
49 | + orgIdList := make([]string, 0) | ||
50 | + for i := range loginToken.OrgIds { | ||
51 | + orgIdList = append(orgIdList, fmt.Sprintf("%d", loginToken.OrgIds[i])) | ||
52 | + } | ||
53 | + req.Header("orgIds", fmt.Sprintf("%v", strings.Join(orgIdList, ","))) | ||
54 | + } | ||
55 | + | ||
56 | + req.Body(ctx.Input.RequestBody) | ||
57 | + response, err := req.Response() | ||
58 | + if err != nil { | ||
59 | + return | ||
60 | + } | ||
61 | + if response.StatusCode != http.StatusOK { | ||
62 | + err = fmt.Errorf("%v", response.Status) | ||
63 | + return | ||
64 | + } | ||
65 | + | ||
66 | + byteResult, err = ioutil.ReadAll(response.Body) | ||
67 | + if err != nil { | ||
68 | + return | ||
69 | + } | ||
70 | + defer response.Body.Close() | ||
71 | + | ||
72 | + // 透传非json数据 | ||
73 | + contentType := response.Header.Get("Content-Type") | ||
74 | + if contentType != "application/json" { | ||
75 | + copyResponse(ctx, response, byteResult) | ||
76 | + return | ||
77 | + } | ||
78 | + | ||
79 | + var result service_gateway.GatewayResponse | ||
80 | + err = json.Unmarshal(byteResult, &result) | ||
81 | + if err != nil { | ||
82 | + return | ||
83 | + } | ||
84 | + | ||
85 | + err = svr.GetResponseData(result, &data) | ||
86 | + if err != nil { | ||
87 | + return | ||
88 | + } | ||
89 | + ctx.Output.SetStatus(http.StatusOK) | ||
90 | + ctx.Output.JSON(map[string]interface{}{ | ||
91 | + "msg": "成功", | ||
92 | + "code": 0, | ||
93 | + "data": data, | ||
94 | + }, false, false) | ||
95 | + } | ||
96 | +} | ||
97 | + | ||
98 | +func copyResponse(ctx *context.Context, response *http.Response, data []byte) { | ||
99 | + for k, v := range response.Header { | ||
100 | + if len(v) == 0 { | ||
101 | + continue | ||
102 | + } | ||
103 | + ctx.Output.Header(k, strings.Join(v, ",")) | ||
104 | + } | ||
105 | + ctx.Output.SetStatus(response.StatusCode) | ||
106 | + ctx.Output.Body(data) | ||
107 | +} |
1 | +package middleware | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/beego/beego/v2/server/web" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
8 | +) | ||
9 | + | ||
10 | +func RedirectManufactureWeigh() web.FilterFunc { | ||
11 | + return RedirectInternalService("/v1/manufacture-weigh", allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(domain.Operator{ | ||
12 | + CompanyId: int64(constant.MANUFACTURE_WEIGH_DEFAULT_COMPANYID), | ||
13 | + OrgId: int64(constant.MANUFACTURE_WEIGH_DEFAULT_ORGID), | ||
14 | + })) | ||
15 | +} |
1 | -package routers | ||
2 | - | ||
3 | -import ( | ||
4 | - "github.com/beego/beego/v2/server/web" | ||
5 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers/backgroud_client" | ||
6 | -) | ||
7 | - | ||
8 | -func init() { | ||
9 | - web.Router("/v1/background/menus/", &backgroud_client.MenuController{}, "Post:CreateMenu") | ||
10 | - web.Router("/v1/background/menus/:menuId", &backgroud_client.MenuController{}, "Put:UpdateMenu") | ||
11 | - web.Router("/v1/background/menus/:menuId", &backgroud_client.MenuController{}, "Get:GetMenu") | ||
12 | - //web.Router("/v1/background/menus/:menuId", &backgroud_client.MenuController{}, "Delete:RemoveMenu") | ||
13 | - //web.Router("/v1/background/menus/search", &backgroud_client.MenuController{}, "Get:ListMenu") | ||
14 | - web.Router("/v1/background/menus/search", &backgroud_client.MenuController{}, "Post:SearchMenu") | ||
15 | - web.Router("/v1/background/menus/batch-delete", &backgroud_client.MenuController{}, "Post:BatchDeleteMenu") | ||
16 | - web.Router("/v1/background/menus/batch-enable", &backgroud_client.MenuController{}, "Post:BatchEnableMenu") | ||
17 | -} |
pkg/port/beego/routers/background.go
0 → 100644
1 | +package routers | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/beego/beego/v2/server/web" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers/backgroud_client" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers/web_client" | ||
7 | +) | ||
8 | + | ||
9 | +func init() { | ||
10 | + // dictionary | ||
11 | + web.Router("/v1/background/dictionary/", &backgroud_client.DictionaryController{}, "Post:CreateDictionary") | ||
12 | + web.Router("/v1/background/dictionary/:dictionaryId", &backgroud_client.DictionaryController{}, "Put:UpdateDictionary") | ||
13 | + web.Router("/v1/background/dictionary/:dictionaryId", &backgroud_client.DictionaryController{}, "Get:GetDictionary") | ||
14 | + web.Router("/v1/background/dictionary/search", &backgroud_client.DictionaryController{}, "Post:ListDictionary") | ||
15 | + web.Router("/v1/background/dictionary/remove", &backgroud_client.DictionaryController{}, "Post:RemoveDictionary") | ||
16 | + | ||
17 | + // menu | ||
18 | + web.Router("/v1/background/menus/", &backgroud_client.MenuController{}, "Post:CreateMenu") | ||
19 | + web.Router("/v1/background/menus/:menuId", &backgroud_client.MenuController{}, "Put:UpdateMenu") | ||
20 | + web.Router("/v1/background/menus/:menuId", &backgroud_client.MenuController{}, "Get:GetMenu") | ||
21 | + web.Router("/v1/background/menus/search", &backgroud_client.MenuController{}, "Post:SearchMenu") | ||
22 | + web.Router("/v1/background/menus/batch-delete", &backgroud_client.MenuController{}, "Post:BatchDeleteMenu") | ||
23 | + web.Router("/v1/background/menus/batch-enable", &backgroud_client.MenuController{}, "Post:BatchEnableMenu") | ||
24 | + | ||
25 | + // company | ||
26 | + //web.Router("/v1/background/company/", &backgroud_client.CompanyController{}, "Post:CreateCompany") | ||
27 | + web.Router("/v1/background/company/:companyId", &backgroud_client.CompanyController{}, "Put:UpdateCompany") | ||
28 | + web.Router("/v1/background/company/:companyId", &backgroud_client.CompanyController{}, "Get:GetCompany") | ||
29 | + web.Router("/v1/background/company/search", &backgroud_client.CompanyController{}, "Post:SearchCompany") | ||
30 | + web.Router("/v1/background/company/:companyId/audit", &backgroud_client.CompanyController{}, "Post:AuditCompany") | ||
31 | + web.Router("/v1/background/company/:companyId/enable", &backgroud_client.CompanyController{}, "Post:EnableCompany") | ||
32 | + | ||
33 | + // user | ||
34 | + web.Router("/v1/background/user/search", &backgroud_client.UserController{}, "Post:SearchUser") | ||
35 | + web.Router("/v1/background/user/enable", &backgroud_client.UserController{}, "Post:EnableUser") | ||
36 | + web.Router("/v1/background/user/reset-password", &backgroud_client.UserController{}, "Post:ResetPassword") | ||
37 | + | ||
38 | + // admin | ||
39 | + web.Router("/v1/background/user-admin/search", &backgroud_client.UserController{}, "Post:SearchAdminUser") | ||
40 | + web.Router("/v1/background/user-admin/:userId", &backgroud_client.UserController{}, "Get:GetAdminUser") | ||
41 | + web.Router("/v1/background/user-admin/:userId", &backgroud_client.UserController{}, "Put:UpdateAdminUser") | ||
42 | + web.Router("/v1/background/user-admin/", &backgroud_client.UserController{}, "Post:CreateAdminUser") | ||
43 | + web.Router("/v1/background/user-admin/enable", &backgroud_client.UserController{}, "Post:EnableAdminUser") | ||
44 | + web.Router("/v1/background/user-admin/reset-password", &backgroud_client.UserController{}, "Post:ResetPassword") | ||
45 | + | ||
46 | + web.Router("/v1/background/auth/login/pwd", &backgroud_client.AuthController{}, "Post:LoginPwd") | ||
47 | + web.Router("/v1/background/auth/user-info", &backgroud_client.UserController{}, "Post:GetAdminUserInfo") | ||
48 | + web.Router("/v1/background/auth/user-menu", &web_client.MenuController{}, "Post:MenuSearch") | ||
49 | +} |
1 | -package routers | ||
2 | - | ||
3 | -import ( | ||
4 | - "github.com/beego/beego/v2/server/web" | ||
5 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers/backgroud_client" | ||
6 | -) | ||
7 | - | ||
8 | -func init() { | ||
9 | - web.Router("/v1/background/dictionary/", &backgroud_client.DictionaryController{}, "Post:CreateDictionary") | ||
10 | - web.Router("/v1/background/dictionary/:dictionaryId", &backgroud_client.DictionaryController{}, "Put:UpdateDictionary") | ||
11 | - web.Router("/v1/background/dictionary/:dictionaryId", &backgroud_client.DictionaryController{}, "Get:GetDictionary") | ||
12 | - web.Router("/v1/background/dictionary/search", &backgroud_client.DictionaryController{}, "Post:ListDictionary") | ||
13 | - web.Router("/v1/background/dictionary/remove", &backgroud_client.DictionaryController{}, "Post:RemoveDictionary") | ||
14 | -} |
@@ -28,6 +28,7 @@ func init() { | @@ -28,6 +28,7 @@ func init() { | ||
28 | web.Router("/v1/user/cooperation-org", &mobile_client.UserController{}, "Post:CooperationOrg") | 28 | web.Router("/v1/user/cooperation-org", &mobile_client.UserController{}, "Post:CooperationOrg") |
29 | 29 | ||
30 | // 特殊处理 | 30 | // 特殊处理 |
31 | + web.Router("/v1/user/department-users", &mobile_client.UserController{}, "Post:DepartmentUsers") //公用的 | ||
31 | web.Router("/v1/app/orgs/department-users", &mobile_client.UserController{}, "Post:DepartmentUsers") | 32 | web.Router("/v1/app/orgs/department-users", &mobile_client.UserController{}, "Post:DepartmentUsers") |
32 | web.Router("/v1/web/orgs/department-users", &web_client.OrgController{}, "Post:DepartmentUsers") | 33 | web.Router("/v1/web/orgs/department-users", &web_client.OrgController{}, "Post:DepartmentUsers") |
33 | } | 34 | } |
@@ -8,6 +8,12 @@ import ( | @@ -8,6 +8,12 @@ import ( | ||
8 | func init() { | 8 | func init() { |
9 | web.Router("/v1/web/excel/export/company-user", &web_client.ExcelDataController{}, "Post:ExportCompanyUser") | 9 | web.Router("/v1/web/excel/export/company-user", &web_client.ExcelDataController{}, "Post:ExportCompanyUser") |
10 | web.Router("/v1/web/excel/export/cooperation-user", &web_client.ExcelDataController{}, "Post:ExportCooperationUser") | 10 | web.Router("/v1/web/excel/export/cooperation-user", &web_client.ExcelDataController{}, "Post:ExportCooperationUser") |
11 | + web.Router("/v1/web/excel/export/manufacture-products", &web_client.ExcelDataController{}, "Post:ExportProducts") | ||
12 | + web.Router("/v1/web/excel/export/manufacture-employee-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureEmployeeProductive") | ||
13 | + web.Router("/v1/web/excel/export/manufacture-workshop-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureWorkshopProductive") | ||
14 | + | ||
15 | + web.Router("/v1/web/excel/export/manufacture-employee-attendance-statics", &web_client.ExcelDataController{}, "Post:ExportManufactureEmployeeAttendanceStatics") | ||
16 | + web.Router("/v1/web/excel/export/manufacture-workshop-attendance-statics", &web_client.ExcelDataController{}, "Post:ExportManufactureWorkshopAttendanceStatics") | ||
11 | 17 | ||
12 | web.Router("/v1/web/excel/import/dividends-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsOrder") | 18 | web.Router("/v1/web/excel/import/dividends-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsOrder") |
13 | web.Router("/v1/web/excel/import/dividends-returned-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsReturnedOrder") | 19 | web.Router("/v1/web/excel/import/dividends-returned-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsReturnedOrder") |
@@ -15,4 +21,7 @@ func init() { | @@ -15,4 +21,7 @@ func init() { | ||
15 | web.Router("/v1/web/file-import", &web_client.ExcelDataController{}, "Post:FileImport") | 21 | web.Router("/v1/web/file-import", &web_client.ExcelDataController{}, "Post:FileImport") |
16 | web.Router("/v1/web/file-export", &web_client.ExcelDataController{}, "Post:FileExport") | 22 | web.Router("/v1/web/file-export", &web_client.ExcelDataController{}, "Post:FileExport") |
17 | web.Router("/v1/web/file-import-template/:code", &web_client.ExcelDataController{}, "Get:FileImportTemplate") | 23 | web.Router("/v1/web/file-import-template/:code", &web_client.ExcelDataController{}, "Get:FileImportTemplate") |
24 | + | ||
25 | + web.Router("/v1/web/file-export/fields/:code", &web_client.ExcelDataController{}, "Get:GetExcelDataFields") | ||
26 | + | ||
18 | } | 27 | } |
1 | +package routers | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/beego/beego/v2/server/web" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/middleware" | ||
6 | +) | ||
7 | + | ||
8 | +func init() { | ||
9 | + // 车间列表 | ||
10 | + web.Post("/v1/manufacture-weigh/workshops/selector", middleware.RedirectManufactureWeigh()) | ||
11 | + // 车间员工 | ||
12 | + web.Post("/v1/manufacture-weigh/product-groups/employees", middleware.RedirectManufactureWeigh()) | ||
13 | + // 生产批次列表 | ||
14 | + web.Post("/v1/manufacture-weigh/product-plans/search", middleware.RedirectManufactureWeigh()) | ||
15 | + // 物料列表 | ||
16 | + web.Post("/v1/manufacture-weigh/unit-conversions/materials", middleware.RedirectManufactureWeigh()) | ||
17 | + // 领料 | ||
18 | + web.Post("/v1/manufacture-weigh/product-plans/receive-material", middleware.RedirectManufactureWeigh()) | ||
19 | + // 退料 | ||
20 | + web.Post("/v1/manufacture-weigh/product-plans/return-material", middleware.RedirectManufactureWeigh()) | ||
21 | + // 提交二级品 | ||
22 | + web.Post("/v1/manufacture-weigh/product-plans/submit-product-record", middleware.RedirectManufactureWeigh()) | ||
23 | + // 车间员工 | ||
24 | + web.Post("/v1/manufacture-weigh/product-groups/employee-signing", middleware.RedirectManufactureWeigh()) | ||
25 | + | ||
26 | + // 车间生产效率 | ||
27 | + web.Post("/v1/manufacture-weigh/statistics/workshop-production-efficiency-statistics", middleware.RedirectManufactureWeigh()) | ||
28 | + // 设备运行信息 | ||
29 | + web.Post("/v1/manufacture-weigh/statistics/device-running-info", middleware.RedirectManufactureWeigh()) | ||
30 | + // 设备生产效率 | ||
31 | + web.Post("/v1/manufacture-weigh/statistics/device-production-efficiency-statistics", middleware.RedirectManufactureWeigh()) | ||
32 | + | ||
33 | + web.Post("/v1/manufacture-weigh/statistics/internal/:actionType", middleware.RedirectManufactureWeigh()) | ||
34 | +} |
pkg/util/oss/oss.go
0 → 100644
1 | +package oss | ||
2 | + | ||
3 | +import ( | ||
4 | + "bytes" | ||
5 | + "fmt" | ||
6 | + "github.com/aliyun/aliyun-oss-go-sdk/oss" | ||
7 | + "github.com/linmadan/egglib-go/utils/snowflake" | ||
8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" | ||
9 | +) | ||
10 | + | ||
11 | +var snow, _ = snowflake.NewIdWorker(1) | ||
12 | + | ||
13 | +func UploadOss(data []byte) (string, error) { | ||
14 | + client, err := oss.New("oss-cn-shenzhen.aliyuncs.com", constant.OssAccessKey, constant.OssSecret) | ||
15 | + if err != nil { | ||
16 | + return "", err | ||
17 | + } | ||
18 | + bucket, err := client.Bucket(constant.OssBucket) | ||
19 | + if err != nil { | ||
20 | + return "", err | ||
21 | + } | ||
22 | + fileId, err := snow.NextId() | ||
23 | + if err != nil { | ||
24 | + return "", err | ||
25 | + } | ||
26 | + fileName := "costs/" + fmt.Sprintf("%v", fileId) | ||
27 | + err = bucket.PutObject(fileName, bytes.NewBuffer(data)) | ||
28 | + return constant.OssDomain +"/"+ fileName, err | ||
29 | +} |
pkg/util/oss/oss_test.go
0 → 100644
pkg/util/oss/test.png
0 → 100644
2.5 KB
-
请 注册 或 登录 后发表评论