作者 Administrator

合并分支 'test' 到 'master'

Test



查看合并请求 !54
正在显示 69 个修改的文件 包含 4146 行增加38 行删除

要显示太多修改。

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

不能预览此文件类型
@@ -15,7 +15,7 @@ logrus.log @@ -15,7 +15,7 @@ logrus.log
15 *.local 15 *.local
16 *.dev 16 *.dev
17 *.test 17 *.test
18 -.idea 18 +#.idea
19 .vscode 19 .vscode
20 .log 20 .log
21 *.tmp 21 *.tmp
  1 +# Default ignored files
  2 +/shelf/
  3 +/workspace.xml
  4 +# Datasource local storage ignored files
  5 +/dataSources/
  6 +/dataSources.local.xml
  7 +# Editor-based HTTP Client requests
  8 +/httpRequests/
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<module type="WEB_MODULE" version="4">
  3 + <component name="Go" enabled="true" />
  4 + <component name="NewModuleRootManager">
  5 + <content url="file://$MODULE_DIR$" />
  6 + <orderEntry type="inheritedJdk" />
  7 + <orderEntry type="sourceFolder" forTests="false" />
  8 + </component>
  9 +</module>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="CodeStream">
  4 + <option name="webViewContext" value="{&quot;chatProviderAccess&quot;:&quot;strict&quot;,&quot;currentTeamId&quot;:&quot;&quot;,&quot;currentStreamId&quot;:&quot;&quot;,&quot;pullRequestCheckoutBranch&quot;:false,&quot;isRepositioning&quot;:false,&quot;onboardStep&quot;:0,&quot;panelStack&quot;:[&quot;landing-redirect&quot;],&quot;hasFocus&quot;:false,&quot;channelFilter&quot;:&quot;all&quot;,&quot;channelsMuteAll&quot;:false,&quot;codemarkFileFilter&quot;:&quot;all&quot;,&quot;codemarkTypeFilter&quot;:&quot;all&quot;,&quot;codemarkTagFilter&quot;:&quot;all&quot;,&quot;codemarkBranchFilter&quot;:&quot;all&quot;,&quot;codemarkAuthorFilter&quot;:&quot;all&quot;,&quot;codemarksFileViewStyle&quot;:&quot;inline&quot;,&quot;codemarksShowArchived&quot;:false,&quot;codemarksShowResolved&quot;:false,&quot;codemarksWrapComments&quot;:false,&quot;showFeedbackSmiley&quot;:true,&quot;route&quot;:{&quot;name&quot;:&quot;newUserEntry&quot;,&quot;params&quot;:{}},&quot;spatialViewShowPRComments&quot;:false}" />
  5 + </component>
  6 +</project>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ProjectModuleManager">
  4 + <modules>
  5 + <module fileurl="file://$PROJECT_DIR$/.idea/allied-creation-cooperation.iml" filepath="$PROJECT_DIR$/.idea/allied-creation-cooperation.iml" />
  6 + </modules>
  7 + </component>
  8 +</project>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="VcsDirectoryMappings">
  4 + <mapping directory="$PROJECT_DIR$" vcs="Git" />
  5 + </component>
  6 +</project>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ProjectTasksOptions">
  4 + <enabled-global>
  5 + <option value="go fmt" />
  6 + </enabled-global>
  7 + </component>
  8 +</project>
  1 +<component name="ProjectRunConfigurationManager">
  2 + <configuration default="false" name="Docker for Mac" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
  3 + <deployment type="dockerfile">
  4 + <settings>
  5 + <option name="imageTag" value="latest" />
  6 + <option name="containerName" value="allied-creation-cooperation" />
  7 + <option name="envVars">
  8 + <list>
  9 + <DockerEnvVarImpl>
  10 + <option name="name" value="POSTGRESQL_HOST" />
  11 + <option name="value" value="114.55.200.59" />
  12 + </DockerEnvVarImpl>
  13 + <DockerEnvVarImpl>
  14 + <option name="name" value="POSTGRESQL_DB_NAME" />
  15 + <option name="value" value="allied_creation_cooperation_dev" />
  16 + </DockerEnvVarImpl>
  17 + <DockerEnvVarImpl>
  18 + <option name="name" value="POSTGRESQL_PORT" />
  19 + <option name="value" value="31543" />
  20 + </DockerEnvVarImpl>
  21 + <DockerEnvVarImpl>
  22 + <option name="name" value="POSTGRESQL_PASSWORD" />
  23 + <option name="value" value="eagle1010" />
  24 + </DockerEnvVarImpl>
  25 + </list>
  26 + </option>
  27 + <option name="portBindings">
  28 + <list>
  29 + <DockerPortBindingImpl>
  30 + <option name="containerPort" value="8082" />
  31 + <option name="hostPort" value="8082" />
  32 + </DockerPortBindingImpl>
  33 + </list>
  34 + </option>
  35 + <option name="sourceFilePath" value="Dockerfile" />
  36 + </settings>
  37 + </deployment>
  38 + <method v="2" />
  39 + </configuration>
  40 +</component>
  1 +FROM 192.168.0.243:5000/mmm/allied-creation-cooperation:20210908
  2 +#FROM golang:latest
  3 +MAINTAINER 陈志颖 <steve.d.chan@qq.com>
  4 +ENV APP_DIR $GOPATH/src/allied-creation-cooperation-20210909
  5 +RUN mkdir -p $APP_DIR
  6 +WORKDIR $APP_DIR/
  7 +COPY ./pkg pkg
  8 +COPY ./config config
  9 +COPY ./go.mod go.mod
  10 +COPY ./go.sum go.sum
  11 +COPY ./main.go main.go
  12 +RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"]
  13 +ENV GO111MODULE on
  14 +ENV GOPROXY https://goproxy.cn
  15 +RUN ["go","mod","tidy"]
  16 +RUN ["ls"]
  17 +RUN ["go","build"]
  18 +ENTRYPOINT ["./allied-creation-cooperation"]
  19 +
  20 +##############################
  21 +### STEP 1 build executable binary
  22 +##############################
  23 +#FROM golang:latest AS builder
  24 +#MAINTAINER 陈志颖 <steve.d.chan@qq.com>
  25 +#RUN mkdir /app
  26 +#WORKDIR /app
  27 +#COPY . /app
  28 +#RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"]
  29 +#RUN GO111MODULE="on" GOPROXY="https://goproxy.cn" CGO_ENABLED=0 GOOS=linux go build -o allied-creation-cooperation
  30 +#
  31 +##############################
  32 +### STEP 2 build a small image
  33 +#############################
  34 +#FROM scratch as final
  35 +#COPY --from=builder /app/allied-creation-cooperation /app/allied-creation-cooperation
  36 +#ENTRYPOINT ["./app/allied-creation-cooperation"]
1 # 天联共创 1 # 天联共创
2 2
  3 +## 项目架构
  4 +- 基于REST Full的微服务架构
  5 +
3 ## 代码仓库及相关文档 6 ## 代码仓库及相关文档
4 -- [仓库地址](http://gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation.git)  
5 -- [项目原型svn](svn://220.250.41.79/repo/标准产品文件) 7 +- [代码仓库地址](http://gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation.git)
  8 +- [DSL文件仓库地址](http://gitlab.fjmaimaimai.com/allied-creation/document)
  9 +- [标准产品文件svn](svn://220.250.41.79/repo/标准产品文件)
6 - [天联共创API(APP)](http://47.97.5.102:36666/project/342/interface/api) 10 - [天联共创API(APP)](http://47.97.5.102:36666/project/342/interface/api)
  11 +- [APP端原型地址](https://9cnuol.axshare.com/)
  12 +- [WEB端原型地址](https://eq4yc2.axshare.com/)
7 13
8 ## 项目规范 14 ## 项目规范
9 - 领域描述语言文档位置:document/allied-creation-cooperation/ 15 - 领域描述语言文档位置:document/allied-creation-cooperation/
10 - GIT流程:里程碑->问题->功能分支->代码审查->合并分支 16 - GIT流程:里程碑->问题->功能分支->代码审查->合并分支
11 - 开发分支命名规范:dev-姓名全拼 17 - 开发分支命名规范:dev-姓名全拼
12 - 接口规范:[API交互规范](https://doc-press.fjmaimaimai.com/standard/api.html) 18 - 接口规范:[API交互规范](https://doc-press.fjmaimaimai.com/standard/api.html)
13 -- 接口版本号:v2 19 +- 接口版本号:v1
14 - 数据交互规范:[数据交互格式标准](https://doc-press.fjmaimaimai.com/team/frontend/overview/http.html) 20 - 数据交互规范:[数据交互格式标准](https://doc-press.fjmaimaimai.com/team/frontend/overview/http.html)
15 21
16 ## 项目使用框架 22 ## 项目使用框架
@@ -86,6 +92,8 @@ @@ -86,6 +92,8 @@
86 92
87 ### DTO模块开发 93 ### DTO模块开发
88 94
  95 +### REST集成限界上下文
  96 +
89 ## 标准产品组工具使用 97 ## 标准产品组工具使用
90 - 设置全局变量(替换YOUR-USER-PATH为你真实的项目路径) 98 - 设置全局变量(替换YOUR-USER-PATH为你真实的项目路径)
91 99
@@ -119,12 +127,12 @@ @@ -119,12 +127,12 @@
119 127
120 5.生成Http协议接口 128 5.生成Http协议接口
121 129
122 -- Tips 130 +- 调试技巧
123 131
124 1.代码生成器服务端500错误调试技巧 132 1.代码生成器服务端500错误调试技巧
125 133
126 - 在任务管理其中关闭由标准化平台带起的eggcode.exe,在命令行通过命令eggcode.exe http -p 9099启动生成器服务,这样就可以打印出生成器500错误的具体信息,关键还是在编写dsl时要细心,不需要的配置整体删干净,需要的配置写完整,注意属性名不要和golang的关键字或者保留字冲突,例如:type、no 134 + 在任务管理其中关闭由标准化平台启动的eggcode.exe(需要debug版本才能查看日志),在命令行通过命令eggcode.exe http -p 9099启动生成器服务,这样就可以打印出生成器500错误的具体信息,关键还是在编写dsl时要细心,不需要的配置整体删干净,需要的配置写完整,注意属性名不要和golang的关键字或者保留字冲突,例如:type、no
127 135
128 - 2.集成试技巧 136 + 2.集成试技巧
129 137
130 Describe前面添加F可以针对当前用例进行测试,同样的It前面增加F也可以针对一个Describe中的不同IT进行测试,F的意思为Focus,另外还有其他标记如:P(Pending) or X,详情 [参考](https://onsi.github.io/ginkgo/) Ginkgo官方文档The Spec Runner章节 138 Describe前面添加F可以针对当前用例进行测试,同样的It前面增加F也可以针对一个Describe中的不同IT进行测试,F的意思为Focus,另外还有其他标记如:P(Pending) or X,详情 [参考](https://onsi.github.io/ginkgo/) Ginkgo官方文档The Spec Runner章节
  1 +-----BEGIN RSA PRIVATE KEY-----
  2 +MIIEpQIBAAKCAQEAy0OxRf+NheQG9epxbrudwnrzqVgqK5zCuRAkLUgaSMATVXEA
  3 +iDzJN39om+Q49MmtEk4pXGzKUyzkFJG96PA8tJq0E+bSDtSK3n+2mjZb6pChmgHw
  4 +KEX7T8ZVLqJBSrfrI4Z2BJDNEC+3wvVW3zpog1RlfKgft6NYUzNLUqE5Mxzq7lpD
  5 +eRsq+FhzM1sOeEb2dAmUlDDs+7HcR3Kj0ttKeg+hKqIottQ/H6Tq4c8deEQGnO0+
  6 +RN3CygyETbYmLuWttI/sUltulWJALIuU81Yr6uCOq5MSt2WsU8CTuhRwGXSvcQCO
  7 +FLYppYktoMDOGIBQffmJc/DdT1d35fvdpKbm+QIDAQABAoIBAQC8X7+qX2uI6gqJ
  8 +XPxC4x0RX2DxUAPE50KOv6bHUEsLoPZJ+K/Fko/oHuuTja47Lax3inhKb4gSDUhS
  9 +x754YivgNH8u8ns5wz/vc+yGflowyFj7oVAwAqslA2luDnD0Df6crcAx+wAQQCjN
  10 +RRF9T2QMUeq73BOI3Ji+gosLyN55vms2KadrwpPQwYN7qhdrerE7vPqCZeswzs1/
  11 +A5M9PVGBG+simNea5kv+tVJUdLi6ckGAB5KabyhpG779ckwzV/aZy3wIj4SvUvCd
  12 +bewH0xPHx5TqnMOXtzHgktClmL7hIYxy9sL14Dn0KVHbyolQ7IqmJtjXYqG84Fmx
  13 +AfyDfeABAoGBAPP820tKElrfTuZ+Z19kJBTp6I5iax2Ph10glUHLlLqJ82clI/Gl
  14 +CbMtnGmD72HfnJei82xqoVLsUkN9Sp+TSNJALh4N8rHkAtwq5kWToiAWZydwxVsp
  15 +x5OWEN3+QFIdjVW6fhg6jZSK5HHIqMdZOVvbfKP+Cv9fWWzlS7/WVTlJAoGBANVF
  16 +kol+KojM4DEASrw0s1mfPr0XvUFvKJ2TgVGR3HxAk4r0e0WwJdSfwGiB/ePcc6g5
  17 +D5dxBe8W5g3+V0DaC0f1DDNXg2MjYWoByWrurbm14FRnpMnx/UfZLo7rq8T9YrUT
  18 +Bd/y0/JasndN27bIfd60n233IYMqhV2+wBwqD3AxAoGAE2/wdHYJMk4Z9gjZ6WKL
  19 +8VKVIUq759X4XbXrzhsO1TGKP4xY6bZRKIIYtNs65dwvmHD13Yw9H+MNxqyjlkTg
  20 +h0dvpRtNW1ij1bBhOefCAbZnL2AviMyyRpKs81J/A0uxZ8P8qad4gf3ypxHqSD9W
  21 +b3fz3QivDZsl/6Pgvf6wOWkCgYEA1Cv9x5lj2WrxEu62axyG3P9nHBm055cdsf5g
  22 +JfVVg6t+3TuyM7c1O52efpnsKrdTvKTf1QrVG3INdxh0V4lUtcac16sVhBhbvml+
  23 +p0pCPMIrJe1ibKG5F7SB9B+TaEuo2nnNW2mp367JY5VqoyI8zsWk4nJ8vZAc1BGD
  24 +78EMUNECgYEAtV0pta3GuHKOLX1HMRsUsYuWjLqAbahnciF6MnjNWSonEK3VjMhI
  25 +g+krP/9sWoC3cFOG+4s96ubjDTWImvQvCrPaENdvlNwgp035bn51eFRv00QchM2H
  26 +VCS9Nhoqj5BIHl1G7Q13+tYTzjUWtteG902nWDVhgSlNLJf1rbTn34g=
  27 +-----END RSA PRIVATE KEY-----
  1 +-----BEGIN CERTIFICATE-----
  2 +MIIGazCCBVOgAwIBAgIQZBwijHoFToh2kjGwQ1E6bjANBgkqhkiG9w0BAQsFADBc
  3 +MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29UcnVzIENBIExpbWl0ZWQxMTAvBgNV
  4 +BAMMKFdvVHJ1cyBPViBTZXJ2ZXIgQ0EgIFtSdW4gYnkgdGhlIElzc3Vlcl0wHhcN
  5 +MjEwMjA0MDAwMDAwWhcNMjIwMzA2MjM1OTU5WjCB0TELMAkGA1UEBhMCQ04xDzAN
  6 +BgNVBBETBjM1MDAxNTESMBAGA1UEBwwJ56aP5bee5biCMU8wTQYDVQQJDEbpqazl
  7 +sL7ljLrmuZbph4zot68yN+WPtzEj5qW85LqU5qW8NTEw44CBNTEx5a6k77yI6Ieq
  8 +6LS46K+V6aqM5Yy65YaF77yJMTAwLgYDVQQKDCfnpo/lu7rkubDkubDkubDkv6Hm
  9 +ga/np5HmioDmnInpmZDlhazlj7gxGjAYBgNVBAMMESouZmptYWltYWltYWkuY29t
  10 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0OxRf+NheQG9epxbrud
  11 +wnrzqVgqK5zCuRAkLUgaSMATVXEAiDzJN39om+Q49MmtEk4pXGzKUyzkFJG96PA8
  12 +tJq0E+bSDtSK3n+2mjZb6pChmgHwKEX7T8ZVLqJBSrfrI4Z2BJDNEC+3wvVW3zpo
  13 +g1RlfKgft6NYUzNLUqE5Mxzq7lpDeRsq+FhzM1sOeEb2dAmUlDDs+7HcR3Kj0ttK
  14 +eg+hKqIottQ/H6Tq4c8deEQGnO0+RN3CygyETbYmLuWttI/sUltulWJALIuU81Yr
  15 +6uCOq5MSt2WsU8CTuhRwGXSvcQCOFLYppYktoMDOGIBQffmJc/DdT1d35fvdpKbm
  16 ++QIDAQABo4ICsTCCAq0wHwYDVR0jBBgwFoAUDUmPFTN7wE+2+zo4Cfw0Fdpg3RQw
  17 +HQYDVR0OBBYEFMGZEgzwtp+UhpTAS9nmSxlo9tIlMA4GA1UdDwEB/wQEAwIFoDAM
  18 +BgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBJBgNV
  19 +HSAEQjBAMDQGCysGAQQBsjEBAgIWMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2Vj
  20 +dGlnby5jb20vQ1BTMAgGBmeBDAECAjA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8v
  21 +Y3JsLmNybG9jc3AuY24vV29UcnVzT1ZTZXJ2ZXJDQV8yLmNybDBsBggrBgEFBQcB
  22 +AQRgMF4wOAYIKwYBBQUHMAKGLGh0dHA6Ly9haWEuY3Jsb2NzcC5jbi9Xb1RydXNP
  23 +VlNlcnZlckNBXzIuY3J0MCIGCCsGAQUFBzABhhZodHRwOi8vb2NzcC5jcmxvY3Nw
  24 +LmNuMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcARqVV63X6kSAwtaKJafTzfREs
  25 +QXS+/Um4havy/HD+bUcAAAF3brV9qAAABAMASDBGAiEAjrXS+1JJW9jag/XfW+kY
  26 +oL4sGGDNvcZgV35E0EcGQVACIQCjQh8k5oSFtqo7Qrbx2k3OISjfPSYRXNNsG4Ba
  27 +MyDmRwB2AN+lXqtogk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABd261fdAA
  28 +AAQDAEcwRQIgcPQQJ3rkCFaQPKwT3rtfQkr0taPzw0KW7yqu+MtmBH0CIQChKeMk
  29 +v7Xs0z7J47lM6HTPOU+xXL2riC69LC1KCOS6GTAtBgNVHREEJjAkghEqLmZqbWFp
  30 +bWFpbWFpLmNvbYIPZmptYWltYWltYWkuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBn
  31 ++jDy7sZS0gZzwMR4hnZHWqFYcJR3wnk77xr+5Yu2ifhlxaLHE3rEY3xTR9LsPwfW
  32 +pdg2McinPCI6vs009NYIpeTiHzVDPzKu2BaUfKj+EHLwZQGfXkNhp3cpqZMiTkr/
  33 +YNqf25GXsBa+spwzyHh9MBXXCfWRfdHX7JlH5zyoLNztTp8unxaRYldjghHDA3Q7
  34 +8Fyz6OncY3I4U4KKBSq2/TTxveDW6NxTTuJTPOg3/qSIkwdOBLuIzuhxmF4D9wpl
  35 +LMHmne2CilVeg73/GAzQt/w7FzmdvaHPAOVYWzdaTNALiXJxbi7EyO8q/uNK0GqY
  36 +hljMsnA1hApG+/2sOP/P
  37 +-----END CERTIFICATE-----
  38 +-----BEGIN CERTIFICATE-----
  39 +MIIF4TCCA8mgAwIBAgIQHQgpVDhMv3SvabmRFpvwLTANBgkqhkiG9w0BAQwFADCB
  40 +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
  41 +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
  42 +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw
  43 +MTA4MDAwMDAwWhcNMzAwMTA3MjM1OTU5WjBcMQswCQYDVQQGEwJDTjEaMBgGA1UE
  44 +ChMRV29UcnVzIENBIExpbWl0ZWQxMTAvBgNVBAMMKFdvVHJ1cyBPViBTZXJ2ZXIg
  45 +Q0EgIFtSdW4gYnkgdGhlIElzc3Vlcl0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
  46 +ggEKAoIBAQCARFLq6kqQRZ4SdFMPdd3XJTcOdVVT5bvZZx0VVDrkw3TmSAloQVFf
  47 +RhqDOSXg4CsIaa64qFSrC3a5sc8LgRhx7AUdvoUdfvdxIY1uoyxRWpoWO8oTUkSn
  48 +EXjEPf+zrcU5cWTOi32xWL9vklYds7iOQwgsKAHDzt4an8MLGvcLxAHciyiKcDEh
  49 +HZOGUHO5bKaCq+kP2rJCfVSlNvdyl1B8q+aGWXoi0gXGVL7WX4pcWj+DGuITbLB2
  50 +MzMytse4MjLJ84zaXh0UD4STlyD8tu/fakdxIwQ7K3/pP3RoGj1R9CvMWXUU+fZm
  51 +KNLW5565hd9Bh3Wkz8b4ApgMD9o3RUjTAgMBAAGjggFwMIIBbDAfBgNVHSMEGDAW
  52 +gBRTeb9aqitKz1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQUDUmPFTN7wE+2+zo4Cfw0
  53 +Fdpg3RQwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0l
  54 +BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCIGA1UdIAQbMBkwDQYLKwYBBAGyMQEC
  55 +AhYwCAYGZ4EMAQICMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy
  56 +dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBx
  57 +BggrBgEFBQcBAQRlMGMwOgYIKwYBBQUHMAKGLmh0dHA6Ly9jcnQudXNlcnRydXN0
  58 +LmNvbS9VU0VSVHJ1c3RSU0FBQUFDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9v
  59 +Y3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggIBAA5G7XA+fNKyj7Fy
  60 +uotoII38/32eZ4UrC1vGFPEtDyd0yzOrr7SvQUoO2GLxFzIQ0SsgMNXJ4UAhMkTD
  61 +yz1OA0tx0g0GjOQXBGA/yfRR7SgitRJAdbqkPfppMn+dtKXCHHx35ohTL0PklRdb
  62 +mXacvR7rXUIiJMdsvZZqYwc+DpGJ+Zv0sRJZEL7pm1oZv6EV+UzjAlOnLe6yrnyD
  63 +c99Kk1H/RFPUzduUWjiVR2aMDT1oMiwYeB2Zq60Sb201jqZPNQj5E+TkDD5BPFVc
  64 +kLeRi3LyXBUuBvXPsdLtBNlr+LExtCDd66kjeUe2/YbTHF4ai5PZPraQxgbOJJyc
  65 +gizGl/JOgrIQPUOLSQvXlxpKEqS+0z6KqV52bco2PNrC0f8ILKuw0nsfhgcGy46d
  66 +Su8fmU9+FT6e61i2nteKvt8qkkSkAJKQxRUWYduN24mG/OOIkoeOPdYHi+qEfbyI
  67 +qxiiqcH9cZgLK9AVuJoKtt7vg21OyrWi7S5T/WbTfTz9XL7QGe8ZODZZx6d50uo/
  68 +lDOmXm3p/kdGApvUF1UrL+og22jBLi0Ns6xzCfzrI3SpC9abvU8E9EnxQABuu/gM
  69 +/B63dbaZzSsMVFxeECD9nMWv7IH+/rqyGmjqEJzgKdPGvXhqpebQ1HhWrV+j+ipc
  70 +jplXB1j3GCozDFsninXG102N6wC8
  71 +-----END CERTIFICATE-----
  72 +-----BEGIN CERTIFICATE-----
  73 +MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
  74 +MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
  75 +VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
  76 +AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
  77 +MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
  78 +MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
  79 +ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
  80 +aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
  81 +s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
  82 +vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
  83 +Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
  84 +IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
  85 +tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
  86 +xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
  87 +icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
  88 +D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
  89 +WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
  90 +5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
  91 +KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
  92 +EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
  93 +ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
  94 +BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
  95 +L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
  96 +BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
  97 +A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
  98 +rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
  99 +/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
  100 +CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
  101 +zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
  102 +vGp4z7h/jnZymQyd/teRCBaho1+V
  103 +-----END CERTIFICATE-----
  1 +apiVersion: v1
  2 +kind: Service
  3 +metadata:
  4 + name: allied-creation-cooperation
  5 + namespace: mmm-suplus-dev
  6 + labels:
  7 + k8s-app: allied-creation-cooperation
  8 +spec:
  9 + ports:
  10 + - name: "http"
  11 + port: 80
  12 + targetPort: 8082
  13 + selector:
  14 + k8s-app: allied-creation-cooperation
  15 +---
  16 +apiVersion: extensions/v1beta1
  17 +kind: Deployment
  18 +metadata:
  19 + name: allied-creation-cooperation
  20 + namespace: mmm-suplus-dev
  21 + labels:
  22 + k8s-app: allied-creation-cooperation
  23 +spec:
  24 + replicas: 1
  25 + template:
  26 + metadata:
  27 + labels:
  28 + k8s-app: allied-creation-cooperation
  29 + spec:
  30 + affinity:
  31 + nodeAffinity:
  32 + preferredDuringSchedulingIgnoredDuringExecution:
  33 + - preference: {}
  34 + weight: 100
  35 + requiredDuringSchedulingIgnoredDuringExecution:
  36 + nodeSelectorTerms:
  37 + - matchExpressions:
  38 + - key: kubernetes.io/hostname
  39 + operator: In
  40 + values:
  41 + - cn-hangzhou.i-bp1djh1xn7taumbue1ze
  42 + - cn-hangzhou.i-bp1djh1xn7taumbue1zd
  43 + - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
  44 + - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
  45 + containers:
  46 + - name: allied-creation-cooperation
  47 + image: 192.168.0.243:5000/mmm/allied-creation-cooperation:dev
  48 + imagePullPolicy: Always
  49 + ports:
  50 + - containerPort: 8082
  51 + volumeMounts:
  52 + - mountPath: /opt/logs
  53 + name: accesslogs
  54 + env:
  55 + - name: LOG_LEVEL
  56 + value: "debug"
  57 + - name: LOG_FRAMEWORK
  58 + value: "beego"
  59 + - name: LOG_TYPE
  60 + value: "file"
  61 + - name: ERROR_BASE_CODE
  62 + value: "1"
  63 + - name: ERROR_BASE_CODE_MULTIPLE
  64 + value: "1000"
  65 + - name: ENABLE_KAFKA_LOG
  66 + value: "false"
  67 + - name: USER_MODULE_HOST
  68 + value: "http://allied-creation-user-dev.fjmaimaimai.com"
  69 + - name: REDIS_HOST
  70 + valueFrom:
  71 + configMapKeyRef:
  72 + name: suplus-config
  73 + key: redis.ip
  74 + - name: REDIS_PORT
  75 + valueFrom:
  76 + configMapKeyRef:
  77 + name: suplus-config
  78 + key: redis.port
  79 + - name: POSTGRESQL_DB_NAME
  80 + valueFrom:
  81 + configMapKeyRef:
  82 + name: suplus-config
  83 + key: postgresqlalliedcreationcooperation.dbname
  84 + - name: POSTGRESQL_USER
  85 + valueFrom:
  86 + configMapKeyRef:
  87 + name: suplus-config
  88 + key: postgresql.user
  89 + - name: POSTGRESQL_PASSWORD
  90 + valueFrom:
  91 + configMapKeyRef:
  92 + name: suplus-config
  93 + key: postgresql.password
  94 + - name: POSTGRESQL_HOST
  95 + valueFrom:
  96 + configMapKeyRef:
  97 + name: suplus-config
  98 + key: postgresql.host
  99 + - name: POSTGRESQL_PORT
  100 + valueFrom:
  101 + configMapKeyRef:
  102 + name: suplus-config
  103 + key: postgresql.port
  104 + volumes:
  105 + - name: accesslogs
  106 + emptyDir: {}
  1 +#!/bin/bash
  2 +export PATH=/root/local/bin:$PATH
  3 +kubectl -n mmm-suplus-dev get pods | grep -q allied-creation-cooperation
  4 +if [ "$?" == "1" ];then
  5 + kubectl create -f /tmp/dev/allied-creation-cooperation/allied-creation-cooperation.yaml --record
  6 + kubectl -n mmm-suplus-dev get svc | grep -q allied-creation-cooperation
  7 + if [ "$?" == "0" ];then
  8 + echo "allied-creation-cooperation service install success!"
  9 + else
  10 + echo "allied-creation-cooperation service install fail!"
  11 + fi
  12 + kubectl -n mmm-suplus-dev get pods | grep -q allied-creation-cooperation
  13 + if [ "$?" == "0" ];then
  14 + echo "allied-creation-cooperation deployment install success!"
  15 + else
  16 + echo "allied-creation-cooperation deployment install fail!"
  17 + fi
  18 +else
  19 + kubectl delete -f /tmp/dev/allied-creation-cooperation/allied-creation-cooperation.yaml
  20 + kubectl -n mmm-suplus-dev get svc | grep -q allied-creation-cooperation
  21 + while [ "$?" == "0" ]
  22 + do
  23 + kubectl -n mmm-suplus-dev get svc | grep -q allied-creation-cooperation
  24 + done
  25 + kubectl -n mmm-suplus-dev get pods | grep -q allied-creation-cooperation
  26 + while [ "$?" == "0" ]
  27 + do
  28 + kubectl -n mmm-suplus-dev get pods | grep -q allied-creation-cooperation
  29 + done
  30 + kubectl create -f /tmp/dev/allied-creation-cooperation/allied-creation-cooperation.yaml --record
  31 + kubectl -n mmm-suplus-dev get svc | grep -q allied-creation-cooperation
  32 + if [ "$?" == "0" ];then
  33 + echo "allied-creation-cooperation service update success!"
  34 + else
  35 + echo "allied-creation-cooperation service update fail!"
  36 + fi
  37 + kubectl -n mmm-suplus-dev get pods | grep -q allied-creation-cooperation
  38 + if [ "$?" == "0" ];then
  39 + echo "allied-creation-cooperation deployment update success!"
  40 + else
  41 + echo "allied-creation-cooperation deployment update fail!"
  42 + fi
  43 +fi
  1 +apiVersion: v1
  2 +kind: Service
  3 +metadata:
  4 + name: allied-creation-cooperation
  5 + namespace: <replace-your-k8s-namespace>
  6 + labels:
  7 + k8s-app: allied-creation-cooperation
  8 +spec:
  9 + ports:
  10 + - name: "http"
  11 + port: 80
  12 + targetPort: 8082
  13 + selector:
  14 + k8s-app: allied-creation-cooperation
  15 +---
  16 +apiVersion: extensions/v1beta1
  17 +kind: Deployment
  18 +metadata:
  19 + name: allied-creation-cooperation
  20 + namespace: <replace-your-k8s-namespace>
  21 + labels:
  22 + k8s-app: allied-creation-cooperation
  23 +spec:
  24 + replicas: 1
  25 + template:
  26 + metadata:
  27 + labels:
  28 + k8s-app: allied-creation-cooperation
  29 + spec:
  30 + affinity:
  31 + nodeAffinity:
  32 + preferredDuringSchedulingIgnoredDuringExecution:
  33 + - preference: {}
  34 + weight: 100
  35 + requiredDuringSchedulingIgnoredDuringExecution:
  36 + nodeSelectorTerms:
  37 + - matchExpressions:
  38 + - key: kubernetes.io/hostname
  39 + operator: In
  40 + values:
  41 + - cn-hangzhou.i-bp1djh1xn7taumbue1ze
  42 + - cn-hangzhou.i-bp1djh1xn7taumbue1zd
  43 + - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
  44 + - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
  45 + containers:
  46 + - name: allied-creation-cooperation
  47 + image: 192.168.0.243:5000/mmm/allied-creation-cooperation:dev
  48 + imagePullPolicy: Always
  49 + ports:
  50 + - containerPort: 8082
  51 + volumeMounts:
  52 + - mountPath: /opt/logs
  53 + name: accesslogs
  54 + env:
  55 + - name: LOG_LEVEL
  56 + value: "debug"
  57 + - name: ERROR_BASE_CODE
  58 + value: "1"
  59 + - name: ERROR_BASE_CODE_MULTIPLE
  60 + value: "1000"
  61 + volumes:
  62 + - name: accesslogs
  63 + emptyDir: {}
  1 +#!/bin/bash
  2 +export PATH=/root/local/bin:$PATH
  3 +kubectl -n <replace-your-k8s-namespace> get pods | grep -q allied-creation-cooperation
  4 +if [ "$?" == "1" ];then
  5 + kubectl create -f /tmp/dev/allied-creation-cooperation/allied-creation-cooperation.yaml --record
  6 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q allied-creation-cooperation
  7 + if [ "$?" == "0" ];then
  8 + echo "allied-creation-cooperation service install success!"
  9 + else
  10 + echo "allied-creation-cooperation service install fail!"
  11 + fi
  12 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q allied-creation-cooperation
  13 + if [ "$?" == "0" ];then
  14 + echo "allied-creation-cooperation deployment install success!"
  15 + else
  16 + echo "allied-creation-cooperation deployment install fail!"
  17 + fi
  18 +else
  19 + kubectl delete -f /tmp/dev/allied-creation-cooperation/allied-creation-cooperation.yaml
  20 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q allied-creation-cooperation
  21 + while [ "$?" == "0" ]
  22 + do
  23 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q allied-creation-cooperation
  24 + done
  25 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q allied-creation-cooperation
  26 + while [ "$?" == "0" ]
  27 + do
  28 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q allied-creation-cooperation
  29 + done
  30 + kubectl create -f /tmp/dev/allied-creation-cooperation/allied-creation-cooperation.yaml --record
  31 + kubectl -n <replace-your-k8s-namespace> get svc | grep -q allied-creation-cooperation
  32 + if [ "$?" == "0" ];then
  33 + echo "allied-creation-cooperation service update success!"
  34 + else
  35 + echo "allied-creation-cooperation service update fail!"
  36 + fi
  37 + kubectl -n <replace-your-k8s-namespace> get pods | grep -q allied-creation-cooperation
  38 + if [ "$?" == "0" ];then
  39 + echo "allied-creation-cooperation deployment update success!"
  40 + else
  41 + echo "allied-creation-cooperation deployment update fail!"
  42 + fi
  43 +fi
  1 +apiVersion: v1
  2 +kind: Service
  3 +metadata:
  4 + name: allied-creation-cooperation
  5 + namespace: mmm-suplus-test
  6 + labels:
  7 + k8s-app: allied-creation-cooperation
  8 +spec:
  9 + ports:
  10 + - name: "http"
  11 + port: 80
  12 + targetPort: 8082
  13 + - name: "https"
  14 + port: 443
  15 + targetPort: 443
  16 + selector:
  17 + k8s-app: allied-creation-cooperation
  18 +---
  19 +apiVersion: extensions/v1beta1
  20 +kind: Deployment
  21 +metadata:
  22 + name: allied-creation-cooperation
  23 + namespace: mmm-suplus-test
  24 + labels:
  25 + k8s-app: allied-creation-cooperation
  26 +spec:
  27 + replicas: 1
  28 + template:
  29 + metadata:
  30 + labels:
  31 + k8s-app: allied-creation-cooperation
  32 + spec:
  33 + affinity:
  34 + nodeAffinity:
  35 + preferredDuringSchedulingIgnoredDuringExecution:
  36 + - preference: {}
  37 + weight: 100
  38 + requiredDuringSchedulingIgnoredDuringExecution:
  39 + nodeSelectorTerms:
  40 + - matchExpressions:
  41 + - key: kubernetes.io/hostname
  42 + operator: In
  43 + values:
  44 + - cn-hangzhou.i-bp1djh1xn7taumbue1ze
  45 + - cn-hangzhou.i-bp1djh1xn7taumbue1zd
  46 + - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
  47 + - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
  48 + containers:
  49 + - name: allied-creation-cooperation
  50 + image: 192.168.0.243:5000/mmm/allied-creation-cooperation:test
  51 + imagePullPolicy: Always
  52 + ports:
  53 + - containerPort: 8082
  54 + - containerPort: 443
  55 + volumeMounts:
  56 + - mountPath: /opt/logs
  57 + name: accesslogs
  58 + env:
  59 + - name: LOG_LEVEL
  60 + value: "debug"
  61 + - name: LOG_FRAMEWORK
  62 + value: "beego"
  63 + - name: LOG_TYPE
  64 + value: "file"
  65 + - name: ERROR_BASE_CODE
  66 + value: "1"
  67 + - name: ERROR_BASE_CODE_MULTIPLE
  68 + value: "1000"
  69 + - name: ENABLE_KAFKA_LOG
  70 + value: "false"
  71 + - name: USER_MODULE_HOST
  72 + value: "http://allied-creation-user-test.fjmaimaimai.com"
  73 + - name: REDIS_HOST
  74 + valueFrom:
  75 + configMapKeyRef:
  76 + name: suplus-config
  77 + key: redis.ip
  78 + - name: REDIS_PORT
  79 + valueFrom:
  80 + configMapKeyRef:
  81 + name: suplus-config
  82 + key: redis.port
  83 + - name: POSTGRESQL_DB_NAME
  84 + valueFrom:
  85 + configMapKeyRef:
  86 + name: suplus-config
  87 + key: postgresqlalliedcreationcooperation.dbname
  88 + - name: POSTGRESQL_USER
  89 + valueFrom:
  90 + configMapKeyRef:
  91 + name: suplus-config
  92 + key: postgresql.user
  93 + - name: POSTGRESQL_PASSWORD
  94 + valueFrom:
  95 + configMapKeyRef:
  96 + name: suplus-config
  97 + key: postgresql.password
  98 + - name: POSTGRESQL_HOST
  99 + valueFrom:
  100 + configMapKeyRef:
  101 + name: suplus-config
  102 + key: postgresql.host
  103 + - name: POSTGRESQL_PORT
  104 + valueFrom:
  105 + configMapKeyRef:
  106 + name: suplus-config
  107 + key: postgresql.port
  108 + volumes:
  109 + - name: accesslogs
  110 + emptyDir: {}
  1 +#!/bin/bash
  2 +export PATH=/root/local/bin:$PATH
  3 +kubectl -n mmm-suplus-test get pods | grep -q allied-creation-cooperation
  4 +if [ "$?" == "1" ];then
  5 + kubectl create -f /tmp/test/allied-creation-cooperation/allied-creation-cooperation.yaml --record
  6 + kubectl -n mmm-suplus-test get svc | grep -q allied-creation-cooperation
  7 + if [ "$?" == "0" ];then
  8 + echo "allied-creation-cooperation service install success!"
  9 + else
  10 + echo "allied-creation-cooperation service install fail!"
  11 + fi
  12 + kubectl -n mmm-suplus-test get pods | grep -q allied-creation-cooperation
  13 + if [ "$?" == "0" ];then
  14 + echo "allied-creation-cooperation deployment install success!"
  15 + else
  16 + echo "allied-creation-cooperation deployment install fail!"
  17 + fi
  18 +else
  19 + kubectl delete -f /tmp/test/allied-creation-cooperation/allied-creation-cooperation.yaml
  20 + kubectl -n mmm-suplus-test get svc | grep -q allied-creation-cooperation
  21 + while [ "$?" == "0" ]
  22 + do
  23 + kubectl -n mmm-suplus-test get svc | grep -q allied-creation-cooperation
  24 + done
  25 + kubectl -n mmm-suplus-test get pods | grep -q allied-creation-cooperation
  26 + while [ "$?" == "0" ]
  27 + do
  28 + kubectl -n mmm-suplus-test get pods | grep -q allied-creation-cooperation
  29 + done
  30 + kubectl create -f /tmp/test/allied-creation-cooperation/allied-creation-cooperation.yaml --record
  31 + kubectl -n mmm-suplus-test get svc | grep -q allied-creation-cooperation
  32 + if [ "$?" == "0" ];then
  33 + echo "allied-creation-cooperation service update success!"
  34 + else
  35 + echo "allied-creation-cooperation service update fail!"
  36 + fi
  37 + kubectl -n mmm-suplus-test get pods | grep -q allied-creation-cooperation
  38 + if [ "$?" == "0" ];then
  39 + echo "allied-creation-cooperation deployment update success!"
  40 + else
  41 + echo "allied-creation-cooperation deployment update fail!"
  42 + fi
  43 +fi
不能预览此文件类型
1 -version: v1  
2 -kind: Attribute  
3 -metadata:  
4 - name: count  
5 - description: 匹配数目  
6 - type:  
7 - primitive: int64  
1 -version: v1  
2 -kind: Attribute  
3 -metadata:  
4 - name: limit  
5 - description: 查询限制  
6 - type:  
7 - primitive: int  
1 -version: v1  
2 -kind: Attribute  
3 -metadata:  
4 - name: offset  
5 - description: 查询偏离量  
6 - type:  
7 - primitive: int  
1 -version: v1  
2 -kind: Project  
3 -metadata:  
4 - name: allied-creation-cooperation  
5 - description: 天联共创  
6 - version: 0.0.1  
7 - repository: gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation  
8 - contact:  
9 - name: 陈志颖  
10 - email: steve.d.chan@qq.com  
此 diff 太大无法显示。
此 diff 太大无法显示。
此 diff 太大无法显示。
此 diff 太大无法显示。
此 diff 太大无法显示。
此 diff 太大无法显示。
此 diff 太大无法显示。
此 diff 太大无法显示。
此 diff 太大无法显示。
  1 +module gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation
  2 +
  3 +go 1.16
  4 +
  5 +require (
  6 + github.com/Shopify/sarama v1.25.0
  7 + github.com/ajg/form v1.5.1 // indirect
  8 + github.com/beego/beego/v2 v2.0.1
  9 + github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 // indirect
  10 + github.com/fatih/structs v1.1.0 // indirect
  11 + github.com/gavv/httpexpect v2.0.0+incompatible
  12 + github.com/go-pg/pg/v10 v10.7.7
  13 + github.com/google/go-cmp v0.5.6 // indirect
  14 + github.com/google/go-querystring v1.1.0 // indirect
  15 + github.com/google/uuid v1.1.2 // indirect
  16 + github.com/gorilla/websocket v1.4.2 // indirect
  17 + github.com/imkira/go-interpol v1.1.0 // indirect
  18 + github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6
  19 + github.com/mattn/go-colorable v0.1.8 // indirect
  20 + github.com/moul/http2curl v1.0.0 // indirect
  21 + github.com/onsi/ginkgo v1.14.2
  22 + github.com/onsi/gomega v1.10.3
  23 + github.com/sergi/go-diff v1.2.0 // indirect
  24 + github.com/shopspring/decimal v1.2.0
  25 + github.com/sirupsen/logrus v1.8.1 // indirect
  26 + github.com/smartystreets/assertions v1.1.1 // indirect
  27 + github.com/smartystreets/goconvey v1.6.4 // indirect
  28 + github.com/valyala/fasthttp v1.28.0 // indirect
  29 + github.com/xeipuuv/gojsonschema v1.2.0 // indirect
  30 + github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect
  31 + github.com/yudai/gojsondiff v1.0.0 // indirect
  32 + github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
  33 + github.com/yudai/pp v2.0.1+incompatible // indirect
  34 + golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect
  35 +)
  1 +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
  2 +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
  3 +github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
  4 +github.com/Shopify/sarama v1.25.0 h1:ch1ywjRLjfJtU+EaiJ+l0rWffQ6TRpyYmW4DX7Cb2SU=
  5 +github.com/Shopify/sarama v1.25.0/go.mod h1:y/CFFTO9eaMTNriwu/Q+W4eioLqiDMGkA1W+gmdfj8w=
  6 +github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=
  7 +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
  8 +github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
  9 +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
  10 +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
  11 +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
  12 +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
  13 +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
  14 +github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
  15 +github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk=
  16 +github.com/andybalholm/brotli v1.0.2 h1:JKnhI/XQ75uFBTiuzXpzFrUriDPiZjlOSzh6wXogP0E=
  17 +github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
  18 +github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE=
  19 +github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI=
  20 +github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ=
  21 +github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU=
  22 +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
  23 +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
  24 +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
  25 +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
  26 +github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
  27 +github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
  28 +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
  29 +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
  30 +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
  31 +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
  32 +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
  33 +github.com/coreos/etcd v3.3.25+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
  34 +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
  35 +github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
  36 +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
  37 +github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U=
  38 +github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c=
  39 +github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs=
  40 +github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY=
  41 +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
  42 +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
  43 +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
  44 +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
  45 +github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU=
  46 +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
  47 +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=
  48 +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
  49 +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=
  50 +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
  51 +github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
  52 +github.com/elastic/go-elasticsearch/v6 v6.8.5 h1:U2HtkBseC1FNBmDr0TR2tKltL6FxoY+niDAlj5M8TK8=
  53 +github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI=
  54 +github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk=
  55 +github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
  56 +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
  57 +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
  58 +github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 h1:DddqAaWDpywytcG8w/qoQ5sAN8X12d3Z3koB0C3Rxsc=
  59 +github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
  60 +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
  61 +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
  62 +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
  63 +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
  64 +github.com/frankban/quicktest v1.4.1 h1:Wv2VwvNn73pAdFIVUQRXYDFp31lXKbqblIXo/Q5GPSg=
  65 +github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ=
  66 +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
  67 +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
  68 +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
  69 +github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU5kORdjhlA1yX8=
  70 +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
  71 +github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw=
  72 +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
  73 +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
  74 +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
  75 +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
  76 +github.com/go-pg/pg/v10 v10.7.7 h1:jPooLMqrVVV5Ejpcxpwxv9R2gECT/+UEpz+qIzOUJ9A=
  77 +github.com/go-pg/pg/v10 v10.7.7/go.mod h1:d0w17Xw5x2DtbD/UgB9rnZg3FAck3eDHXff0Srrzuuk=
  78 +github.com/go-pg/zerochecker v0.2.0 h1:pp7f72c3DobMWOb2ErtZsnrPaSvHd2W4o9//8HtF4mU=
  79 +github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo=
  80 +github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
  81 +github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg=
  82 +github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
  83 +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
  84 +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
  85 +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
  86 +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
  87 +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
  88 +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
  89 +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
  90 +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
  91 +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
  92 +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
  93 +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
  94 +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
  95 +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
  96 +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
  97 +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
  98 +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
  99 +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
  100 +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
  101 +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
  102 +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
  103 +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
  104 +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA=
  105 +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
  106 +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
  107 +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
  108 +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
  109 +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
  110 +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
  111 +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
  112 +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
  113 +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
  114 +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
  115 +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
  116 +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
  117 +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
  118 +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
  119 +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
  120 +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
  121 +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
  122 +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
  123 +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
  124 +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
  125 +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
  126 +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
  127 +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
  128 +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
  129 +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
  130 +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
  131 +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
  132 +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
  133 +github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk=
  134 +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
  135 +github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03 h1:FUwcHNlEqkqLjLBdCp5PRlCFijNjvcYANOZXzCfXwCM=
  136 +github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
  137 +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
  138 +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
  139 +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
  140 +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
  141 +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
  142 +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
  143 +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
  144 +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
  145 +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
  146 +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
  147 +github.com/klauspost/compress v1.12.2 h1:2KCfW3I9M7nSc5wOqXAlW2v2U6v+w6cbjvbfp+OykW8=
  148 +github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
  149 +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
  150 +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
  151 +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
  152 +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
  153 +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
  154 +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
  155 +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
  156 +github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ=
  157 +github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
  158 +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
  159 +github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6 h1:nyhVnOIXsESuhZ95Ak6VRSF+0fHeKlYWq0EvHByt5RU=
  160 +github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6/go.mod h1:ZZuSWicGxpgN0OulARhuKwFJuJ9we0otaPVAJtz10yk=
  161 +github.com/magefile/mage v1.10.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
  162 +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
  163 +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
  164 +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
  165 +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
  166 +github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
  167 +github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
  168 +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
  169 +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
  170 +github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=
  171 +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
  172 +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
  173 +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
  174 +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
  175 +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
  176 +github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
  177 +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
  178 +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
  179 +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
  180 +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
  181 +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
  182 +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
  183 +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
  184 +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
  185 +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
  186 +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
  187 +github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=
  188 +github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
  189 +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
  190 +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
  191 +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
  192 +github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA=
  193 +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc=
  194 +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
  195 +github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
  196 +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
  197 +github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
  198 +github.com/pierrec/lz4 v2.2.6+incompatible h1:6aCX4/YZ9v8q69hTyiR7dNLnTA3fgtKHVVW5BCd5Znw=
  199 +github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
  200 +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
  201 +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
  202 +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
  203 +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
  204 +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
  205 +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
  206 +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
  207 +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
  208 +github.com/prometheus/client_golang v1.7.0 h1:wCi7urQOGBsYcQROHqpUUX4ct84xp40t9R9JX0FuA/U=
  209 +github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
  210 +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
  211 +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
  212 +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
  213 +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
  214 +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
  215 +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
  216 +github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc=
  217 +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
  218 +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
  219 +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
  220 +github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
  221 +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
  222 +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=
  223 +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
  224 +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
  225 +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
  226 +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
  227 +github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo=
  228 +github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg=
  229 +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
  230 +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
  231 +github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
  232 +github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s=
  233 +github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
  234 +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
  235 +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
  236 +github.com/sirupsen/logrus v1.8.0/go.mod h1:4GuYW9TZmE769R5STWrRakJc4UqQ3+QQ95fyz7ENv1A=
  237 +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
  238 +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
  239 +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
  240 +github.com/smartystreets/assertions v1.1.1 h1:T/YLemO5Yp7KPzS+lVtu+WsHn8yoSwTfItdAd1r3cck=
  241 +github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
  242 +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
  243 +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
  244 +github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE=
  245 +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
  246 +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
  247 +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
  248 +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
  249 +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
  250 +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
  251 +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
  252 +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
  253 +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
  254 +github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
  255 +github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
  256 +github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo=
  257 +github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs=
  258 +github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
  259 +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
  260 +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
  261 +github.com/valyala/fasthttp v1.28.0 h1:ruVmTmZaBR5i67NqnjvvH5gEv0zwHfWtbjoyW98iho4=
  262 +github.com/valyala/fasthttp v1.28.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA=
  263 +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
  264 +github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94=
  265 +github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ=
  266 +github.com/vmihailenco/msgpack/v5 v5.2.0 h1:ZhIAtVUP1mme8GIlpiAnmTzjSWMexA/uNF2We85DR0w=
  267 +github.com/vmihailenco/msgpack/v5 v5.2.0/go.mod h1:fEM7KuHcnm0GvDCztRpw9hV0PuoO2ciTismP6vjggcM=
  268 +github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc=
  269 +github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
  270 +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
  271 +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
  272 +github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc=
  273 +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
  274 +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
  275 +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
  276 +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
  277 +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
  278 +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
  279 +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
  280 +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
  281 +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY=
  282 +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
  283 +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=
  284 +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
  285 +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M=
  286 +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
  287 +github.com/yudai/pp v2.0.1+incompatible h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI=
  288 +github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
  289 +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
  290 +github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU=
  291 +go.etcd.io/etcd v3.3.25+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI=
  292 +go.opentelemetry.io/otel v0.17.0 h1:6MKOu8WY4hmfpQ4oQn34u6rYhnf2sWf1LXYO/UFm71U=
  293 +go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9eqkC9s=
  294 +go.opentelemetry.io/otel/metric v0.17.0 h1:t+5EioN8YFXQ2EH+1j6FHCKMUj+57zIDSnSGr/mWuug=
  295 +go.opentelemetry.io/otel/metric v0.17.0/go.mod h1:hUz9lH1rNXyEwWAhIWCMFWKhYtpASgSnObJFnU26dJ0=
  296 +go.opentelemetry.io/otel/oteltest v0.17.0 h1:TyAihUowTDLqb4+m5ePAsR71xPJaTBJl4KDArIdi9k4=
  297 +go.opentelemetry.io/otel/oteltest v0.17.0/go.mod h1:JT/LGFxPwpN+nlsTiinSYjdIx3hZIGqHCpChcIZmdoE=
  298 +go.opentelemetry.io/otel/trace v0.17.0 h1:SBOj64/GAOyWzs5F680yW1ITIfJkm6cJWL2YAvuL9xY=
  299 +go.opentelemetry.io/otel/trace v0.17.0/go.mod h1:bIujpqg6ZL6xUTubIUgziI1jSaUPthmabA/ygf/6Cfg=
  300 +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
  301 +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
  302 +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
  303 +go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
  304 +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
  305 +golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
  306 +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
  307 +golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
  308 +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
  309 +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
  310 +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
  311 +golang.org/x/crypto v0.0.0-20210218145215-b8e89b74b9df/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
  312 +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc=
  313 +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
  314 +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
  315 +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
  316 +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
  317 +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
  318 +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
  319 +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
  320 +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
  321 +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
  322 +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
  323 +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
  324 +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  325 +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  326 +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  327 +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  328 +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  329 +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
  330 +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
  331 +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
  332 +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
  333 +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
  334 +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
  335 +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
  336 +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
  337 +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
  338 +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
  339 +golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
  340 +golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q=
  341 +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
  342 +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
  343 +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  344 +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  345 +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  346 +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  347 +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  348 +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  349 +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  350 +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  351 +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  352 +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  353 +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  354 +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  355 +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  356 +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  357 +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  358 +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  359 +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  360 +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  361 +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  362 +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  363 +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  364 +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  365 +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  366 +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  367 +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  368 +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  369 +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  370 +golang.org/x/sys v0.0.0-20210218155724-8ebf48af031b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  371 +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  372 +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
  373 +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
  374 +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
  375 +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
  376 +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
  377 +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
  378 +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
  379 +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
  380 +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
  381 +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
  382 +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
  383 +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
  384 +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
  385 +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
  386 +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
  387 +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
  388 +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
  389 +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
  390 +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
  391 +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
  392 +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
  393 +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
  394 +golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58 h1:1Bs6RVeBFtLZ8Yi1Hk07DiOqzvwLD/4hln4iahvFlag=
  395 +golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
  396 +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
  397 +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
  398 +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
  399 +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
  400 +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
  401 +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
  402 +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
  403 +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
  404 +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
  405 +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
  406 +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
  407 +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
  408 +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
  409 +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
  410 +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
  411 +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
  412 +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
  413 +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
  414 +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
  415 +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
  416 +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
  417 +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
  418 +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
  419 +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
  420 +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
  421 +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
  422 +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
  423 +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
  424 +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
  425 +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
  426 +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
  427 +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
  428 +gopkg.in/jcmturner/aescts.v1 v1.0.1 h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw=
  429 +gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo=
  430 +gopkg.in/jcmturner/dnsutils.v1 v1.0.1 h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN5hSM=
  431 +gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q=
  432 +gopkg.in/jcmturner/goidentity.v3 v3.0.0 h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI=
  433 +gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4=
  434 +gopkg.in/jcmturner/gokrb5.v7 v7.2.3 h1:hHMV/yKPwMnJhPuPx7pH2Uw/3Qyf+thJYlisUc44010=
  435 +gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM=
  436 +gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU=
  437 +gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8=
  438 +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
  439 +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
  440 +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
  441 +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  442 +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  443 +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  444 +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  445 +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  446 +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
  447 +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  448 +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
  449 +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
  450 +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
  451 +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
  452 +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
  453 +honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
  454 +mellium.im/sasl v0.2.1 h1:nspKSRg7/SyO0cRGY71OkfHab8tf9kCts6a6oTDut0w=
  455 +mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ=
  1 +package main
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/server/web"
  6 + "github.com/linmadan/egglib-go/log/logrus"
  7 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/constant"
  8 + _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/constant"
  9 + _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg"
  10 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log"
  11 + _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log"
  12 + _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/port/beego"
  13 +)
  14 +
  15 +func main() {
  16 + // web主服务
  17 + if constant.ENABLE_KAFKA_LOG {
  18 + w, err := logrus.NewKafkaWriter(constant.KAFKA_HOSTS, constant.TOPIC_LOG_STASH, false)
  19 + if err != nil {
  20 + log.Logger.Error(err.Error())
  21 + }
  22 + log.Logger.AddHook(w)
  23 + }
  24 +
  25 + fmt.Printf("Server running at:%d\n", web.BConfig.Listen.HTTPPort)
  26 +
  27 + web.Run()
  28 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  6 + "reflect"
  7 + "strings"
  8 +
  9 + "github.com/beego/beego/v2/core/validation"
  10 +)
  11 +
  12 +type CreateContractUndertakerFeedbackCommand struct {
  13 + // 合约承接方反馈内容附件
  14 + FeedbackAttachment []*domain.Attachment `cname:"合约承接方反馈内容附件" json:"feedbackAttachment,omitempty"`
  15 + // 合约承接方反馈内容
  16 + FeedbackContent string `cname:"合约承接方反馈内容" json:"feedbackContent" valid:"Required"`
  17 + // 共创合约编号
  18 + CooperationContractNumber string `cname:"共创合约编号" json:"cooperationContractNumber" valid:"Required"`
  19 + // 承接人uid
  20 + UnderTakerUid string `cname:"承接人uid" json:"underTakerUid,omitempty"`
  21 + // 公司ID,通过集成REST上下文获取
  22 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  23 + // 组织机构ID
  24 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  25 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  26 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  27 + // 用户基础数据id
  28 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  29 +}
  30 +
  31 +func (createContractUndertakerFeedbackCommand *CreateContractUndertakerFeedbackCommand) Valid(validation *validation.Validation) {
  32 + //validation.SetError("CustomValid", "未实现的自定义认证")
  33 +}
  34 +
  35 +func (createContractUndertakerFeedbackCommand *CreateContractUndertakerFeedbackCommand) ValidateCommand() error {
  36 + valid := validation.Validation{}
  37 + b, err := valid.Valid(createContractUndertakerFeedbackCommand)
  38 + if err != nil {
  39 + return err
  40 + }
  41 + if !b {
  42 + elem := reflect.TypeOf(createContractUndertakerFeedbackCommand).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 command
  2 +
  3 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type RemoveContractUndertakerFeedbackCommand struct {
  12 + // 合约承接方反馈记录ID
  13 + FeedbackId string `cname:"合约承接方反馈记录ID" json:"feedbackId" valid:"Required"`
  14 + // 承接人uid
  15 + UnderTakerUid string `cname:"承接人UID" json:"underTakerUid,omitempty"`
  16 + // 公司ID,通过集成REST上下文获取
  17 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  18 + // 组织机构ID
  19 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  20 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  21 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  22 + // 用户基础数据id
  23 + UserBaseId int64 `cname:"用户基础数据" json:"userBaseId" valid:"Required"`
  24 +}
  25 +
  26 +func (removeContractUndertakerFeedbackCommand *RemoveContractUndertakerFeedbackCommand) Valid(validation *validation.Validation) {
  27 + //validation.SetError("CustomValid", "未实现的自定义认证")
  28 +}
  29 +
  30 +func (removeContractUndertakerFeedbackCommand *RemoveContractUndertakerFeedbackCommand) ValidateCommand() error {
  31 + valid := validation.Validation{}
  32 + b, err := valid.Valid(removeContractUndertakerFeedbackCommand)
  33 + if err != nil {
  34 + return err
  35 + }
  36 + if !b {
  37 + elem := reflect.TypeOf(removeContractUndertakerFeedbackCommand).Elem()
  38 + for _, validErr := range valid.Errors {
  39 + field, isExist := elem.FieldByName(validErr.Field)
  40 + if isExist {
  41 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  42 + } else {
  43 + return fmt.Errorf(validErr.Message)
  44 + }
  45 + }
  46 + }
  47 + return nil
  48 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  6 + "reflect"
  7 + "strings"
  8 +
  9 + "github.com/beego/beego/v2/core/validation"
  10 +)
  11 +
  12 +type UpdateContractUndertakerFeedbackCommand struct {
  13 + // 合约承接方信息反馈id
  14 + FeedbackId string `cname:"合约承接方反馈信息ID" json:"feedbackId" valid:"Required"`
  15 + // 合约承接方反馈内容附件
  16 + FeedbackAttachment []*domain.Attachment `cname:"合约承接方反馈内容附件" json:"feedbackAttachment" valid:"Required"`
  17 + // 合约承接方反馈内容
  18 + FeedbackContent string `cname:"合约承接方反馈内容" json:"feedbackContent" valid:"Required"`
  19 + // 共创合约编号
  20 + CooperationContractNumber string `cname:"共创合约编号" json:"cooperationContractNumber" valid:"Required"`
  21 + // 承接人用户uid
  22 + UnderTakerUid string `cname:"承接人用户UID" json:"underTakerUid,omitempty"`
  23 + // 公司ID,通过集成REST上下文获取
  24 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  25 + // 组织机构ID
  26 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  27 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  28 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  29 + // 用户基础数据id
  30 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  31 +}
  32 +
  33 +func (updateContractUndertakerFeedbackCommand *UpdateContractUndertakerFeedbackCommand) Valid(validation *validation.Validation) {
  34 + //validation.SetError("CustomValid", "未实现的自定义认证")
  35 +}
  36 +
  37 +func (updateContractUndertakerFeedbackCommand *UpdateContractUndertakerFeedbackCommand) ValidateCommand() error {
  38 + valid := validation.Validation{}
  39 + b, err := valid.Valid(updateContractUndertakerFeedbackCommand)
  40 + if err != nil {
  41 + return err
  42 + }
  43 + if !b {
  44 + elem := reflect.TypeOf(updateContractUndertakerFeedbackCommand).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 query
  2 +
  3 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type GetContractUndertakerFeedbackQuery struct {
  12 + // 合约承接方反馈记录ID
  13 + FeedbackId string `cname:"合约承接方反馈记录ID" json:"feedbackId" valid:"Required"`
  14 + // 承接人uid
  15 + UnderTakerUid string `cname:"承接人UID" json:"underTakerUid,omitempty"`
  16 + // 公司ID,通过集成REST上下文获取
  17 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  18 + // 组织机构ID
  19 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  20 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  21 + UserId int64 `cname:"用户ID" json:"userId"`
  22 + // 用户基础数据id
  23 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  24 +}
  25 +
  26 +func (getContractUndertakerFeedbackQuery *GetContractUndertakerFeedbackQuery) Valid(validation *validation.Validation) {
  27 + //validation.SetError("CustomValid", "未实现的自定义认证")
  28 +}
  29 +
  30 +func (getContractUndertakerFeedbackQuery *GetContractUndertakerFeedbackQuery) ValidateQuery() error {
  31 + valid := validation.Validation{}
  32 + b, err := valid.Valid(getContractUndertakerFeedbackQuery)
  33 + if err != nil {
  34 + return err
  35 + }
  36 + if !b {
  37 + elem := reflect.TypeOf(getContractUndertakerFeedbackQuery).Elem()
  38 + for _, validErr := range valid.Errors {
  39 + field, isExist := elem.FieldByName(validErr.Field)
  40 + if isExist {
  41 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  42 + } else {
  43 + return fmt.Errorf(validErr.Message)
  44 + }
  45 + }
  46 + }
  47 + return nil
  48 +}
  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 ListContractUndertakerFeedbackQuery struct {
  12 + // 页面大小
  13 + PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
  14 + // 页面大小
  15 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  16 + // 承接人uid
  17 + UnderTakerUid string `cname:"承接人UID" json:"underTakerUid,omitempty"`
  18 + // 公司ID,通过集成REST上下文获取
  19 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  20 + // 组织机构ID
  21 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  22 + // 关联的组织机构ID列表
  23 + OrgIds []int64 `cname:"关联的组织机构ID列表" json:"orgIds"`
  24 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  25 + UserId int64 `cname:"用户ID" json:"userId"`
  26 + // 用户基础数据id
  27 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  28 +}
  29 +
  30 +func (listContractUndertakerFeedbackQuery *ListContractUndertakerFeedbackQuery) Valid(validation *validation.Validation) {
  31 + //validation.SetError("CustomValid", "未实现的自定义认证")
  32 +}
  33 +
  34 +func (listContractUndertakerFeedbackQuery *ListContractUndertakerFeedbackQuery) ValidateQuery() error {
  35 + valid := validation.Validation{}
  36 + b, err := valid.Valid(listContractUndertakerFeedbackQuery)
  37 + if err != nil {
  38 + return err
  39 + }
  40 + if !b {
  41 + elem := reflect.TypeOf(listContractUndertakerFeedbackQuery).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 query
  2 +
  3 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type SearchContractUndertakerFeedbackQuery struct {
  12 + // 公司ID,通过集成REST上下文获取
  13 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  14 + // 组织机构ID
  15 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  16 + // 关联的组织机构ID列表
  17 + OrgIds []int64 `cname:"关联的组织机构ID列表" json:"orgIds"`
  18 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  19 + UserId int64 `cname:"用户ID" json:"userId"`
  20 + // 用户基础数据id
  21 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  22 + // 共创合约名称
  23 + CooperationContractName string `cname:"共创合约名称" json:"cooperationContractName,omitempty"`
  24 + // 承接人姓名
  25 + UndertakerName string `cname:"承接人姓名" json:"undertakerName,omitempty"`
  26 + // 查询关键词
  27 + MatchWord string `cname:"查询关键词" json:"matchWord,omitempty"`
  28 + // 页面大小
  29 + PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
  30 + // 页面大小
  31 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  32 +}
  33 +
  34 +func (searchContractUndertakerFeedbackQuery *SearchContractUndertakerFeedbackQuery) Valid(validation *validation.Validation) {
  35 + //validation.SetError("CustomValid", "未实现的自定义认证")
  36 +}
  37 +
  38 +func (searchContractUndertakerFeedbackQuery *SearchContractUndertakerFeedbackQuery) ValidateQuery() error {
  39 + valid := validation.Validation{}
  40 + b, err := valid.Valid(searchContractUndertakerFeedbackQuery)
  41 + if err != nil {
  42 + return err
  43 + }
  44 + if !b {
  45 + elem := reflect.TypeOf(searchContractUndertakerFeedbackQuery).Elem()
  46 + for _, validErr := range valid.Errors {
  47 + field, isExist := elem.FieldByName(validErr.Field)
  48 + if isExist {
  49 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  50 + } else {
  51 + return fmt.Errorf(validErr.Message)
  52 + }
  53 + }
  54 + }
  55 + return nil
  56 +}
  1 +package service
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/linmadan/egglib-go/utils/tool_funs"
  7 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/contractUndertakerFeedback/command"
  8 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/contractUndertakerFeedback/query"
  9 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory"
  10 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  11 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service"
  12 + "time"
  13 +)
  14 +
  15 +// ContractUndertakerFeedbackService 共创合约反馈服务
  16 +type ContractUndertakerFeedbackService struct {
  17 +}
  18 +
  19 +// CreateContractUndertakerFeedback 创建共创合约反馈服务
  20 +func (contractUndertakerFeedbackService *ContractUndertakerFeedbackService) CreateContractUndertakerFeedback(createContractUndertakerFeedbackCommand *command.CreateContractUndertakerFeedbackCommand) (interface{}, error) {
  21 + if err := createContractUndertakerFeedbackCommand.ValidateCommand(); err != nil {
  22 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  23 + }
  24 + transactionContext, err := factory.CreateTransactionContext(nil)
  25 + if err != nil {
  26 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  27 + }
  28 + if err := transactionContext.StartTransaction(); err != nil {
  29 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  30 + }
  31 + defer func() {
  32 + _ = transactionContext.RollbackTransaction()
  33 + }()
  34 +
  35 + // 用户REST服务初始化
  36 + var userService service.UserService
  37 + if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil {
  38 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  39 + } else {
  40 + userService = value
  41 + }
  42 +
  43 + // 获取承接人
  44 + var undertaker *domain.Undertaker
  45 + if data, err := userService.UndertakerFrom(createContractUndertakerFeedbackCommand.CompanyId, createContractUndertakerFeedbackCommand.OrgId, createContractUndertakerFeedbackCommand.UserId); err != nil {
  46 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  47 + } else {
  48 + undertaker = data
  49 + }
  50 +
  51 + // 公司REST服务初始化
  52 + var companyService service.CompanyService
  53 + if value, err := factory.CreateCompanyService(map[string]interface{}{}); err != nil {
  54 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  55 + } else {
  56 + companyService = value
  57 + }
  58 +
  59 + // 获取公司信息
  60 + var company *domain.Company
  61 + if data, err := companyService.CompanyFrom(createContractUndertakerFeedbackCommand.CompanyId); err != nil {
  62 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  63 + } else {
  64 + company = data
  65 + }
  66 +
  67 + // 组织机构REST服务初始化
  68 + var organizationService service.OrgService
  69 + if value, err := factory.CreateOrganizationService(map[string]interface{}{}); err != nil {
  70 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  71 + } else {
  72 + organizationService = value
  73 + }
  74 +
  75 + // 获取组织机构信息
  76 + var organization *domain.Org
  77 + if data, err := organizationService.OrgFrom(createContractUndertakerFeedbackCommand.CompanyId, createContractUndertakerFeedbackCommand.OrgId); err != nil {
  78 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  79 + } else {
  80 + organization = data
  81 + }
  82 +
  83 + var cooperationContractRepository domain.CooperationContractRepository
  84 + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{
  85 + "transactionContext": transactionContext,
  86 + }); err != nil {
  87 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  88 + } else {
  89 + cooperationContractRepository = value
  90 + }
  91 +
  92 + // 获取项目合约信息
  93 + cooperationContract, err := cooperationContractRepository.FindOne(map[string]interface{}{
  94 + "cooperationContractNumber": createContractUndertakerFeedbackCommand.CooperationContractNumber,
  95 + "companyId": createContractUndertakerFeedbackCommand.CompanyId,
  96 + "orgId": createContractUndertakerFeedbackCommand.OrgId,
  97 + })
  98 + if err != nil {
  99 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创合约不存在")
  100 + }
  101 + if cooperationContract == nil {
  102 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", createContractUndertakerFeedbackCommand.CooperationContractNumber))
  103 + } else {
  104 + newContractUndertakerFeedback := &domain.ContractUndertakerFeedback{
  105 + FeedbackAttachment: createContractUndertakerFeedbackCommand.FeedbackAttachment,
  106 + FeedbackContent: createContractUndertakerFeedbackCommand.FeedbackContent,
  107 + CooperationContractNumber: createContractUndertakerFeedbackCommand.CooperationContractNumber,
  108 + CooperationContractName: cooperationContract.CooperationContractName,
  109 + CooperationModeName: cooperationContract.CooperationMode.CooperationModeName,
  110 + ContractUndertaker: undertaker,
  111 + Company: company,
  112 + Org: organization,
  113 + UpdatedAt: time.Time{},
  114 + DeletedAt: time.Time{},
  115 + CreatedAt: time.Now(),
  116 + }
  117 +
  118 + var contractUndertakerFeedbackRepository domain.ContractUndertakerFeedbackRepository
  119 + if value, err := factory.CreateContractUndertakerFeedbackRepository(map[string]interface{}{
  120 + "transactionContext": transactionContext,
  121 + }); err != nil {
  122 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  123 + } else {
  124 + contractUndertakerFeedbackRepository = value
  125 + }
  126 + if contractUndertakerFeedback, err := contractUndertakerFeedbackRepository.Save(newContractUndertakerFeedback); err != nil {
  127 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  128 + } else {
  129 + if err := transactionContext.CommitTransaction(); err != nil {
  130 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  131 + }
  132 + return contractUndertakerFeedback, nil
  133 + }
  134 + }
  135 +}
  136 +
  137 +// GetContractUndertakerFeedback 返回共创合约反馈服务
  138 +func (contractUndertakerFeedbackService *ContractUndertakerFeedbackService) GetContractUndertakerFeedback(getContractUndertakerFeedbackQuery *query.GetContractUndertakerFeedbackQuery) (interface{}, error) {
  139 + if err := getContractUndertakerFeedbackQuery.ValidateQuery(); err != nil {
  140 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  141 + }
  142 + transactionContext, err := factory.CreateTransactionContext(nil)
  143 + if err != nil {
  144 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  145 + }
  146 + if err := transactionContext.StartTransaction(); err != nil {
  147 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  148 + }
  149 + defer func() {
  150 + _ = transactionContext.RollbackTransaction()
  151 + }()
  152 + var contractUndertakerFeedbackRepository domain.ContractUndertakerFeedbackRepository
  153 + if value, err := factory.CreateContractUndertakerFeedbackRepository(map[string]interface{}{
  154 + "transactionContext": transactionContext,
  155 + }); err != nil {
  156 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  157 + } else {
  158 + contractUndertakerFeedbackRepository = value
  159 + }
  160 + contractUndertakerFeedback, err := contractUndertakerFeedbackRepository.FindOne(map[string]interface{}{"contractUndertakerFeedbackId": getContractUndertakerFeedbackQuery.FeedbackId})
  161 + if err != nil {
  162 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "合约反馈信息不存在")
  163 + }
  164 + if contractUndertakerFeedback == nil {
  165 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getContractUndertakerFeedbackQuery.FeedbackId)))
  166 + } else {
  167 + if err := transactionContext.CommitTransaction(); err != nil {
  168 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  169 + }
  170 + return contractUndertakerFeedback, nil
  171 + }
  172 +}
  173 +
  174 +// ListContractUndertakerFeedback 返回共创合约反馈服务列表
  175 +func (contractUndertakerFeedbackService *ContractUndertakerFeedbackService) ListContractUndertakerFeedback(listContractUndertakerFeedbackQuery *query.ListContractUndertakerFeedbackQuery) (interface{}, error) {
  176 + if err := listContractUndertakerFeedbackQuery.ValidateQuery(); err != nil {
  177 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  178 + }
  179 + transactionContext, err := factory.CreateTransactionContext(nil)
  180 + if err != nil {
  181 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  182 + }
  183 + if err := transactionContext.StartTransaction(); err != nil {
  184 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  185 + }
  186 + defer func() {
  187 + _ = transactionContext.RollbackTransaction()
  188 + }()
  189 + var contractUndertakerFeedbackRepository domain.ContractUndertakerFeedbackRepository
  190 + if value, err := factory.CreateContractUndertakerFeedbackRepository(map[string]interface{}{
  191 + "transactionContext": transactionContext,
  192 + }); err != nil {
  193 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  194 + } else {
  195 + contractUndertakerFeedbackRepository = value
  196 + }
  197 + if count, contractUndertakerFeedbacks, err := contractUndertakerFeedbackRepository.Find(tool_funs.SimpleStructToMap(listContractUndertakerFeedbackQuery)); err != nil {
  198 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  199 + } else {
  200 + if err := transactionContext.CommitTransaction(); err != nil {
  201 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  202 + }
  203 + return map[string]interface{}{
  204 + "grid": map[string]interface{}{
  205 + "total": count,
  206 + "list": contractUndertakerFeedbacks,
  207 + },
  208 + }, nil
  209 + }
  210 +}
  211 +
  212 +// RemoveContractUndertakerFeedback 移除共创合约反馈服务
  213 +func (contractUndertakerFeedbackService *ContractUndertakerFeedbackService) RemoveContractUndertakerFeedback(removeContractUndertakerFeedbackCommand *command.RemoveContractUndertakerFeedbackCommand) (interface{}, error) {
  214 + if err := removeContractUndertakerFeedbackCommand.ValidateCommand(); err != nil {
  215 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  216 + }
  217 + transactionContext, err := factory.CreateTransactionContext(nil)
  218 + if err != nil {
  219 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  220 + }
  221 + if err := transactionContext.StartTransaction(); err != nil {
  222 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  223 + }
  224 + defer func() {
  225 + _ = transactionContext.RollbackTransaction()
  226 + }()
  227 + var contractUndertakerFeedbackRepository domain.ContractUndertakerFeedbackRepository
  228 + if value, err := factory.CreateContractUndertakerFeedbackRepository(map[string]interface{}{
  229 + "transactionContext": transactionContext,
  230 + }); err != nil {
  231 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  232 + } else {
  233 + contractUndertakerFeedbackRepository = value
  234 + }
  235 + contractUndertakerFeedback, err := contractUndertakerFeedbackRepository.FindOne(map[string]interface{}{"contractUndertakerFeedbackId": removeContractUndertakerFeedbackCommand.FeedbackId})
  236 + if err != nil {
  237 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "反馈信息不存在")
  238 + }
  239 + if contractUndertakerFeedback == nil {
  240 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeContractUndertakerFeedbackCommand.FeedbackId)))
  241 + }
  242 + if contractUndertakerFeedback, err := contractUndertakerFeedbackRepository.Remove(contractUndertakerFeedback); err != nil {
  243 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  244 + } else {
  245 + if err := transactionContext.CommitTransaction(); err != nil {
  246 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  247 + }
  248 + return contractUndertakerFeedback, nil
  249 + }
  250 +}
  251 +
  252 +// SearchContractUndertakerFeedback 查询共创承接方反馈信息
  253 +func (contractUndertakerFeedbackService *ContractUndertakerFeedbackService) SearchContractUndertakerFeedback(searchContractUndertakerFeedbackQuery *query.SearchContractUndertakerFeedbackQuery) (interface{}, error) {
  254 + if err := searchContractUndertakerFeedbackQuery.ValidateQuery(); err != nil {
  255 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  256 + }
  257 + transactionContext, err := factory.CreateTransactionContext(nil)
  258 + if err != nil {
  259 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  260 + }
  261 + if err := transactionContext.StartTransaction(); err != nil {
  262 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  263 + }
  264 + defer func() {
  265 + _ = transactionContext.RollbackTransaction()
  266 + }()
  267 + var contractUndertakerFeedbackRepository domain.ContractUndertakerFeedbackRepository
  268 + if value, err := factory.CreateContractUndertakerFeedbackRepository(map[string]interface{}{
  269 + "transactionContext": transactionContext,
  270 + }); err != nil {
  271 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  272 + } else {
  273 + contractUndertakerFeedbackRepository = value
  274 + }
  275 + if count, contractUndertakerFeedbacks, err := contractUndertakerFeedbackRepository.Find(tool_funs.SimpleStructToMap(searchContractUndertakerFeedbackQuery)); err != nil {
  276 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  277 + } else {
  278 + if err := transactionContext.CommitTransaction(); err != nil {
  279 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  280 + }
  281 + return map[string]interface{}{
  282 + "grid": map[string]interface{}{
  283 + "total": count,
  284 + "list": contractUndertakerFeedbacks,
  285 + },
  286 + }, nil
  287 + }
  288 +}
  289 +
  290 +// UpdateContractUndertakerFeedback 更新共创合约反馈服务
  291 +func (contractUndertakerFeedbackService *ContractUndertakerFeedbackService) UpdateContractUndertakerFeedback(updateContractUndertakerFeedbackCommand *command.UpdateContractUndertakerFeedbackCommand) (interface{}, error) {
  292 + if err := updateContractUndertakerFeedbackCommand.ValidateCommand(); err != nil {
  293 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  294 + }
  295 + transactionContext, err := factory.CreateTransactionContext(nil)
  296 + if err != nil {
  297 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  298 + }
  299 + if err := transactionContext.StartTransaction(); err != nil {
  300 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  301 + }
  302 + defer func() {
  303 + _ = transactionContext.RollbackTransaction()
  304 + }()
  305 + var contractUndertakerFeedbackRepository domain.ContractUndertakerFeedbackRepository
  306 + if value, err := factory.CreateContractUndertakerFeedbackRepository(map[string]interface{}{
  307 + "transactionContext": transactionContext,
  308 + }); err != nil {
  309 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  310 + } else {
  311 + contractUndertakerFeedbackRepository = value
  312 + }
  313 + contractUndertakerFeedback, err := contractUndertakerFeedbackRepository.FindOne(map[string]interface{}{"contractUndertakerFeedbackId": updateContractUndertakerFeedbackCommand.FeedbackId})
  314 + if err != nil {
  315 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "反馈信息不存在")
  316 + }
  317 + if contractUndertakerFeedback == nil {
  318 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateContractUndertakerFeedbackCommand.FeedbackId)))
  319 + }
  320 + if err := contractUndertakerFeedback.Update(tool_funs.SimpleStructToMap(updateContractUndertakerFeedbackCommand)); err != nil {
  321 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  322 + }
  323 + if contractUndertakerFeedback, err := contractUndertakerFeedbackRepository.Save(contractUndertakerFeedback); err != nil {
  324 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  325 + } else {
  326 + if err := transactionContext.CommitTransaction(); err != nil {
  327 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  328 + }
  329 + return contractUndertakerFeedback, nil
  330 + }
  331 +}
  332 +
  333 +func NewContractUndertakerFeedbackService(options map[string]interface{}) *ContractUndertakerFeedbackService {
  334 + newContractUndertakerFeedbackService := &ContractUndertakerFeedbackService{}
  335 + return newContractUndertakerFeedbackService
  336 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  7 + "reflect"
  8 + "strings"
  9 +)
  10 +
  11 +type ApplyForCooperationCommand struct {
  12 + // 共创申请描述附件
  13 + CooperationApplicationAttachment []*domain.Attachment `cname:"共创申请描述附件" json:"cooperationApplicationAttachment"`
  14 + // 共创申请描述
  15 + CooperationApplicationDescription string `cname:"共创申请描述" json:"cooperationApplicationDescription,omitempty"`
  16 + // 申请人ID
  17 + UserId int64 `cname:"申请人ID" json:"userId"`
  18 + // 用户基本id
  19 + UserBaseId int64 `cname:"用户基本数据ID" json:"userBaseId"`
  20 + // 组织机构ID
  21 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  22 + // 公司ID,通过集成REST上下文获取
  23 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  24 + // 共创项目ID
  25 + CooperationProjectId int64 `cname:"共创项目ID" json:"cooperationProjectId" valid:"Required"`
  26 +}
  27 +
  28 +func (applyForCooperationCommand *ApplyForCooperationCommand) Valid(validation *validation.Validation) {
  29 +}
  30 +
  31 +func (applyForCooperationCommand *ApplyForCooperationCommand) ValidateCommand() error {
  32 + valid := validation.Validation{}
  33 + b, err := valid.Valid(applyForCooperationCommand)
  34 + if err != nil {
  35 + return err
  36 + }
  37 + if !b {
  38 + elem := reflect.TypeOf(applyForCooperationCommand).Elem()
  39 + for _, validErr := range valid.Errors {
  40 + field, isExist := elem.FieldByName(validErr.Field)
  41 + if isExist {
  42 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  43 + } else {
  44 + return fmt.Errorf(validErr.Message)
  45 + }
  46 + }
  47 + }
  48 + return nil
  49 +}
  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 ApprovalCooperationApplicationCommand struct {
  12 + // 共创申请ID
  13 + CooperationApplicationId string `cname:"共创申请ID" json:"cooperationApplicationId" valid:"Required"`
  14 + // 共创申请审核描述
  15 + CooperationApplicationVerifyDescription string `cname:"共创申请审核描述" json:"cooperationApplicationVerifyDescription,omitempty"`
  16 + // 公司ID,通过集成REST上下文获取
  17 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  18 + // 组织机构id
  19 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  20 + // 菜单编码,APP端必须
  21 + Code string `cname:"菜单编码" json:"code" valid:"Required"`
  22 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  23 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  24 + // 用户基础数据id
  25 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  26 + // 审核动作,1同意,2拒绝
  27 + Action int32 `cname:"审核动作" json:"action" valid:"Required"`
  28 +}
  29 +
  30 +func (approvalCooperationApplicationCommand *ApprovalCooperationApplicationCommand) Valid(validation *validation.Validation) {
  31 + //validation.SetError("CustomValid", "未实现的自定义认证")
  32 +}
  33 +
  34 +func (approvalCooperationApplicationCommand *ApprovalCooperationApplicationCommand) ValidateCommand() error {
  35 + valid := validation.Validation{}
  36 + b, err := valid.Valid(approvalCooperationApplicationCommand)
  37 + if err != nil {
  38 + return err
  39 + }
  40 + if !b {
  41 + elem := reflect.TypeOf(approvalCooperationApplicationCommand).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 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "reflect"
  7 + "strings"
  8 +)
  9 +
  10 +type BatchApprovalCooperationApplicationCommand struct {
  11 + // 共创申请ID数组
  12 + CooperationApplicationIds []string `cname:"共创申请ID" json:"cooperationApplicationIds" valid:"Required"`
  13 + // 共创申请审核描述
  14 + CooperationApplicationVerifyDescription string `cname:"共创申请审核描述" json:"cooperationApplicationVerifyDescription,omitempty"`
  15 + // 公司ID,通过集成REST上下文获取
  16 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  17 + // 组织机构id
  18 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  19 + // 菜单编码,APP端必须
  20 + Code string `cname:"菜单编码" json:"code" valid:"Required"`
  21 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  22 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  23 + // 用户基础数据id
  24 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  25 + // 审核动作,1同意,2拒绝
  26 + Action int32 `cname:"审核动作" json:"action" valid:"Required"`
  27 +}
  28 +
  29 +func (batchApprovalCooperationApplicationCommand *BatchApprovalCooperationApplicationCommand) Valid(validation *validation.Validation) {
  30 + //validation.SetError("CustomValid", "未实现的自定义认证")
  31 +}
  32 +
  33 +func (batchApprovalCooperationApplicationCommand *BatchApprovalCooperationApplicationCommand) ValidateCommand() error {
  34 + valid := validation.Validation{}
  35 + b, err := valid.Valid(batchApprovalCooperationApplicationCommand)
  36 + if err != nil {
  37 + return err
  38 + }
  39 + if !b {
  40 + elem := reflect.TypeOf(batchApprovalCooperationApplicationCommand).Elem()
  41 + for _, validErr := range valid.Errors {
  42 + field, isExist := elem.FieldByName(validErr.Field)
  43 + if isExist {
  44 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  45 + } else {
  46 + return fmt.Errorf(validErr.Message)
  47 + }
  48 + }
  49 + }
  50 + return nil
  51 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "reflect"
  7 + "strings"
  8 +)
  9 +
  10 +type CancelCooperationApplicationCommand struct {
  11 + // 共创申请ID
  12 + CooperationApplicationId string `cname:"共创申请ID" json:"cooperationApplicationId" valid:"Required"`
  13 + // 公司ID,通过集成REST上下文获取
  14 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  15 + // 组织机构id
  16 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  17 + // 菜单编码,APP端必须
  18 + Code string `cname:"菜单编码" json:"code" valid:"Required"`
  19 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  20 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  21 + // 用户基础数据id
  22 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  23 +}
  24 +
  25 +func (cancelCooperationApplicationCommand *CancelCooperationApplicationCommand) Valid(validation *validation.Validation) {
  26 + //validation.SetError("CustomValid", "未实现的自定义认证")
  27 +}
  28 +
  29 +func (cancelCooperationApplicationCommand *CancelCooperationApplicationCommand) ValidateCommand() error {
  30 + valid := validation.Validation{}
  31 + b, err := valid.Valid(cancelCooperationApplicationCommand)
  32 + if err != nil {
  33 + return err
  34 + }
  35 + if !b {
  36 + elem := reflect.TypeOf(cancelCooperationApplicationCommand).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 +import (
  4 + "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  6 + "reflect"
  7 + "strings"
  8 +
  9 + "github.com/beego/beego/v2/core/validation"
  10 +)
  11 +
  12 +type CreateCooperationApplicationCommand struct {
  13 + // 共创申请人uid
  14 + ApplicantUid string `cname:"共创申请人uid" json:"applicantUid" valid:"Required"`
  15 + // 共创申请描述
  16 + CooperationApplicationDescription string `cname:"共创申请描述" json:"cooperationApplicationDescription,omitempty"`
  17 + // 共创申请描述附件
  18 + CooperationApplicationAttachment []*domain.Attachment `cname:"共创申请描述附件" json:"cooperationApplicationAttachment,omitempty"`
  19 + // 关联的共创项目编号
  20 + CooperationProjectNumber string `cname:"关联的共创项目编号" json:"cooperationProjectNumber" valid:"Required"`
  21 + // 公司ID,通过集成REST上下文获取
  22 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  23 + // 组织机构ID
  24 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  25 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  26 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  27 + // 用户基础数据id
  28 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  29 +}
  30 +
  31 +func (createCooperationApplicationCommand *CreateCooperationApplicationCommand) Valid(validation *validation.Validation) {
  32 + //validation.SetError("CustomValid", "未实现的自定义认证")
  33 +}
  34 +
  35 +func (createCooperationApplicationCommand *CreateCooperationApplicationCommand) ValidateCommand() error {
  36 + valid := validation.Validation{}
  37 + b, err := valid.Valid(createCooperationApplicationCommand)
  38 + if err != nil {
  39 + return err
  40 + }
  41 + if !b {
  42 + elem := reflect.TypeOf(createCooperationApplicationCommand).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 command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "reflect"
  7 + "strings"
  8 +)
  9 +
  10 +type OneClickApprovalCooperationApplicationCommand struct {
  11 + // 共创申请审核描述
  12 + CooperationApplicationVerifyDescription string `cname:"共创申请审核描述" json:"cooperationApplicationVerifyDescription,omitempty"`
  13 + // 公司ID,通过集成REST上下文获取
  14 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  15 + // 组织机构id
  16 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  17 + // 菜单编码,APP端必须
  18 + Code string `cname:"菜单编码" json:"code" valid:"Required"`
  19 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  20 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  21 + // 用户基础数据id
  22 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  23 + // 审核动作,1同意,2拒绝
  24 + Action int32 `cname:"审核动作" json:"action" valid:"Required"`
  25 + // 审核状态
  26 + CooperationApplicationStatus int32 `cname:"共创申请审核状态" json:"cooperationApplicationStatus"`
  27 +}
  28 +
  29 +func (oneClickApprovalCooperationApplicationCommand *OneClickApprovalCooperationApplicationCommand) Valid(validation *validation.Validation) {
  30 + //validation.SetError("CustomValid", "未实现的自定义认证")
  31 +}
  32 +
  33 +func (oneClickApprovalCooperationApplicationCommand *OneClickApprovalCooperationApplicationCommand) ValidateCommand() error {
  34 + valid := validation.Validation{}
  35 + b, err := valid.Valid(oneClickApprovalCooperationApplicationCommand)
  36 + if err != nil {
  37 + return err
  38 + }
  39 + if !b {
  40 + elem := reflect.TypeOf(oneClickApprovalCooperationApplicationCommand).Elem()
  41 + for _, validErr := range valid.Errors {
  42 + field, isExist := elem.FieldByName(validErr.Field)
  43 + if isExist {
  44 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  45 + } else {
  46 + return fmt.Errorf(validErr.Message)
  47 + }
  48 + }
  49 + }
  50 + return nil
  51 +}
  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 RemoveCooperationApplicationCommand struct {
  12 + // 共创申请ID
  13 + CooperationApplicationId int64 `cname:"共创申请ID" json:"cooperationApplicationId" valid:"Required"`
  14 + // 公司ID,通过集成REST上下文获取
  15 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  16 + // 组织机构ID
  17 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  18 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  19 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  20 + // 用户基础数据id
  21 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  22 +}
  23 +
  24 +func (removeCooperationApplicationCommand *RemoveCooperationApplicationCommand) Valid(validation *validation.Validation) {
  25 + //validation.SetError("CustomValid", "未实现的自定义认证")
  26 +}
  27 +
  28 +func (removeCooperationApplicationCommand *RemoveCooperationApplicationCommand) ValidateCommand() error {
  29 + valid := validation.Validation{}
  30 + b, err := valid.Valid(removeCooperationApplicationCommand)
  31 + if err != nil {
  32 + return err
  33 + }
  34 + if !b {
  35 + elem := reflect.TypeOf(removeCooperationApplicationCommand).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 command
  2 +
  3 +import (
  4 + "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  6 + "reflect"
  7 + "strings"
  8 +
  9 + "github.com/beego/beego/v2/core/validation"
  10 +)
  11 +
  12 +type UpdateCooperationApplicationCommand struct {
  13 + // 共创申请id
  14 + CooperationApplicationId int64 `cname:"共创申请ID" json:"cooperationApplicationId" valid:"Required"`
  15 + // 共创申请人uid
  16 + ApplicantUid string `cname:"共创申请人UID" json:"applicantUid" valid:"Required"`
  17 + // 共创申请描述
  18 + CooperationApplicationDescription string `cname:"共创申请描述" json:"cooperationApplicationDescription,omitempty"`
  19 + // 共创申请描述附件
  20 + CooperationApplicationAttachment []*domain.Attachment `cname:"共创申请描述附件" json:"cooperationApplicationAttachment,omitempty"`
  21 + // 关联的共创项目编号
  22 + CooperationProjectNumber string `cname:"关联的共创项目编号" json:"cooperationProjectNumber" valid:"Required"`
  23 + // 公司ID,通过集成REST上下文获取
  24 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  25 + // 组织机构ID
  26 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  27 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  28 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  29 + // 用户基础数据id
  30 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  31 +}
  32 +
  33 +func (updateCooperationApplicationCommand *UpdateCooperationApplicationCommand) Valid(validation *validation.Validation) {
  34 + //validation.SetError("CustomValid", "未实现的自定义认证")
  35 +}
  36 +
  37 +func (updateCooperationApplicationCommand *UpdateCooperationApplicationCommand) ValidateCommand() error {
  38 + valid := validation.Validation{}
  39 + b, err := valid.Valid(updateCooperationApplicationCommand)
  40 + if err != nil {
  41 + return err
  42 + }
  43 + if !b {
  44 + elem := reflect.TypeOf(updateCooperationApplicationCommand).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 dto
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  5 +)
  6 +
  7 +type CooperationApplicationDto struct {
  8 + // 共创申请ID
  9 + CooperationApplicationId int64 `json:"cooperationApplicationId,string"`
  10 + // 共创申请人
  11 + CooperationApplicationApplicant *User `json:"cooperationApplicationApplicant"`
  12 + // 共创申请描述附件
  13 + CooperationApplicationAttachment []*domain.Attachment `json:"cooperationApplicationAttachment"`
  14 + // 共创申请描述
  15 + CooperationApplicationDescription string `json:"cooperationApplicationDescription"`
  16 + // 共创申请审核状态,1待审核,2已同意,3已拒绝
  17 + CooperationApplicationStatus int32 `json:"cooperationApplicationStatus"`
  18 + // 共创申请审核人
  19 + CooperationApplicationVerifier *User `json:"cooperationApplicationVerifier"`
  20 + // 共创申请审核描述
  21 + CooperationApplicationVerifyDescription string `json:"cooperationApplicationVerifyDescription"`
  22 + // 共创申请审核时间
  23 + CooperationApplicationVerifyTime int64 `json:"cooperationApplicationVerifyTime"`
  24 + // 共创申请时间
  25 + CooperationApplyTime int64 `json:"cooperationApplyTime"`
  26 + // 共创项目
  27 + CooperationProject *CooperationProject `json:"cooperationProject"`
  28 + // 数据所属组织机构
  29 + Org *Org `json:"org"`
  30 + // 是否被取消标志位
  31 + IsCanceled bool `json:"isCanceled"`
  32 + // 公司
  33 + Company *Company `json:"company"`
  34 +}
  35 +
  36 +// User 用户第三方服务防腐模型
  37 +type User struct {
  38 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  39 + UserId int64 `json:"userId"`
  40 + // 冗余字段,jsonb格式,不限制存放内容
  41 + UserInfo *domain.UserInfo `json:"userInfo,omitempty"`
  42 + // 用户所属的部门
  43 + Department *Department `json:"department"`
  44 +}
  45 +
  46 +type Company struct {
  47 + // 公司ID,通过集成REST上下文获取
  48 + CompanyId int64 `json:"companyId"`
  49 + // 公司logo
  50 + CompanyLogo string `json:"companyLogo"`
  51 + // 公司名称
  52 + CompanyName string `json:"companyName"`
  53 +}
  54 +
  55 +// Org 组织机构值对象
  56 +type Org struct {
  57 + // 组织机构ID
  58 + OrgId int64 `json:"orgId"`
  59 + // 组织名称
  60 + OrgName string `json:"orgName"`
  61 + // 公司
  62 + //Company *Company `json:"company"`
  63 +}
  64 +
  65 +// Department 部门值对象
  66 +type Department struct {
  67 + // 部门ID,通过REST集成上下文获取
  68 + DepartmentId int64 `json:"departmentId"`
  69 + // 部门名称
  70 + DepartmentName string `json:"departmentName"`
  71 +}
  72 +
  73 +// CooperationProject 共创项目实体
  74 +type CooperationProject struct {
  75 + // 共创项目ID
  76 + CooperationProjectId int64 `json:"cooperationProjectId"`
  77 + // 共创项目编号
  78 + CooperationProjectNumber string `json:"cooperationProjectNumber"`
  79 + // 共创项目描述
  80 + CooperationProjectDescription string `json:"cooperationProjectDescription"`
  81 + // 共创项目名称
  82 + CooperationProjectName string `json:"cooperationProjectName"`
  83 + // 图片附件
  84 + Attachment []*domain.Attachment `json:"attachment"`
  85 + // 共创模式
  86 + CooperationMode *domain.CooperationMode `json:"cooperationMode"`
  87 +}
  88 +
  89 +func (data *CooperationApplicationDto) LoadDto(a *domain.CooperationApplication) {
  90 + data.CooperationApplicationId = a.CooperationApplicationId
  91 + data.CooperationApplicationApplicant = data.LoadUser(a.CooperationApplicationApplicant)
  92 + data.CooperationApplicationAttachment = a.CooperationApplicationAttachment
  93 + data.CooperationApplicationDescription = a.CooperationApplicationDescription
  94 + data.CooperationApplicationStatus = a.CooperationApplicationStatus
  95 + data.CooperationApplicationVerifier = data.LoadUser(a.CooperationApplicationVerifier)
  96 + data.CooperationApplicationVerifyDescription = a.CooperationApplicationVerifyDescription
  97 + data.CooperationApplicationVerifyTime = a.CooperationApplicationVerifyTime.Unix() * 1000
  98 + data.CooperationApplyTime = a.CooperationApplyTime.Unix() * 1000
  99 + data.CooperationProject = data.LoadCooperationProject(a.CooperationProject)
  100 + data.Org = data.LoadOrg(a.Org)
  101 + if a.IsCanceled == 1 {
  102 + data.IsCanceled = false
  103 + } else {
  104 + data.IsCanceled = true
  105 + }
  106 + data.Company = data.LoadCompany(a.Company)
  107 +}
  108 +
  109 +func (data *CooperationApplicationDto) LoadUser(v *domain.User) *User {
  110 + if v == nil {
  111 + return &User{}
  112 + }
  113 + result := User{
  114 + UserId: v.UserId,
  115 + UserInfo: v.UserInfo,
  116 + }
  117 + if v.Department != nil {
  118 + result.Department = &Department{
  119 + DepartmentId: v.Department.DepartmentId,
  120 + DepartmentName: v.Department.DepartmentName,
  121 + }
  122 + }
  123 +
  124 + return &result
  125 +}
  126 +
  127 +func (data *CooperationApplicationDto) LoadCompany(v *domain.Company) *Company {
  128 + return &Company{
  129 + CompanyId: v.CompanyId,
  130 + CompanyName: v.CompanyName,
  131 + }
  132 +}
  133 +
  134 +func (data *CooperationApplicationDto) LoadOrg(v *domain.Org) *Org {
  135 + return &Org{
  136 + OrgId: v.OrgId,
  137 + OrgName: v.OrgName,
  138 + }
  139 +}
  140 +
  141 +func (data *CooperationApplicationDto) LoadDepartment(v *domain.Org) *Department {
  142 + return &Department{
  143 + DepartmentId: v.OrgId,
  144 + DepartmentName: v.OrgName,
  145 + }
  146 +}
  147 +
  148 +func (data *CooperationApplicationDto) LoadCooperationProject(v *domain.CooperationProject) *CooperationProject {
  149 + return &CooperationProject{
  150 + CooperationProjectId: v.CooperationProjectId,
  151 + CooperationProjectNumber: v.CooperationProjectNumber,
  152 + CooperationProjectDescription: v.CooperationProjectDescription,
  153 + CooperationProjectName: v.CooperationProjectName,
  154 + Attachment: v.Attachment,
  155 + CooperationMode: v.CooperationMode,
  156 + }
  157 +}
  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 GetCooperationApplicationQuery struct {
  12 + // 共创申请ID
  13 + CooperationApplicationId int64 `cname:"共创申请ID" json:"cooperationApplicationId" valid:"Required"`
  14 + // 公司ID,通过集成REST上下文获取
  15 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  16 + // 组织机构ID
  17 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  18 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  19 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  20 + // 用户基础数据id
  21 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  22 +}
  23 +
  24 +func (getCooperationApplicationQuery *GetCooperationApplicationQuery) Valid(validation *validation.Validation) {
  25 + //validation.SetError("CustomValid", "未实现的自定义认证")
  26 +}
  27 +
  28 +func (getCooperationApplicationQuery *GetCooperationApplicationQuery) ValidateQuery() error {
  29 + valid := validation.Validation{}
  30 + b, err := valid.Valid(getCooperationApplicationQuery)
  31 + if err != nil {
  32 + return err
  33 + }
  34 + if !b {
  35 + elem := reflect.TypeOf(getCooperationApplicationQuery).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 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type ListCooperationApplicationQuery struct {
  12 + // 页面大小
  13 + PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
  14 + // 页面大小
  15 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  16 + // 公司ID,通过集成REST上下文获取
  17 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  18 + // 组织机构ID
  19 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  20 + // 关联的组织机构ID列表
  21 + OrgIds []int64 `cname:"关联的组织机构ID列表" json:"orgIds"`
  22 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  23 + UserId int64 `cname:"用户ID" json:"userId"`
  24 + // 用户基础数据id
  25 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  26 +}
  27 +
  28 +func (listCooperationApplicationQuery *ListCooperationApplicationQuery) Valid(validation *validation.Validation) {
  29 + //validation.SetError("CustomValid", "未实现的自定义认证")
  30 +}
  31 +
  32 +func (listCooperationApplicationQuery *ListCooperationApplicationQuery) ValidateQuery() error {
  33 + valid := validation.Validation{}
  34 + b, err := valid.Valid(listCooperationApplicationQuery)
  35 + if err != nil {
  36 + return err
  37 + }
  38 + if !b {
  39 + elem := reflect.TypeOf(listCooperationApplicationQuery).Elem()
  40 + for _, validErr := range valid.Errors {
  41 + field, isExist := elem.FieldByName(validErr.Field)
  42 + if isExist {
  43 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  44 + } else {
  45 + return fmt.Errorf(validErr.Message)
  46 + }
  47 + }
  48 + }
  49 + return nil
  50 +}
  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 SearchCooperationApplicationQuery struct {
  12 + // 共创项目编号
  13 + CooperationProjectNumber string `cname:"共创项目编号" json:"cooperationProjectNumber,omitempty"`
  14 + // 共创项目名称
  15 + CooperationProjectName string `cname:"共创项目名称" json:"cooperationProjectName,omitempty"`
  16 + // 申请人姓名
  17 + ApplicantName string `cname:"申请人姓名" json:"applicantName,omitempty"`
  18 + // 共创申请审核状态,1待审核,2已同意,3已拒绝
  19 + CooperationApplicationStatus int32 `cname:"共创申请审核状态" json:"cooperationApplicationStatus,omitempty"`
  20 + // 是否被取消标记 1正常,2取消,3所有
  21 + IsCanceled int32 `cname:"取消状态" json:"isCanceled,omitempty"`
  22 + // 页面大小
  23 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  24 + // 页面大小
  25 + PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
  26 + // 公司ID,通过集成REST上下文获取
  27 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  28 + // 组织机构ID
  29 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  30 + // 关联的组织机构ID列表
  31 + OrgIds []int64 `cname:"关联的组织机构ID列表" json:"orgIds"`
  32 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  33 + UserId int64 `cname:"用户ID" json:"userId"`
  34 + // 用户基础数据id
  35 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  36 +}
  37 +
  38 +func (searchCooperationApplicationQuery *SearchCooperationApplicationQuery) Valid(validation *validation.Validation) {
  39 + //validation.SetError("CustomValid", "未实现的自定义认证")
  40 +}
  41 +
  42 +func (searchCooperationApplicationQuery *SearchCooperationApplicationQuery) ValidateQuery() error {
  43 + valid := validation.Validation{}
  44 + b, err := valid.Valid(searchCooperationApplicationQuery)
  45 + if err != nil {
  46 + return err
  47 + }
  48 + if !b {
  49 + elem := reflect.TypeOf(searchCooperationApplicationQuery).Elem()
  50 + for _, validErr := range valid.Errors {
  51 + field, isExist := elem.FieldByName(validErr.Field)
  52 + if isExist {
  53 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  54 + } else {
  55 + return fmt.Errorf(validErr.Message)
  56 + }
  57 + }
  58 + }
  59 + return nil
  60 +}
  1 +package service
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/linmadan/egglib-go/utils/tool_funs"
  7 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/cooperationApplication/command"
  8 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/cooperationApplication/dto"
  9 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/cooperationApplication/query"
  10 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory"
  11 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  12 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service"
  13 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao"
  14 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils"
  15 + "strconv"
  16 + "time"
  17 +)
  18 +
  19 +// CooperationApplicationService 共创申请服务
  20 +type CooperationApplicationService struct {
  21 +}
  22 +
  23 +// ApplyForCooperation 申请共创
  24 +func (cooperationApplicationService *CooperationApplicationService) ApplyForCooperation(applyForCooperationCommand *command.ApplyForCooperationCommand) (interface{}, error) {
  25 + if err := applyForCooperationCommand.ValidateCommand(); err != nil {
  26 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  27 + }
  28 + transactionContext, err := factory.CreateTransactionContext(nil)
  29 + if err != nil {
  30 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  31 + }
  32 + if err := transactionContext.StartTransaction(); err != nil {
  33 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  34 + }
  35 + defer func() {
  36 + _ = transactionContext.RollbackTransaction()
  37 + }()
  38 +
  39 + // 共创项目仓储初始化
  40 + var cooperationProjectRepository domain.CooperationProjectRepository
  41 + if value, err := factory.CreateCooperationProjectRepository(map[string]interface{}{
  42 + "transactionContext": transactionContext,
  43 + }); err != nil {
  44 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  45 + } else {
  46 + cooperationProjectRepository = value
  47 + }
  48 +
  49 + // 用户REST服务初始化
  50 + var userService service.UserService
  51 + if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil {
  52 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  53 + } else {
  54 + userService = value
  55 + }
  56 +
  57 + // 公司REST服务初始化
  58 + var companyService service.CompanyService
  59 + if value, err := factory.CreateCompanyService(map[string]interface{}{}); err != nil {
  60 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  61 + } else {
  62 + companyService = value
  63 + }
  64 +
  65 + // 组织机构REST服务初始化
  66 + var organizationService service.OrgService
  67 + if value, err := factory.CreateOrganizationService(map[string]interface{}{}); err != nil {
  68 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  69 + } else {
  70 + organizationService = value
  71 + }
  72 +
  73 + // 共创申请仓储初始化
  74 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  75 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  76 + "transactionContext": transactionContext,
  77 + }); err != nil {
  78 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  79 + } else {
  80 + cooperationApplicationRepository = value
  81 + }
  82 +
  83 + // 共创申请DAO初始化
  84 + var cooperationApplicationDao *dao.CooperationApplicationDao
  85 + if value, err := factory.CreateCooperationApplicationDao(map[string]interface{}{
  86 + "transactionContext": transactionContext,
  87 + }); err != nil {
  88 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  89 + } else {
  90 + cooperationApplicationDao = value
  91 + }
  92 +
  93 + // 获取共创项目
  94 + cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{"cooperationProjectId": applyForCooperationCommand.CooperationProjectId})
  95 + if err != nil {
  96 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创项目不存在")
  97 + }
  98 + if cooperationProject == nil {
  99 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(applyForCooperationCommand.CooperationProjectId, 10)))
  100 + }
  101 +
  102 + var newCooperationApplication *domain.CooperationApplication
  103 +
  104 + if applyForCooperationCommand.CompanyId == 0 && applyForCooperationCommand.OrgId == 0 && applyForCooperationCommand.UserId == 0 && applyForCooperationCommand.UserBaseId != 0 { // 游客操作
  105 + // 获取申请人信息
  106 + var applicant *domain.User
  107 + if data, err := userService.VisitorFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId, applyForCooperationCommand.UserBaseId); err != nil {
  108 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败")
  109 + } else {
  110 + applicant = data
  111 + }
  112 +
  113 + // 校验:同一个用户,不能多次申请同一个项目
  114 + applicationExist, _ := cooperationApplicationDao.CheckApplicationExist(map[string]interface{}{
  115 + "visitorUserBaseId": applicant.UserBaseId,
  116 + "companyId": cooperationProject.Company.CompanyId,
  117 + "orgId": cooperationProject.Org.OrgId,
  118 + "cooperationProjectNumber": cooperationProject.CooperationProjectNumber,
  119 + })
  120 + if applicationExist {
  121 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "抱歉,您已经申请过该项目")
  122 + }
  123 +
  124 + // 校验:判断用户类型是否属于承接对象
  125 + typeExist := false
  126 + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, 3) { // 非公开类型校验
  127 + for _, userType := range cooperationProject.CooperationProjectUndertakerTypes {
  128 + if utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType&userType) {
  129 + typeExist = true
  130 + }
  131 + }
  132 + if !typeExist {
  133 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象")
  134 +
  135 + }
  136 + }
  137 +
  138 + newCooperationApplication = &domain.CooperationApplication{
  139 + CooperationApplicationApplicant: applicant,
  140 + CooperationApplicationAttachment: applyForCooperationCommand.CooperationApplicationAttachment,
  141 + CooperationApplicationDescription: applyForCooperationCommand.CooperationApplicationDescription,
  142 + CooperationApplicationStatus: 1,
  143 + CooperationApplicationVerifier: nil,
  144 + CooperationApplicationVerifyDescription: "",
  145 + CooperationApplicationVerifyTime: time.Time{},
  146 + CooperationApplyTime: time.Now(),
  147 + CooperationProject: cooperationProject,
  148 + Org: cooperationProject.Org,
  149 + IsCanceled: 1,
  150 + Company: cooperationProject.Company,
  151 + CreatedAt: time.Now(),
  152 + DeletedAt: time.Time{},
  153 + UpdatedAt: time.Time{},
  154 + }
  155 + } else {
  156 + // 获取申请人
  157 + var applicant *domain.User
  158 + if data, err := userService.UserFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId, applyForCooperationCommand.UserId); err != nil {
  159 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败")
  160 + } else {
  161 + applicant = data
  162 + }
  163 +
  164 + // 获取公司信息
  165 + var company *domain.Company
  166 + if data, err := companyService.CompanyFrom(applyForCooperationCommand.CompanyId); err != nil {
  167 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取公司信息失败")
  168 + } else {
  169 + company = data
  170 + }
  171 +
  172 + // 获取组织机构信息
  173 + var organization *domain.Org
  174 + if data, err := organizationService.OrgFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId); err != nil {
  175 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取组织机构数据失败")
  176 + } else {
  177 + organization = data
  178 + }
  179 +
  180 + // 校验:同一个用户,不能多次申请同一个项目
  181 + applicationExist, _ := cooperationApplicationDao.CheckApplicationExist(map[string]interface{}{
  182 + "companyId": applyForCooperationCommand.CompanyId,
  183 + "orgId": applyForCooperationCommand.OrgId,
  184 + "applicantId": applicant.UserId,
  185 + "cooperationProjectNumber": cooperationProject.CooperationProjectNumber,
  186 + })
  187 + if applicationExist {
  188 + return nil, application.ThrowError(application.TRANSACTION_ERROR, "当前项目申请已提交")
  189 + }
  190 +
  191 + // 校验:判断用户类型是否属于承接对象
  192 + typeExist := false
  193 + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, 3) { // 非公开类型校验
  194 + for _, userType := range cooperationProject.CooperationProjectUndertakerTypes {
  195 + if utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType&userType) {
  196 + typeExist = true
  197 + }
  198 + }
  199 + if !typeExist {
  200 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象")
  201 + }
  202 + }
  203 +
  204 + newCooperationApplication = &domain.CooperationApplication{
  205 + CooperationApplicationApplicant: applicant,
  206 + CooperationApplicationAttachment: applyForCooperationCommand.CooperationApplicationAttachment,
  207 + CooperationApplicationDescription: applyForCooperationCommand.CooperationApplicationDescription,
  208 + CooperationApplicationStatus: 1,
  209 + CooperationApplicationVerifier: nil,
  210 + CooperationApplicationVerifyDescription: "",
  211 + CooperationApplicationVerifyTime: time.Time{},
  212 + CooperationApplyTime: time.Now(),
  213 + CooperationProject: cooperationProject,
  214 + Org: organization,
  215 + IsCanceled: 1,
  216 + Company: company,
  217 + CreatedAt: time.Now(),
  218 + DeletedAt: time.Time{},
  219 + UpdatedAt: time.Time{},
  220 + }
  221 + }
  222 +
  223 + // 保存共创申请
  224 + if cooperationApplication, err := cooperationApplicationRepository.Save(newCooperationApplication); err != nil {
  225 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  226 + } else {
  227 + // 更新共创项目申请人计数
  228 + cooperationProject.ApplicantCount = cooperationProject.ApplicantCount + 1
  229 + if _, err := cooperationProjectRepository.Save(cooperationProject); err != nil {
  230 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  231 + }
  232 + if err := transactionContext.CommitTransaction(); err != nil {
  233 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  234 + }
  235 + return cooperationApplication, nil
  236 + }
  237 +}
  238 +
  239 +// ApprovalCooperationApplication 审核共创申请
  240 +func (cooperationApplicationService *CooperationApplicationService) ApprovalCooperationApplication(approvalCooperationApplicationCommand *command.ApprovalCooperationApplicationCommand) (interface{}, error) {
  241 + if err := approvalCooperationApplicationCommand.ValidateCommand(); err != nil {
  242 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  243 + }
  244 + transactionContext, err := factory.CreateTransactionContext(nil)
  245 + if err != nil {
  246 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  247 + }
  248 + if err := transactionContext.StartTransaction(); err != nil {
  249 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  250 + }
  251 + defer func() {
  252 + _ = transactionContext.RollbackTransaction()
  253 + }()
  254 +
  255 + // 共创申请仓储初始化
  256 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  257 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  258 + "transactionContext": transactionContext,
  259 + }); err != nil {
  260 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  261 + } else {
  262 + cooperationApplicationRepository = value
  263 + }
  264 +
  265 + // 用户REST服务初始化
  266 + var userService service.UserService
  267 + if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil {
  268 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  269 + } else {
  270 + userService = value
  271 + }
  272 +
  273 + // 获取审核人
  274 + var verifier *domain.User
  275 + if data, err := userService.UserFrom(approvalCooperationApplicationCommand.CompanyId, approvalCooperationApplicationCommand.OrgId, approvalCooperationApplicationCommand.UserId); err != nil {
  276 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败")
  277 + } else {
  278 + verifier = data
  279 + }
  280 +
  281 + // 共创申请ID转换
  282 + cooperationApplicationId, err := strconv.ParseInt(approvalCooperationApplicationCommand.CooperationApplicationId, 10, 64)
  283 + if err != nil {
  284 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请ID类型错误")
  285 + }
  286 +
  287 + // 获取共创申请
  288 + cooperationApplication, err := cooperationApplicationRepository.FindOne(map[string]interface{}{"cooperationApplicationId": approvalCooperationApplicationCommand.CooperationApplicationId})
  289 + if err != nil {
  290 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请不存在")
  291 + }
  292 + if cooperationApplication == nil {
  293 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cooperationApplicationId, 10)))
  294 + }
  295 +
  296 + // 校验共创申请是否已经审核过
  297 + if cooperationApplication.CooperationApplicationStatus != 1 {
  298 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "改申请已经审核过")
  299 + }
  300 +
  301 + if approvalCooperationApplicationCommand.Action == 1 {
  302 + cooperationApplication.CooperationApplicationStatus = 2
  303 + } else if approvalCooperationApplicationCommand.Action == 2 {
  304 + cooperationApplication.CooperationApplicationStatus = 3
  305 + }
  306 +
  307 + cooperationApplication.CooperationApplicationVerifier = verifier
  308 + cooperationApplication.CooperationApplicationVerifyTime = time.Now()
  309 +
  310 + if err := cooperationApplication.Update(tool_funs.SimpleStructToMap(approvalCooperationApplicationCommand)); err != nil {
  311 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  312 + }
  313 + if cooperationApplicationSaved, err := cooperationApplicationRepository.Save(cooperationApplication); err != nil {
  314 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  315 + } else {
  316 + if err := transactionContext.CommitTransaction(); err != nil {
  317 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  318 + }
  319 + return cooperationApplicationSaved, nil
  320 + }
  321 +}
  322 +
  323 +// BatchApprovalCooperationApplication 批量审核共创申请
  324 +func (cooperationApplicationService *CooperationApplicationService) BatchApprovalCooperationApplication(batchApprovalCooperationApplicationCommand *command.BatchApprovalCooperationApplicationCommand) (interface{}, error) {
  325 + if err := batchApprovalCooperationApplicationCommand.ValidateCommand(); err != nil {
  326 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  327 + }
  328 + transactionContext, err := factory.CreateTransactionContext(nil)
  329 + if err != nil {
  330 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  331 + }
  332 + if err := transactionContext.StartTransaction(); err != nil {
  333 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  334 + }
  335 + defer func() {
  336 + _ = transactionContext.RollbackTransaction()
  337 + }()
  338 +
  339 + // 共创申请仓储初始化
  340 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  341 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  342 + "transactionContext": transactionContext,
  343 + }); err != nil {
  344 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  345 + } else {
  346 + cooperationApplicationRepository = value
  347 + }
  348 +
  349 + // 共创申请ID类型转换
  350 + cooperationApplicationIds, err := utils.SliceAtoi(batchApprovalCooperationApplicationCommand.CooperationApplicationIds)
  351 + if err != nil {
  352 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请ID列表类型错误")
  353 + }
  354 +
  355 + // 用户REST服务初始化
  356 + var userService service.UserService
  357 + if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil {
  358 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  359 + } else {
  360 + userService = value
  361 + }
  362 +
  363 + // 获取审核人
  364 + var verifier *domain.User
  365 + if data, err := userService.UserFrom(batchApprovalCooperationApplicationCommand.CompanyId, batchApprovalCooperationApplicationCommand.OrgId, batchApprovalCooperationApplicationCommand.UserId); err != nil {
  366 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败")
  367 + } else {
  368 + verifier = data
  369 + }
  370 +
  371 + // 获取共创申请
  372 + if count, cooperationApplications, err := cooperationApplicationRepository.Find(map[string]interface{}{
  373 + "cooperationApplicationIds": cooperationApplicationIds,
  374 + }); err != nil {
  375 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  376 + } else {
  377 + if count > 0 {
  378 + for i, cooperationApplication := range cooperationApplications {
  379 + // 校验共创申请是否已经审核过
  380 + if cooperationApplication.CooperationApplicationStatus != 1 {
  381 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "改申请已经审核过")
  382 + }
  383 + // 更新共创申请数据
  384 + cooperationApplications[i].CooperationApplicationVerifyDescription = batchApprovalCooperationApplicationCommand.CooperationApplicationVerifyDescription
  385 + if batchApprovalCooperationApplicationCommand.Action == 1 { // 同意
  386 + cooperationApplications[i].CooperationApplicationStatus = 2
  387 + } else if batchApprovalCooperationApplicationCommand.Action == 2 { // 拒绝
  388 + cooperationApplications[i].CooperationApplicationStatus = 3
  389 + }
  390 + cooperationApplications[i].CooperationApplicationVerifier = verifier
  391 + cooperationApplications[i].CooperationApplicationVerifyTime = time.Now()
  392 + cooperationApplications[i].IsCanceled = 1
  393 + }
  394 + cooperationApplicationsApproved, err := cooperationApplicationRepository.UpdateMany(cooperationApplications)
  395 + if err != nil {
  396 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  397 + }
  398 + if err := transactionContext.CommitTransaction(); err != nil {
  399 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  400 + }
  401 + return map[string]interface{}{
  402 + "cooperationApplications": cooperationApplicationsApproved,
  403 + }, nil
  404 + } else {
  405 + return map[string]interface{}{}, nil
  406 + }
  407 + }
  408 +}
  409 +
  410 +// OneClickApprovalCooperationApplication 一键审核共创申请
  411 +func (cooperationApplicationService *CooperationApplicationService) OneClickApprovalCooperationApplication(oneClickApprovalCooperationApplicationCommand *command.OneClickApprovalCooperationApplicationCommand) (interface{}, error) {
  412 + if err := oneClickApprovalCooperationApplicationCommand.ValidateCommand(); err != nil {
  413 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  414 + }
  415 + transactionContext, err := factory.CreateTransactionContext(nil)
  416 + if err != nil {
  417 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  418 + }
  419 + if err := transactionContext.StartTransaction(); err != nil {
  420 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  421 + }
  422 + defer func() {
  423 + _ = transactionContext.RollbackTransaction()
  424 + }()
  425 +
  426 + // 共创申请仓储初始化
  427 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  428 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  429 + "transactionContext": transactionContext,
  430 + }); err != nil {
  431 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  432 + } else {
  433 + cooperationApplicationRepository = value
  434 + }
  435 +
  436 + // 用户REST服务初始化
  437 + var userService service.UserService
  438 + if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil {
  439 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  440 + } else {
  441 + userService = value
  442 + }
  443 +
  444 + // 获取审核人
  445 + var verifier *domain.User
  446 + if data, err := userService.UserFrom(oneClickApprovalCooperationApplicationCommand.CompanyId, oneClickApprovalCooperationApplicationCommand.OrgId, oneClickApprovalCooperationApplicationCommand.UserId); err != nil {
  447 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败")
  448 + } else {
  449 + verifier = data
  450 + }
  451 +
  452 + // 查询共创申请
  453 + oneClickApprovalCooperationApplicationCommand.CooperationApplicationStatus = 1 // 待审核
  454 + if count, cooperationApplications, err := cooperationApplicationRepository.Find(tool_funs.SimpleStructToMap(oneClickApprovalCooperationApplicationCommand)); err != nil {
  455 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  456 + } else {
  457 + if count > 0 {
  458 + for i, cooperationApplication := range cooperationApplications {
  459 + // 校验共创申请是否已经审核过
  460 + if cooperationApplication.CooperationApplicationStatus != 1 {
  461 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "改申请已经审核过")
  462 + }
  463 + // 更新共创申请
  464 + if oneClickApprovalCooperationApplicationCommand.Action == 1 {
  465 + cooperationApplications[i].CooperationApplicationStatus = 2
  466 + } else if oneClickApprovalCooperationApplicationCommand.Action == 2 {
  467 + cooperationApplications[i].CooperationApplicationStatus = 3
  468 + }
  469 + cooperationApplications[i].CooperationApplicationVerifyDescription = oneClickApprovalCooperationApplicationCommand.CooperationApplicationVerifyDescription
  470 + cooperationApplications[i].CooperationApplicationVerifier = verifier
  471 + cooperationApplications[i].CooperationApplicationVerifyTime = time.Now()
  472 + }
  473 + cooperationApplicationsApproved, err := cooperationApplicationRepository.UpdateMany(cooperationApplications)
  474 + if err != nil {
  475 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  476 + }
  477 + if err := transactionContext.CommitTransaction(); err != nil {
  478 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  479 + }
  480 + return map[string]interface{}{
  481 + "cooperationApplications": cooperationApplicationsApproved,
  482 + }, nil
  483 + } else {
  484 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未找到待审核的共创申请")
  485 + }
  486 + }
  487 +}
  488 +
  489 +// CreateCooperationApplication 创建共创申请服务
  490 +func (cooperationApplicationService *CooperationApplicationService) CreateCooperationApplication(createCooperationApplicationCommand *command.CreateCooperationApplicationCommand) (interface{}, error) {
  491 + if err := createCooperationApplicationCommand.ValidateCommand(); err != nil {
  492 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  493 + }
  494 + transactionContext, err := factory.CreateTransactionContext(nil)
  495 + if err != nil {
  496 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  497 + }
  498 + if err := transactionContext.StartTransaction(); err != nil {
  499 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  500 + }
  501 + defer func() {
  502 + _ = transactionContext.RollbackTransaction()
  503 + }()
  504 +
  505 + var cooperationProjectRepository domain.CooperationProjectRepository
  506 + if value, err := factory.CreateCooperationProjectRepository(map[string]interface{}{
  507 + "transactionContext": transactionContext,
  508 + }); err != nil {
  509 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  510 + } else {
  511 + cooperationProjectRepository = value
  512 + }
  513 + cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{"cooperationProjectNumber": createCooperationApplicationCommand.CooperationProjectNumber})
  514 + if err != nil {
  515 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创项目不存在")
  516 + }
  517 + if cooperationProject == nil {
  518 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", createCooperationApplicationCommand.CooperationProjectNumber))
  519 + }
  520 +
  521 + // 用户REST服务初始化
  522 + var userService service.UserService
  523 + if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil {
  524 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  525 + } else {
  526 + userService = value
  527 + }
  528 +
  529 + // 获取申请人
  530 + var applicant *domain.User
  531 + if data, err := userService.UserFrom(createCooperationApplicationCommand.CompanyId, createCooperationApplicationCommand.OrgId, createCooperationApplicationCommand.UserId); err != nil {
  532 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  533 + } else {
  534 + applicant = data
  535 + }
  536 +
  537 + // 公司REST服务初始化
  538 + var companyService service.CompanyService
  539 + if value, err := factory.CreateCompanyService(map[string]interface{}{}); err != nil {
  540 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  541 + } else {
  542 + companyService = value
  543 + }
  544 +
  545 + // 获取公司信息
  546 + var company *domain.Company
  547 + if data, err := companyService.CompanyFrom(createCooperationApplicationCommand.CompanyId); err != nil {
  548 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  549 + } else {
  550 + company = data
  551 + }
  552 +
  553 + // 组织机构REST服务初始化
  554 + var organizationService service.OrgService
  555 + if value, err := factory.CreateOrganizationService(map[string]interface{}{}); err != nil {
  556 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  557 + } else {
  558 + organizationService = value
  559 + }
  560 +
  561 + // 获取组织机构信息
  562 + var organization *domain.Org
  563 + if data, err := organizationService.OrgFrom(createCooperationApplicationCommand.CompanyId, createCooperationApplicationCommand.OrgId); err != nil {
  564 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  565 + } else {
  566 + organization = data
  567 + }
  568 +
  569 + newCooperationApplication := &domain.CooperationApplication{
  570 + CooperationApplicationApplicant: applicant,
  571 + CooperationApplicationAttachment: createCooperationApplicationCommand.CooperationApplicationAttachment,
  572 + CooperationApplicationDescription: createCooperationApplicationCommand.CooperationApplicationDescription,
  573 + CooperationApplicationStatus: 1,
  574 + CooperationApplicationVerifier: nil,
  575 + CooperationApplicationVerifyDescription: "",
  576 + CooperationApplicationVerifyTime: time.Time{},
  577 + CooperationApplyTime: time.Now(),
  578 + CooperationProject: cooperationProject,
  579 + Org: organization,
  580 + IsCanceled: 1,
  581 + Company: company,
  582 + CreatedAt: time.Now(),
  583 + DeletedAt: time.Time{},
  584 + UpdatedAt: time.Time{},
  585 + }
  586 +
  587 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  588 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  589 + "transactionContext": transactionContext,
  590 + }); err != nil {
  591 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  592 + } else {
  593 + cooperationApplicationRepository = value
  594 + }
  595 + if cooperationApplication, err := cooperationApplicationRepository.Save(newCooperationApplication); err != nil {
  596 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  597 + } else {
  598 + if err := transactionContext.CommitTransaction(); err != nil {
  599 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  600 + }
  601 + return cooperationApplication, nil
  602 + }
  603 +}
  604 +
  605 +// GetCooperationApplication 返回共创申请服务
  606 +func (cooperationApplicationService *CooperationApplicationService) GetCooperationApplication(getCooperationApplicationQuery *query.GetCooperationApplicationQuery) (interface{}, error) {
  607 + if err := getCooperationApplicationQuery.ValidateQuery(); err != nil {
  608 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  609 + }
  610 + transactionContext, err := factory.CreateTransactionContext(nil)
  611 + if err != nil {
  612 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  613 + }
  614 + if err := transactionContext.StartTransaction(); err != nil {
  615 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  616 + }
  617 + defer func() {
  618 + _ = transactionContext.RollbackTransaction()
  619 + }()
  620 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  621 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  622 + "transactionContext": transactionContext,
  623 + }); err != nil {
  624 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  625 + } else {
  626 + cooperationApplicationRepository = value
  627 + }
  628 + cooperationApplication, err := cooperationApplicationRepository.FindOne(map[string]interface{}{"cooperationApplicationId": getCooperationApplicationQuery.CooperationApplicationId})
  629 + if err != nil {
  630 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请不存在")
  631 + }
  632 + if cooperationApplication == nil {
  633 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(getCooperationApplicationQuery.CooperationApplicationId, 10)))
  634 + } else {
  635 + if err := transactionContext.CommitTransaction(); err != nil {
  636 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  637 + }
  638 + coProjectDto := &dto.CooperationApplicationDto{}
  639 + coProjectDto.LoadDto(cooperationApplication)
  640 + return coProjectDto, nil
  641 + }
  642 +}
  643 +
  644 +// ListCooperationApplication 返回共创申请服务列表
  645 +func (cooperationApplicationService *CooperationApplicationService) ListCooperationApplication(listCooperationApplicationQuery *query.ListCooperationApplicationQuery) (interface{}, error) {
  646 + if err := listCooperationApplicationQuery.ValidateQuery(); err != nil {
  647 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  648 + }
  649 + transactionContext, err := factory.CreateTransactionContext(nil)
  650 + if err != nil {
  651 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  652 + }
  653 + if err := transactionContext.StartTransaction(); err != nil {
  654 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  655 + }
  656 + defer func() {
  657 + _ = transactionContext.RollbackTransaction()
  658 + }()
  659 + // 共创申请仓储初始化
  660 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  661 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  662 + "transactionContext": transactionContext,
  663 + }); err != nil {
  664 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  665 + } else {
  666 + cooperationApplicationRepository = value
  667 + }
  668 + // 获取共创申请
  669 + if count, cooperationApplications, err := cooperationApplicationRepository.Find(tool_funs.SimpleStructToMap(listCooperationApplicationQuery)); err != nil {
  670 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  671 + } else {
  672 + if err := transactionContext.CommitTransaction(); err != nil {
  673 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  674 + }
  675 + return map[string]interface{}{
  676 + "grid": map[string]interface{}{
  677 + "total": count,
  678 + "list": cooperationApplications,
  679 + },
  680 + }, nil
  681 + }
  682 +}
  683 +
  684 +// RemoveCooperationApplication 移除共创申请服务
  685 +func (cooperationApplicationService *CooperationApplicationService) RemoveCooperationApplication(removeCooperationApplicationCommand *command.RemoveCooperationApplicationCommand) (interface{}, error) {
  686 + if err := removeCooperationApplicationCommand.ValidateCommand(); err != nil {
  687 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  688 + }
  689 + transactionContext, err := factory.CreateTransactionContext(nil)
  690 + if err != nil {
  691 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  692 + }
  693 + if err := transactionContext.StartTransaction(); err != nil {
  694 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  695 + }
  696 + defer func() {
  697 + _ = transactionContext.RollbackTransaction()
  698 + }()
  699 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  700 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  701 + "transactionContext": transactionContext,
  702 + }); err != nil {
  703 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  704 + } else {
  705 + cooperationApplicationRepository = value
  706 + }
  707 + cooperationApplication, err := cooperationApplicationRepository.FindOne(map[string]interface{}{"cooperationApplicationId": removeCooperationApplicationCommand.CooperationApplicationId})
  708 + if err != nil {
  709 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请不存在")
  710 + }
  711 + if cooperationApplication == nil {
  712 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(removeCooperationApplicationCommand.CooperationApplicationId, 10)))
  713 + }
  714 + if cooperationApplication, err := cooperationApplicationRepository.Remove(cooperationApplication); err != nil {
  715 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  716 + } else {
  717 + if err := transactionContext.CommitTransaction(); err != nil {
  718 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  719 + }
  720 + return cooperationApplication, nil
  721 + }
  722 +}
  723 +
  724 +// SearchCooperationApplication 查询共创申请
  725 +func (cooperationApplicationService *CooperationApplicationService) SearchCooperationApplication(searchCooperationApplicationQuery *query.SearchCooperationApplicationQuery) (interface{}, error) {
  726 + if err := searchCooperationApplicationQuery.ValidateQuery(); err != nil {
  727 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  728 + }
  729 + transactionContext, err := factory.CreateTransactionContext(nil)
  730 + if err != nil {
  731 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  732 + }
  733 + if err := transactionContext.StartTransaction(); err != nil {
  734 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  735 + }
  736 + defer func() {
  737 + _ = transactionContext.RollbackTransaction()
  738 + }()
  739 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  740 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  741 + "transactionContext": transactionContext,
  742 + }); err != nil {
  743 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  744 + } else {
  745 + cooperationApplicationRepository = value
  746 + }
  747 + if count, cooperationApplications, err := cooperationApplicationRepository.Find(tool_funs.SimpleStructToMap(searchCooperationApplicationQuery)); err != nil {
  748 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  749 + } else {
  750 + if err := transactionContext.CommitTransaction(); err != nil {
  751 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  752 + }
  753 + var coProjectDtos []*dto.CooperationApplicationDto
  754 + for i := range cooperationApplications {
  755 + var coProjectDto = &dto.CooperationApplicationDto{}
  756 + coProjectDto.LoadDto(cooperationApplications[i])
  757 + coProjectDtos = append(coProjectDtos, coProjectDto)
  758 + }
  759 +
  760 + return map[string]interface{}{
  761 + "grid": map[string]interface{}{
  762 + "total": count,
  763 + "list": coProjectDtos,
  764 + },
  765 + }, nil
  766 + }
  767 +}
  768 +
  769 +// UpdateCooperationApplication 更新共创申请服务
  770 +func (cooperationApplicationService *CooperationApplicationService) UpdateCooperationApplication(updateCooperationApplicationCommand *command.UpdateCooperationApplicationCommand) (interface{}, error) {
  771 + if err := updateCooperationApplicationCommand.ValidateCommand(); err != nil {
  772 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  773 + }
  774 + transactionContext, err := factory.CreateTransactionContext(nil)
  775 + if err != nil {
  776 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  777 + }
  778 + if err := transactionContext.StartTransaction(); err != nil {
  779 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  780 + }
  781 + defer func() {
  782 + _ = transactionContext.RollbackTransaction()
  783 + }()
  784 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  785 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  786 + "transactionContext": transactionContext,
  787 + }); err != nil {
  788 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  789 + } else {
  790 + cooperationApplicationRepository = value
  791 + }
  792 + cooperationApplication, err := cooperationApplicationRepository.FindOne(map[string]interface{}{"cooperationApplicationId": updateCooperationApplicationCommand.CooperationApplicationId})
  793 + if err != nil {
  794 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请不存在")
  795 + }
  796 + if cooperationApplication == nil {
  797 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(updateCooperationApplicationCommand.CooperationApplicationId, 10)))
  798 + }
  799 + if err := cooperationApplication.Update(tool_funs.SimpleStructToMap(updateCooperationApplicationCommand)); err != nil {
  800 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  801 + }
  802 + if cooperationApplication, err := cooperationApplicationRepository.Save(cooperationApplication); err != nil {
  803 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  804 + } else {
  805 + if err := transactionContext.CommitTransaction(); err != nil {
  806 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  807 + }
  808 + return cooperationApplication, nil
  809 + }
  810 +}
  811 +
  812 +// CancelCooperationApplication 取消共创申请
  813 +func (cooperationApplicationService *CooperationApplicationService) CancelCooperationApplication(cancelCooperationApplicationCommand *command.CancelCooperationApplicationCommand) (interface{}, error) {
  814 + if err := cancelCooperationApplicationCommand.ValidateCommand(); err != nil {
  815 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  816 + }
  817 + transactionContext, err := factory.CreateTransactionContext(nil)
  818 + if err != nil {
  819 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  820 + }
  821 + if err := transactionContext.StartTransaction(); err != nil {
  822 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  823 + }
  824 + defer func() {
  825 + _ = transactionContext.RollbackTransaction()
  826 + }()
  827 +
  828 + //TODO 校验用户菜单模块权限
  829 +
  830 + // 共创项目仓储初始化
  831 + var cooperationProjectRepository domain.CooperationProjectRepository
  832 + if value, err := factory.CreateCooperationProjectRepository(map[string]interface{}{
  833 + "transactionContext": transactionContext,
  834 + }); err != nil {
  835 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  836 + } else {
  837 + cooperationProjectRepository = value
  838 + }
  839 +
  840 + // 共创申请仓储初始化
  841 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  842 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  843 + "transactionContext": transactionContext,
  844 + }); err != nil {
  845 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  846 + } else {
  847 + cooperationApplicationRepository = value
  848 + }
  849 + cooperationApplicationId, err := strconv.ParseInt(cancelCooperationApplicationCommand.CooperationApplicationId, 10, 64)
  850 + if err != nil {
  851 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请ID错误")
  852 + }
  853 + cooperationApplication, err := cooperationApplicationRepository.FindOne(map[string]interface{}{"cooperationApplicationId": cooperationApplicationId})
  854 + if err != nil {
  855 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创申请不存在")
  856 + }
  857 + if cooperationApplication == nil {
  858 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cooperationApplicationId, 10)))
  859 + }
  860 + if err := cooperationApplication.Update(map[string]interface{}{
  861 + "isCanceled": int32(2),
  862 + }); err != nil {
  863 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  864 + }
  865 + if cooperationApplicationSaved, err := cooperationApplicationRepository.Save(cooperationApplication); err != nil {
  866 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  867 + } else {
  868 + // 获取共创项目
  869 + cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{"cooperationProjectId": cooperationApplicationSaved.CooperationProject.CooperationProjectId})
  870 + if err != nil {
  871 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创项目不存在")
  872 + }
  873 + if cooperationProject == nil {
  874 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("共创项目%s不存在", strconv.FormatInt(cooperationApplicationSaved.CooperationProject.CooperationProjectId, 10)))
  875 + }
  876 + // 更新共创项目申请统计
  877 + //cooperationProject.ApplicantCount = cooperationProject.ApplicantCount - 1
  878 + if _, err := cooperationProjectRepository.Save(cooperationProject); err != nil {
  879 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  880 + }
  881 + if err := transactionContext.CommitTransaction(); err != nil {
  882 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  883 + }
  884 + return cooperationApplicationSaved, nil
  885 + }
  886 +}
  887 +
  888 +func NewCooperationApplicationService(options map[string]interface{}) *CooperationApplicationService {
  889 + newCooperationApplicationService := &CooperationApplicationService{}
  890 + return newCooperationApplicationService
  891 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "reflect"
  7 + "strings"
  8 +)
  9 +
  10 +type BatchOperateCooperationContractCommand struct {
  11 + // 共创合约id列表
  12 + CooperationContractIds []string `cname:"共创合约id" json:"cooperationContractIds" valid:"Required"`
  13 + // 动作
  14 + Action int32 `cname:"操作" json:"action" valid:"Required"`
  15 + // 公司ID,通过集成REST上下文获取
  16 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  17 + // 组织机构ID
  18 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  19 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  20 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  21 + // 用户基础数据id
  22 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  23 +}
  24 +
  25 +func (batchOperateCooperationContractCommand *BatchOperateCooperationContractCommand) Valid(validation *validation.Validation) {
  26 + //validation.SetError("CustomValid", "未实现的自定义认证")
  27 +}
  28 +
  29 +func (batchOperateCooperationContractCommand *BatchOperateCooperationContractCommand) ValidateCommand() error {
  30 + valid := validation.Validation{}
  31 + b, err := valid.Valid(batchOperateCooperationContractCommand)
  32 + if err != nil {
  33 + return err
  34 + }
  35 + if !b {
  36 + elem := reflect.TypeOf(batchOperateCooperationContractCommand).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 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "reflect"
  7 + "strings"
  8 +)
  9 +
  10 +type BatchRemoveCooperationContractCommand struct {
  11 + // 共创合约id列表
  12 + CooperationContractIds []string `cname:"共创合约id" json:"cooperationContractIds" valid:"Required"`
  13 + // 公司ID,通过集成REST上下文获取
  14 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  15 + // 组织机构ID
  16 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  17 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  18 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  19 + // 用户基础数据id
  20 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  21 +}
  22 +
  23 +func (batchRemoveCooperationContractCommand *BatchRemoveCooperationContractCommand) Valid(validation *validation.Validation) {
  24 + //validation.SetError("CustomValid", "未实现的自定义认证")
  25 +}
  26 +
  27 +func (batchRemoveCooperationContractCommand *BatchRemoveCooperationContractCommand) ValidateCommand() error {
  28 + valid := validation.Validation{}
  29 + b, err := valid.Valid(batchRemoveCooperationContractCommand)
  30 + if err != nil {
  31 + return err
  32 + }
  33 + if !b {
  34 + elem := reflect.TypeOf(batchRemoveCooperationContractCommand).Elem()
  35 + for _, validErr := range valid.Errors {
  36 + field, isExist := elem.FieldByName(validErr.Field)
  37 + if isExist {
  38 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  39 + } else {
  40 + return fmt.Errorf(validErr.Message)
  41 + }
  42 + }
  43 + }
  44 + return nil
  45 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 + "time"
  8 +
  9 + "github.com/beego/beego/v2/core/validation"
  10 +)
  11 +
  12 +// CreateDividendsIncentivesRulesCommand 业绩分红激励规则
  13 +type CreateDividendsIncentivesRulesCommand struct {
  14 + // 分红激励规则ID
  15 + DividendsIncentivesRuleId string `cname:"分红激励规则ID" json:"dividendsIncentivesRuleId,omitempty"`
  16 + // 共创合约编号
  17 + CooperationContractNumber string `cname:"共创合约编号" json:"cooperationContractNumber,omitempty"`
  18 + // 推荐人抽成
  19 + ReferrerPercentage float64 `cname:"推荐人抽成" json:"referrerPercentage"`
  20 + // 业务员抽成
  21 + SalesmanPercentage float64 `cname:"业务员抽成" json:"salesmanPercentage"`
  22 + // 分红规则激励百分点
  23 + DividendsIncentivesPercentage float64 `cname:"分红规则激励百分点" json:"dividendsIncentivesPercentage"`
  24 + // 分红激励阶段
  25 + DividendsIncentivesStage int32 `cname:"分红激励阶段" json:"dividendsIncentivesStage"`
  26 + // 业绩分红阶段开始时间
  27 + DividendsIncentivesStageStart time.Time `cname:"业绩分红阶段开始时间" json:"dividendsIncentivesStageStart"`
  28 + // 业绩分红阶段结束时间
  29 + DividendsIncentivesStageEnd time.Time `cname:"业绩分红阶段结束时间" json:"dividendsIncentivesStageEnd"`
  30 + // 说明
  31 + Remarks string `cname:"说明" json:"remarks"`
  32 +}
  33 +
  34 +// CreateMoneyIncentivesRulesCommand 金额激励规则
  35 +type CreateMoneyIncentivesRulesCommand struct {
  36 + // 金额激励规则ID
  37 + MoneyIncentivesRuleId string `cname:"金额激励规则ID" json:"moneyIncentivesRuleId"`
  38 + // 共创合约编号
  39 + CooperationContractNumber string `cname:"共创合约编号" json:"cooperationContractNumber"`
  40 + // 激励金额
  41 + MoneyIncentivesAmount float64 `cname:"激励金额" json:"moneyIncentivesAmount"`
  42 + // 金额激励阶段
  43 + MoneyIncentivesStage int32 `cname:"金额激励阶段" json:"moneyIncentivesStage"`
  44 + // 金额激励结束时间
  45 + MoneyIncentivesStageEnd time.Time `cname:"金额激励结束时间" json:"moneyIncentivesStageEnd"`
  46 + // 金额激励开始时间
  47 + MoneyIncentivesStageStart time.Time `cname:"金额激励开始时间" json:"moneyIncentivesStageStart"`
  48 + // 金额激励时间
  49 + MoneyIncentivesTime time.Time `cname:"金额激励时间" json:"moneyIncentivesTime"`
  50 + // 推荐人抽成
  51 + ReferrerPercentage float64 `cname:"推荐人抽成" json:"referrerPercentage"`
  52 + // 业务员抽成
  53 + SalesmanPercentage float64 `cname:"业务员抽成" json:"salesmanPercentage"`
  54 + // 说明
  55 + Remarks string `cname:"说明" json:"remarks"`
  56 +}
  57 +
  58 +// CreateUndertakersCommand 承接人
  59 +type CreateUndertakersCommand struct {
  60 + // 承接人ID
  61 + UndertakerId string `cname:"承接人ID" json:"undertakerId"`
  62 + // 承接人用户ID
  63 + UserId string `cname:"承接人UID" json:"userId"`
  64 + // 附件
  65 + ContractAttachment []struct {
  66 + // 文件类型
  67 + FileType string `cname:"文件类型" json:"fileType"`
  68 + // 文件名称
  69 + Name string `cname:"文件名称" json:"name"`
  70 + // 文件路径
  71 + Url string `cname:"文件路径" json:"url"`
  72 + // 文件大小
  73 + FileSize int64 `cname:"文件大小" json:"fileSize"`
  74 + } `cname:"附件" json:"contractAttachment"`
  75 + // 推荐人用户ID
  76 + ReferrerId string `cname:"推荐UID" json:"referrerId"`
  77 + // 业务员用户ID
  78 + SalesmanId string `cname:"业务员UID" json:"salesmanId"`
  79 +}
  80 +
  81 +type CreateCooperationContractCommand struct {
  82 + // 共创合约描述
  83 + CooperationContractDescription string `cname:"共创合约描述" json:"cooperationContractDescription"`
  84 + // 共创项目编号
  85 + CooperationProjectNumber string `cname:"共创项目编号" json:"cooperationProjectNumber,omitempty"`
  86 + // 共创合约发起部门ID
  87 + DepartmentId string `cname:"共创合约发起部门ID" json:"departmentId" valid:"Required"`
  88 + // 共创合约承接对象,1员工,2共创用户,3公开
  89 + CooperationContractUndertakerTypes []int32 `cname:"共创合约承接对象" json:"cooperationContractUndertakerTypes" valid:"Required"`
  90 + // 共创合约名称
  91 + CooperationContractName string `cname:"共创合约名称" json:"cooperationContractName" valid:"Required"`
  92 + // 共创模式编码
  93 + CooperationModeNumber string `cname:"共创模式编码" json:"cooperationModeNumber" valid:"Required"`
  94 + // 共创合约发起人uid
  95 + SponsorUid string `cname:"共创合约发起人uid" json:"sponsorUid,omitempty"`
  96 + // 业绩分红激励规则列表
  97 + DividendsIncentivesRules []*CreateDividendsIncentivesRulesCommand `cname:"业绩分红激励规则列表" json:"dividendsIncentivesRules,omitempty"`
  98 + // 金额激励规则列表
  99 + MoneyIncentivesRules []*CreateMoneyIncentivesRulesCommand `cname:"金额激励规则列表" json:"moneyIncentivesRules,omitempty"`
  100 + // 承接方列表
  101 + Undertakers []*CreateUndertakersCommand `cname:"承接方列表" json:"undertakers,omitempty"`
  102 + // 相关人列表
  103 + RelevantIds []string `cname:"相关人列表" json:"relevantIds,omitempty"`
  104 + // 公司ID,通过集成REST上下文获取
  105 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  106 + // 组织机构ID
  107 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  108 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  109 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  110 + // 用户基础数据id
  111 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  112 +}
  113 +
  114 +func (createCooperationContractCommand *CreateCooperationContractCommand) Valid(validation *validation.Validation) {
  115 + // 激励规则自定义校验
  116 + if len(createCooperationContractCommand.DividendsIncentivesRules) == 0 && len(createCooperationContractCommand.MoneyIncentivesRules) == 0 {
  117 + validation.Error("激励规则不能为空")
  118 + }
  119 + // 承接人列表校验
  120 + if len(createCooperationContractCommand.Undertakers) == 0 {
  121 + validation.Error("承接人不能为空")
  122 + }
  123 +}
  124 +
  125 +func (createCooperationContractCommand *CreateCooperationContractCommand) ValidateCommand() error {
  126 + valid := validation.Validation{}
  127 + b, err := valid.Valid(createCooperationContractCommand)
  128 + if err != nil {
  129 + return err
  130 + }
  131 + if !b {
  132 + elem := reflect.TypeOf(createCooperationContractCommand).Elem()
  133 + for _, validErr := range valid.Errors {
  134 + field, isExist := elem.FieldByName(validErr.Field)
  135 + if isExist {
  136 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  137 + } else {
  138 + return fmt.Errorf(validErr.Message)
  139 + }
  140 + }
  141 + }
  142 + return nil
  143 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "reflect"
  7 + "strings"
  8 +)
  9 +
  10 +type OperateCooperationContractCommand struct {
  11 + // 共创合约id
  12 + CooperationContractId string `cname:"共创合约id" json:"cooperationContractId" valid:"Required"`
  13 + // 操作,1暂停,2恢复
  14 + Action int32 `cname:"操作" json:"action" valid:"Required"`
  15 + // 公司ID,通过集成REST上下文获取
  16 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  17 + // 组织机构ID
  18 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  19 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  20 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  21 + // 用户基础数据id
  22 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  23 +}
  24 +
  25 +func (operateCooperationContractCommand *OperateCooperationContractCommand) Valid(validation *validation.Validation) {
  26 + //validation.SetError("CustomValid", "未实现的自定义认证")
  27 +}
  28 +
  29 +func (operateCooperationContractCommand *OperateCooperationContractCommand) ValidateCommand() error {
  30 + valid := validation.Validation{}
  31 + b, err := valid.Valid(operateCooperationContractCommand)
  32 + if err != nil {
  33 + return err
  34 + }
  35 + if !b {
  36 + elem := reflect.TypeOf(operateCooperationContractCommand).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 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type RemoveCooperationContractCommand struct {
  12 + // 共创合约ID
  13 + CooperationContractId int64 `cname:"共创合约ID" json:"cooperationContractId" valid:"Required"`
  14 + // 公司ID,通过集成REST上下文获取
  15 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  16 + // 组织机构ID
  17 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  18 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  19 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  20 + // 用户基础数据id
  21 + UserBaseId int64 `cname:"用户基础数据is" json:"userBaseId" valid:"Required"`
  22 +}
  23 +
  24 +func (removeCooperationContractCommand *RemoveCooperationContractCommand) Valid(validation *validation.Validation) {
  25 + //validation.SetError("CustomValid", "未实现的自定义认证")
  26 +}
  27 +
  28 +func (removeCooperationContractCommand *RemoveCooperationContractCommand) ValidateCommand() error {
  29 + valid := validation.Validation{}
  30 + b, err := valid.Valid(removeCooperationContractCommand)
  31 + if err != nil {
  32 + return err
  33 + }
  34 + if !b {
  35 + elem := reflect.TypeOf(removeCooperationContractCommand).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 command
  2 +
  3 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type UpdateCooperationContractCommand struct {
  12 + // 共创合约id
  13 + CooperationContractId string `cname:"共创合约id" json:"cooperationContractId" valid:"Required"`
  14 + // 共创合约描述
  15 + CooperationContractDescription string `cname:"共创合约描述" json:"cooperationContractDescription,omitempty"`
  16 + // 共创项目编号
  17 + CooperationProjectNumber string `cname:"共创项目编号" json:"cooperationProjectNumber"`
  18 + // 部门ID
  19 + DepartmentId string `cname:"部门ID" json:"departmentId" valid:"Required"`
  20 + // 共创合约承接对象,1员工,2共创用户,3公开
  21 + CooperationContractUndertakerTypes []int32 `cname:"共创合约承接对象" json:"cooperationContractUndertakerTypes" valid:"Required"`
  22 + // 共创合约名称
  23 + CooperationContractName string `cname:"共创合约名称" json:"cooperationContractName" valid:"Required"`
  24 + // 共创合约发起人uid
  25 + SponsorUid string `cname:"共创合约发起人uid" json:"sponsorUid,omitempty"`
  26 + // 业绩分红激励规则列表
  27 + DividendsIncentivesRules []*CreateDividendsIncentivesRulesCommand `cname:"业绩分红激励规则列表" json:"dividendsIncentivesRules,omitempty"`
  28 + // 金额激励规则列表
  29 + MoneyIncentivesRules []*CreateMoneyIncentivesRulesCommand `cname:"金额激励规则列表" json:"moneyIncentivesRules,omitempty"`
  30 + // 承接方列表
  31 + Undertakers []*CreateUndertakersCommand `cname:"承接方列表" json:"undertakers" valid:"Required"`
  32 + // 相关人UID列表
  33 + RelevantIds []string `cname:"相关人列表" json:"relevantIds,omitempty"`
  34 + // 公司ID,通过集成REST上下文获取
  35 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  36 + // 组织机构ID
  37 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  38 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  39 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  40 + // 用户基础数据id
  41 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  42 +}
  43 +
  44 +func (updateCooperationContractCommand *UpdateCooperationContractCommand) Valid(validation *validation.Validation) {
  45 + // 激励规则自定义校验
  46 + if len(updateCooperationContractCommand.DividendsIncentivesRules) < 1 && len(updateCooperationContractCommand.MoneyIncentivesRules) < 1 {
  47 + validation.Error("激励规则不能为空")
  48 + } else {
  49 + for i, _ := range updateCooperationContractCommand.DividendsIncentivesRules {
  50 + if updateCooperationContractCommand.DividendsIncentivesRules[i].DividendsIncentivesRuleId == "" {
  51 + updateCooperationContractCommand.DividendsIncentivesRules[i].DividendsIncentivesRuleId = "0"
  52 + }
  53 + }
  54 + for j, _ := range updateCooperationContractCommand.MoneyIncentivesRules {
  55 + if updateCooperationContractCommand.MoneyIncentivesRules[j].MoneyIncentivesRuleId == "" {
  56 + updateCooperationContractCommand.MoneyIncentivesRules[j].MoneyIncentivesRuleId = "0"
  57 + }
  58 + }
  59 + }
  60 + // 承接人列表校验
  61 + if len(updateCooperationContractCommand.Undertakers) < 1 {
  62 + validation.Error("承接人不能为空")
  63 + } else {
  64 + for i, _ := range updateCooperationContractCommand.Undertakers {
  65 + if updateCooperationContractCommand.Undertakers[i].UndertakerId == "" {
  66 + updateCooperationContractCommand.Undertakers[i].UndertakerId = "0"
  67 + }
  68 + }
  69 + }
  70 +}
  71 +
  72 +func (updateCooperationContractCommand *UpdateCooperationContractCommand) ValidateCommand() error {
  73 + valid := validation.Validation{}
  74 + b, err := valid.Valid(updateCooperationContractCommand)
  75 + if err != nil {
  76 + return err
  77 + }
  78 + if !b {
  79 + elem := reflect.TypeOf(updateCooperationContractCommand).Elem()
  80 + for _, validErr := range valid.Errors {
  81 + field, isExist := elem.FieldByName(validErr.Field)
  82 + if isExist {
  83 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  84 + } else {
  85 + return fmt.Errorf(validErr.Message)
  86 + }
  87 + }
  88 + }
  89 + return nil
  90 +}
  1 +package dto
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models"
  6 +)
  7 +
  8 +type CooperationContractByUndertakerDto struct {
  9 + // 承接人ID
  10 + UndertakerId int64 `json:"undertakerId,string"`
  11 + // 承接人编号
  12 + UndertakerCode string `json:"undertakerCode"`
  13 + // 承接人姓名
  14 + UndertakerName string `json:"undertakerName"`
  15 + // 承接人电话
  16 + UndertakerPhone string `json:"undertakerPhone"`
  17 + // 项目合约编号
  18 + CooperationContractNumber string `json:"cooperationContractNumber"`
  19 + // 项目合约名称
  20 + CooperationContractName string `json:"cooperationContractName"`
  21 + // 项目合约状态
  22 + CooperationContractStatus int32 `json:"cooperationContractStatus"`
  23 + // 共创描述
  24 + CooperationContractDescription string `json:"cooperationContractDescription"`
  25 + // 合同附件
  26 + Attachment []*domain.Attachment `json:"attachment"`
  27 + // 发起人姓名
  28 + SponsorName string `json:"sponsorName"`
  29 + // 发起部门名称
  30 + DepartmentName string `json:"departmentName"`
  31 + // 共创模式名称
  32 + CooperationModeName string `json:"cooperationModeName"`
  33 + // 组织机构名称
  34 + OrgName string `json:"orgName"`
  35 +}
  36 +
  37 +func (dto *CooperationContractByUndertakerDto) LoadDto(contractByUndertaker *models.CooperationContractByUndertaker) error {
  38 + dto.UndertakerId = contractByUndertaker.CooperationContractUndertakerId
  39 + dto.UndertakerCode = contractByUndertaker.UndertakerCode
  40 + dto.UndertakerName = contractByUndertaker.UndertakerName
  41 + dto.UndertakerPhone = contractByUndertaker.UndertakerPhone
  42 + dto.CooperationContractNumber = contractByUndertaker.CooperationContractNumber
  43 + dto.CooperationContractName = contractByUndertaker.CooperationContractName
  44 + dto.CooperationContractStatus = contractByUndertaker.ContractStatus
  45 + dto.CooperationContractDescription = contractByUndertaker.CooperationContractDescription
  46 + dto.Attachment = contractByUndertaker.ContractAttachment
  47 + dto.SponsorName = contractByUndertaker.CooperationContractSponsor.UserName
  48 + if contractByUndertaker.Department != nil {
  49 + dto.DepartmentName = contractByUndertaker.Department.DepartmentName
  50 + }
  51 + dto.CooperationModeName = contractByUndertaker.CooperationModeName
  52 + if contractByUndertaker.Org != nil {
  53 + dto.OrgName = contractByUndertaker.Org.OrgName
  54 + }
  55 + return nil
  56 +}
  1 +package dto
  2 +
  3 +import "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
  4 +
  5 +type CooperationContractDto struct {
  6 + *domain.CooperationContract
  7 + // 可以去除勾选的共创项目承接对象列表
  8 + UndertakerTypesUncheckedAvailable []int32 `json:"undertakerTypesUncheckedAvailable"`
  9 +}
  10 +
  11 +func (dto *CooperationContractDto) LoadDto(contract *domain.CooperationContract, undertakerTypesUncheckedAvailable []int32) error {
  12 + dto.CooperationContract = contract
  13 + dto.UndertakerTypesUncheckedAvailable = undertakerTypesUncheckedAvailable
  14 + return nil
  15 +}
  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 GetCooperationContractQuery struct {
  12 + // 共创合约ID
  13 + CooperationContractId int64 `cname:"共创合约ID" json:"cooperationContractId" valid:"Required"`
  14 + // 发起人uid
  15 + SponsorUid string `cname:"发起人UID" json:"sponsorUid,omitempty"`
  16 + // 公司ID,通过集成REST上下文获取
  17 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  18 + // 组织机构ID
  19 + OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"`
  20 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  21 + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"`
  22 + // 用户基础数据id
  23 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"`
  24 +}
  25 +
  26 +func (getCooperationContractQuery *GetCooperationContractQuery) Valid(validation *validation.Validation) {
  27 + //validation.SetError("CustomValid", "未实现的自定义认证")
  28 +}
  29 +
  30 +func (getCooperationContractQuery *GetCooperationContractQuery) ValidateQuery() error {
  31 + valid := validation.Validation{}
  32 + b, err := valid.Valid(getCooperationContractQuery)
  33 + if err != nil {
  34 + return err
  35 + }
  36 + if !b {
  37 + elem := reflect.TypeOf(getCooperationContractQuery).Elem()
  38 + for _, validErr := range valid.Errors {
  39 + field, isExist := elem.FieldByName(validErr.Field)
  40 + if isExist {
  41 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  42 + } else {
  43 + return fmt.Errorf(validErr.Message)
  44 + }
  45 + }
  46 + }
  47 + return nil
  48 +}
  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 ListCooperationContractQuery struct {
  12 + // 页面大小
  13 + PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
  14 + // 页面大小
  15 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  16 + // 公司ID,通过集成REST上下文获取
  17 + CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"`
  18 + // 组织机构ID
  19 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  20 + // 关联的组织机构ID列表
  21 + OrgIds []int64 `cname:"关联的组织机构ID列表" json:"orgIds"`
  22 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  23 + UserId int64 `cname:"用户ID" json:"userId"`
  24 + // 用户基础数据id
  25 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  26 +}
  27 +
  28 +func (listCooperationContractQuery *ListCooperationContractQuery) Valid(validation *validation.Validation) {
  29 + //validation.SetError("CustomValid", "未实现的自定义认证")
  30 +}
  31 +
  32 +func (listCooperationContractQuery *ListCooperationContractQuery) ValidateQuery() error {
  33 + valid := validation.Validation{}
  34 + b, err := valid.Valid(listCooperationContractQuery)
  35 + if err != nil {
  36 + return err
  37 + }
  38 + if !b {
  39 + elem := reflect.TypeOf(listCooperationContractQuery).Elem()
  40 + for _, validErr := range valid.Errors {
  41 + field, isExist := elem.FieldByName(validErr.Field)
  42 + if isExist {
  43 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  44 + } else {
  45 + return fmt.Errorf(validErr.Message)
  46 + }
  47 + }
  48 + }
  49 + return nil
  50 +}
  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 SearchCooperationContractQuery struct {
  12 + // 页面大小
  13 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  14 + // 页面大小
  15 + PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
  16 + // 共创合约编号
  17 + CooperationContractNumber string `cname:"共创合约编号" json:"cooperationContractNumber,omitempty"`
  18 + // 发起人姓名
  19 + SponsorName string `cname:"发起人姓名" json:"sponsorName,omitempty"`
  20 + // 激励类型
  21 + IncentivesType int32 `cname:"激励类型" json:"incentivesType,omitempty"`
  22 + // 合约状态
  23 + Status int32 `cname:"合约状态" json:"status,omitempty"`
  24 + // 公司ID,通过集成REST上下文获取
  25 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  26 + // 组织机构ID
  27 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  28 + // 关联的组织机构ID列表
  29 + OrgIds []int64 `cname:"关联的组织机构ID列表" json:"orgIds"`
  30 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  31 + UserId int64 `cname:"用户ID" json:"userId"`
  32 + // 用户基础数据id
  33 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  34 +}
  35 +
  36 +func (searchCooperationContractQuery *SearchCooperationContractQuery) Valid(validation *validation.Validation) {
  37 +}
  38 +
  39 +func (searchCooperationContractQuery *SearchCooperationContractQuery) ValidateQuery() error {
  40 + valid := validation.Validation{}
  41 + b, err := valid.Valid(searchCooperationContractQuery)
  42 + if err != nil {
  43 + return err
  44 + }
  45 + if !b {
  46 + elem := reflect.TypeOf(searchCooperationContractQuery).Elem()
  47 + for _, validErr := range valid.Errors {
  48 + field, isExist := elem.FieldByName(validErr.Field)
  49 + if isExist {
  50 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  51 + } else {
  52 + return fmt.Errorf(validErr.Message)
  53 + }
  54 + }
  55 + }
  56 + return nil
  57 +}
  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 SearchCooperationContractByUndertakerQuery struct {
  12 + // 共创合约名称
  13 + CooperationContractName string `cname:"共创合约名称" json:"cooperationContractName,omitempty"`
  14 + // 项目发起人姓名
  15 + SponsorName string `cname:"项目发起人姓名" json:"sponsorName,omitempty"`
  16 + // 公司ID,通过集成REST上下文获取
  17 + CompanyId int64 `cname:"公司ID" json:"companyId"`
  18 + // 组织机构ID
  19 + OrgId int64 `cname:"组织机构ID" json:"orgId"`
  20 + // 关联的组织机构ID列表
  21 + OrgIds []int64 `cname:"关联的组织机构ID列表" json:"orgIds"`
  22 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  23 + UserId int64 `cname:"用户ID" json:"userId"`
  24 + // 用户基础数据id
  25 + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"`
  26 + // 页面大小
  27 + PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
  28 + // 页面大小
  29 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  30 +}
  31 +
  32 +func (searchCooperationContractByUndertakerQuery *SearchCooperationContractByUndertakerQuery) Valid(validation *validation.Validation) {
  33 + //validation.SetError("CustomValid", "未实现的自定义认证")
  34 +}
  35 +
  36 +func (searchCooperationContractByUndertakerQuery *SearchCooperationContractByUndertakerQuery) ValidateQuery() error {
  37 + valid := validation.Validation{}
  38 + b, err := valid.Valid(searchCooperationContractByUndertakerQuery)
  39 + if err != nil {
  40 + return err
  41 + }
  42 + if !b {
  43 + elem := reflect.TypeOf(searchCooperationContractByUndertakerQuery).Elem()
  44 + for _, validErr := range valid.Errors {
  45 + field, isExist := elem.FieldByName(validErr.Field)
  46 + if isExist {
  47 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  48 + } else {
  49 + return fmt.Errorf(validErr.Message)
  50 + }
  51 + }
  52 + }
  53 + return nil
  54 +}