Merge branch 'dev' into test
# Conflicts: # deploy/k8s/test/allied-creation-cooperation.yaml
正在显示
67 个修改的文件
包含
2145 行增加
和
586 行删除
不能预览此文件类型
| @@ -4,7 +4,7 @@ ENV APP_DIR $GOPATH/src/allied-creation-cooperation | @@ -4,7 +4,7 @@ ENV APP_DIR $GOPATH/src/allied-creation-cooperation | ||
| 4 | RUN mkdir -p $APP_DIR | 4 | RUN mkdir -p $APP_DIR |
| 5 | WORKDIR $APP_DIR/ | 5 | WORKDIR $APP_DIR/ |
| 6 | COPY ./pkg pkg | 6 | COPY ./pkg pkg |
| 7 | -# COPY ./conf conf | 7 | +COPY ./config config |
| 8 | COPY ./go.mod go.mod | 8 | COPY ./go.mod go.mod |
| 9 | COPY ./go.sum go.sum | 9 | COPY ./go.sum go.sum |
| 10 | COPY ./main.go main.go | 10 | COPY ./main.go main.go |
config/fjmaimaimai.com.key
0 → 100644
| 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----- |
config/fjmaimaimai.com_bundle.crt
0 → 100644
| 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----- |
| @@ -54,10 +54,16 @@ spec: | @@ -54,10 +54,16 @@ spec: | ||
| 54 | env: | 54 | env: |
| 55 | - name: LOG_LEVEL | 55 | - name: LOG_LEVEL |
| 56 | value: "debug" | 56 | value: "debug" |
| 57 | + - name: LOG_FRAMEWORK | ||
| 58 | + value: "beego" | ||
| 59 | + - name: LOG_TYPE | ||
| 60 | + value: "file" | ||
| 57 | - name: ERROR_BASE_CODE | 61 | - name: ERROR_BASE_CODE |
| 58 | value: "1" | 62 | value: "1" |
| 59 | - name: ERROR_BASE_CODE_MULTIPLE | 63 | - name: ERROR_BASE_CODE_MULTIPLE |
| 60 | value: "1000" | 64 | value: "1000" |
| 65 | + - name: ENABLE_KAFKA_LOG | ||
| 66 | + value: "false" | ||
| 61 | - name: USER_MODULE_HOST | 67 | - name: USER_MODULE_HOST |
| 62 | value: "http://allied-creation-user-dev.fjmaimaimai.com" | 68 | value: "http://allied-creation-user-dev.fjmaimaimai.com" |
| 63 | - name: REDIS_HOST | 69 | - name: REDIS_HOST |
| @@ -61,8 +61,7 @@ spec: | @@ -61,8 +61,7 @@ spec: | ||
| 61 | - name: LOG_FRAMEWORK | 61 | - name: LOG_FRAMEWORK |
| 62 | value: "beego" | 62 | value: "beego" |
| 63 | - name: LOG_TYPE | 63 | - name: LOG_TYPE |
| 64 | - value: "file" | ||
| 65 | - - name: ERROR_BASE_CODE | 64 | + value: "file" - name: ERROR_BASE_CODE |
| 66 | value: "1" | 65 | value: "1" |
| 67 | - name: ERROR_BASE_CODE_MULTIPLE | 66 | - name: ERROR_BASE_CODE_MULTIPLE |
| 68 | value: "1000" | 67 | value: "1000" |
| @@ -13,15 +13,15 @@ require ( | @@ -13,15 +13,15 @@ require ( | ||
| 13 | github.com/google/go-querystring v1.1.0 // indirect | 13 | github.com/google/go-querystring v1.1.0 // indirect |
| 14 | github.com/gorilla/websocket v1.4.2 // indirect | 14 | github.com/gorilla/websocket v1.4.2 // indirect |
| 15 | github.com/imkira/go-interpol v1.1.0 // indirect | 15 | github.com/imkira/go-interpol v1.1.0 // indirect |
| 16 | - github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect | ||
| 17 | github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6 | 16 | github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6 |
| 18 | github.com/mattn/go-colorable v0.1.8 // indirect | 17 | github.com/mattn/go-colorable v0.1.8 // indirect |
| 19 | github.com/moul/http2curl v1.0.0 // indirect | 18 | github.com/moul/http2curl v1.0.0 // indirect |
| 19 | + github.com/olivere/elastic/v7 v7.0.28 | ||
| 20 | github.com/onsi/ginkgo v1.14.2 | 20 | github.com/onsi/ginkgo v1.14.2 |
| 21 | github.com/onsi/gomega v1.10.3 | 21 | github.com/onsi/gomega v1.10.3 |
| 22 | github.com/sergi/go-diff v1.2.0 // indirect | 22 | github.com/sergi/go-diff v1.2.0 // indirect |
| 23 | github.com/shopspring/decimal v1.2.0 | 23 | github.com/shopspring/decimal v1.2.0 |
| 24 | - github.com/sirupsen/logrus v1.8.1 // indirect | 24 | + github.com/sirupsen/logrus v1.8.1 |
| 25 | github.com/smartystreets/goconvey v1.6.4 // indirect | 25 | github.com/smartystreets/goconvey v1.6.4 // indirect |
| 26 | github.com/valyala/fasthttp v1.28.0 // indirect | 26 | github.com/valyala/fasthttp v1.28.0 // indirect |
| 27 | github.com/xeipuuv/gojsonschema v1.2.0 // indirect | 27 | github.com/xeipuuv/gojsonschema v1.2.0 // indirect |
| @@ -29,4 +29,5 @@ require ( | @@ -29,4 +29,5 @@ require ( | ||
| 29 | github.com/yudai/gojsondiff v1.0.0 // indirect | 29 | github.com/yudai/gojsondiff v1.0.0 // indirect |
| 30 | github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect | 30 | github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect |
| 31 | github.com/yudai/pp v2.0.1+incompatible // indirect | 31 | github.com/yudai/pp v2.0.1+incompatible // indirect |
| 32 | + gopkg.in/sohlich/elogrus.v7 v7.0.0 | ||
| 32 | ) | 33 | ) |
| 1 | cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | 1 | cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= |
| 2 | +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||
| 2 | github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | 3 | 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/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= |
| 5 | +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= | ||
| 4 | github.com/Shopify/sarama v1.25.0 h1:ch1ywjRLjfJtU+EaiJ+l0rWffQ6TRpyYmW4DX7Cb2SU= | 6 | 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= | 7 | 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= | 8 | github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= |
| @@ -15,6 +17,9 @@ github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGn | @@ -15,6 +17,9 @@ github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGn | ||
| 15 | github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= | 17 | 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= | 18 | github.com/andybalholm/brotli v1.0.2 h1:JKnhI/XQ75uFBTiuzXpzFrUriDPiZjlOSzh6wXogP0E= |
| 17 | github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= | 19 | github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= |
| 20 | +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= | ||
| 21 | +github.com/aws/aws-sdk-go v1.19.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= | ||
| 22 | +github.com/aws/aws-sdk-go v1.40.32/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= | ||
| 18 | github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE= | 23 | 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= | 24 | 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= | 25 | github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ= |
| @@ -30,6 +35,7 @@ github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+ | @@ -30,6 +35,7 @@ github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+ | ||
| 30 | github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | 35 | 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= | 36 | 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= | 37 | github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= |
| 38 | +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||
| 33 | github.com/coreos/etcd v3.3.25+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= | 39 | 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= | 40 | 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= | 41 | github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= |
| @@ -49,10 +55,13 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 | @@ -49,10 +55,13 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 | ||
| 49 | github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= | 55 | github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= |
| 50 | github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= | 56 | 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= | 57 | github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= |
| 58 | +github.com/elastic/go-elasticsearch/v6 v6.8.5 h1:U2HtkBseC1FNBmDr0TR2tKltL6FxoY+niDAlj5M8TK8= | ||
| 52 | github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= | 59 | github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= |
| 53 | github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= | 60 | github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= |
| 54 | github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= | 61 | github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= |
| 62 | +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||
| 55 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | 63 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= |
| 64 | +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||
| 56 | github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | 65 | github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= |
| 57 | github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 h1:DddqAaWDpywytcG8w/qoQ5sAN8X12d3Z3koB0C3Rxsc= | 66 | github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 h1:DddqAaWDpywytcG8w/qoQ5sAN8X12d3Z3koB0C3Rxsc= |
| 58 | github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= | 67 | github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= |
| @@ -82,9 +91,12 @@ github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gG | @@ -82,9 +91,12 @@ github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gG | ||
| 82 | github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= | 91 | github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= |
| 83 | github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= | 92 | github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= |
| 84 | github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | 93 | github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= |
| 94 | +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | ||
| 85 | github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= | 95 | github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= |
| 86 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | 96 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= |
| 97 | +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||
| 87 | github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= | 98 | github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= |
| 99 | +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= | ||
| 88 | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | 100 | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= |
| 89 | github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | 101 | github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= |
| 90 | github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | 102 | github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= |
| @@ -109,21 +121,27 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw | @@ -109,21 +121,27 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw | ||
| 109 | github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | 121 | github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
| 110 | github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | 122 | github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
| 111 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | 123 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
| 112 | -github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= | 124 | +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
| 113 | github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | 125 | github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
| 126 | +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= | ||
| 127 | +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||
| 114 | github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= | 128 | github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= |
| 115 | github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= | 129 | github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= |
| 116 | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | 130 | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= |
| 117 | github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= | 131 | github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= |
| 118 | -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= | ||
| 119 | github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | 132 | github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= |
| 133 | +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= | ||
| 134 | +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||
| 120 | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= | 135 | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= |
| 121 | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= | 136 | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= |
| 137 | +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= | ||
| 138 | +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= | ||
| 122 | github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= | 139 | github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= |
| 123 | github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | 140 | github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= |
| 124 | github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= | 141 | github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= |
| 125 | github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= | 142 | github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= |
| 126 | github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= | 143 | github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= |
| 144 | +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= | ||
| 127 | github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= | 145 | github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= |
| 128 | github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= | 146 | github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= |
| 129 | github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | 147 | github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= |
| @@ -133,13 +151,16 @@ github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03 h1:FUwcHNlEqkqLjL | @@ -133,13 +151,16 @@ github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03 h1:FUwcHNlEqkqLjL | ||
| 133 | github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= | 151 | github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= |
| 134 | github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= | 152 | github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= |
| 135 | github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= | 153 | github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= |
| 154 | +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= | ||
| 155 | +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= | ||
| 156 | +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= | ||
| 157 | +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= | ||
| 158 | +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= | ||
| 136 | github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | 159 | github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= |
| 137 | github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | 160 | github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= |
| 138 | github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= | 161 | github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= |
| 139 | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | 162 | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= |
| 140 | github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= | 163 | github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= |
| 141 | -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= | ||
| 142 | -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= | ||
| 143 | github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= | 164 | github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= |
| 144 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | 165 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= |
| 145 | github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= | 166 | github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= |
| @@ -158,6 +179,10 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= | @@ -158,6 +179,10 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= | ||
| 158 | github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6 h1:nyhVnOIXsESuhZ95Ak6VRSF+0fHeKlYWq0EvHByt5RU= | 179 | github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6 h1:nyhVnOIXsESuhZ95Ak6VRSF+0fHeKlYWq0EvHByt5RU= |
| 159 | github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6/go.mod h1:ZZuSWicGxpgN0OulARhuKwFJuJ9we0otaPVAJtz10yk= | 180 | github.com/linmadan/egglib-go v0.0.0-20210527091316-06b0732fb5f6/go.mod h1:ZZuSWicGxpgN0OulARhuKwFJuJ9we0otaPVAJtz10yk= |
| 160 | github.com/magefile/mage v1.10.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= | 181 | github.com/magefile/mage v1.10.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= |
| 182 | +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= | ||
| 183 | +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= | ||
| 184 | +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= | ||
| 185 | +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= | ||
| 161 | github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= | 186 | github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= |
| 162 | github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= | 187 | github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= |
| 163 | github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= | 188 | github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= |
| @@ -179,21 +204,29 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWb | @@ -179,21 +204,29 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWb | ||
| 179 | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= | 204 | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= |
| 180 | github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= | 205 | github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= |
| 181 | github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= | 206 | github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= |
| 207 | +github.com/olivere/elastic/v7 v7.0.4/go.mod h1:l4YWa59iTCcOJQXI5ZtxVjcd3p5U8GCxVgvzHZqGn3o= | ||
| 208 | +github.com/olivere/elastic/v7 v7.0.28 h1:KAP4EuaEcvPJknRNkAAso1xeu0C1+/CeDQsxj9Cw9Fg= | ||
| 209 | +github.com/olivere/elastic/v7 v7.0.28/go.mod h1:DzHQoqd6YqSuvF1lk/fR4cW4FNUNzSD5/F5MBm3GRMo= | ||
| 182 | github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | 210 | github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= |
| 211 | +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||
| 183 | github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | 212 | github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= |
| 184 | github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= | 213 | github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= |
| 185 | github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= | 214 | github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= |
| 186 | github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M= | 215 | github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M= |
| 187 | github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= | 216 | github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= |
| 217 | +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||
| 188 | github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | 218 | github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= |
| 189 | github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= | 219 | github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= |
| 190 | github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= | 220 | github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= |
| 191 | github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= | 221 | github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= |
| 192 | github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= | 222 | github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= |
| 223 | +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= | ||
| 193 | github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= | 224 | github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= |
| 225 | +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= | ||
| 194 | github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | 226 | github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= |
| 195 | github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= | 227 | github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= |
| 196 | github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= | 228 | github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= |
| 229 | +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | ||
| 197 | github.com/pierrec/lz4 v2.2.6+incompatible h1:6aCX4/YZ9v8q69hTyiR7dNLnTA3fgtKHVVW5BCd5Znw= | 230 | github.com/pierrec/lz4 v2.2.6+incompatible h1:6aCX4/YZ9v8q69hTyiR7dNLnTA3fgtKHVVW5BCd5Znw= |
| 198 | github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | 231 | github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= |
| 199 | github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | 232 | github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= |
| @@ -203,18 +236,22 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE | @@ -203,18 +236,22 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE | ||
| 203 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | 236 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= |
| 204 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | 237 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
| 205 | github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= | 238 | github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= |
| 239 | +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= | ||
| 206 | github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= | 240 | github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= |
| 207 | github.com/prometheus/client_golang v1.7.0 h1:wCi7urQOGBsYcQROHqpUUX4ct84xp40t9R9JX0FuA/U= | 241 | github.com/prometheus/client_golang v1.7.0 h1:wCi7urQOGBsYcQROHqpUUX4ct84xp40t9R9JX0FuA/U= |
| 208 | github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= | 242 | github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= |
| 209 | github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= | 243 | github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= |
| 244 | +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= | ||
| 210 | github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | 245 | github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= |
| 211 | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | 246 | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= |
| 212 | github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= | 247 | github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= |
| 213 | github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | 248 | github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= |
| 249 | +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | ||
| 214 | github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | 250 | github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= |
| 215 | github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= | 251 | github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= |
| 216 | github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= | 252 | github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= |
| 217 | github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | 253 | github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= |
| 254 | +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | ||
| 218 | github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= | 255 | github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= |
| 219 | github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= | 256 | github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= |
| 220 | github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= | 257 | github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= |
| @@ -235,10 +272,13 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd | @@ -235,10 +272,13 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd | ||
| 235 | github.com/sirupsen/logrus v1.8.0/go.mod h1:4GuYW9TZmE769R5STWrRakJc4UqQ3+QQ95fyz7ENv1A= | 272 | github.com/sirupsen/logrus v1.8.0/go.mod h1:4GuYW9TZmE769R5STWrRakJc4UqQ3+QQ95fyz7ENv1A= |
| 236 | github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= | 273 | github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= |
| 237 | github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= | 274 | github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= |
| 238 | -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= | ||
| 239 | github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= | 275 | github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= |
| 276 | +github.com/smartystreets/assertions v1.1.1 h1:T/YLemO5Yp7KPzS+lVtu+WsHn8yoSwTfItdAd1r3cck= | ||
| 277 | +github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= | ||
| 278 | +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= | ||
| 240 | github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= | 279 | github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= |
| 241 | github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= | 280 | github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= |
| 281 | +github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= | ||
| 242 | github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= | 282 | github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= |
| 243 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | 283 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= |
| 244 | github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | 284 | github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= |
| @@ -287,6 +327,8 @@ github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZ | @@ -287,6 +327,8 @@ github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZ | ||
| 287 | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | 327 | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= |
| 288 | github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= | 328 | github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= |
| 289 | go.etcd.io/etcd v3.3.25+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= | 329 | go.etcd.io/etcd v3.3.25+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= |
| 330 | +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= | ||
| 331 | +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= | ||
| 290 | go.opentelemetry.io/otel v0.17.0 h1:6MKOu8WY4hmfpQ4oQn34u6rYhnf2sWf1LXYO/UFm71U= | 332 | go.opentelemetry.io/otel v0.17.0 h1:6MKOu8WY4hmfpQ4oQn34u6rYhnf2sWf1LXYO/UFm71U= |
| 291 | go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9eqkC9s= | 333 | go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9eqkC9s= |
| 292 | go.opentelemetry.io/otel/metric v0.17.0 h1:t+5EioN8YFXQ2EH+1j6FHCKMUj+57zIDSnSGr/mWuug= | 334 | go.opentelemetry.io/otel/metric v0.17.0 h1:t+5EioN8YFXQ2EH+1j6FHCKMUj+57zIDSnSGr/mWuug= |
| @@ -312,6 +354,7 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 | @@ -312,6 +354,7 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 | ||
| 312 | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | 354 | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= |
| 313 | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | 355 | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= |
| 314 | golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | 356 | golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= |
| 357 | +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||
| 315 | golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | 358 | golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= |
| 316 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | 359 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= |
| 317 | golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= | 360 | golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= |
| @@ -323,6 +366,8 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r | @@ -323,6 +366,8 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r | ||
| 323 | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | 366 | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= |
| 324 | golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | 367 | golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= |
| 325 | golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | 368 | golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= |
| 369 | +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||
| 370 | +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||
| 326 | golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | 371 | golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= |
| 327 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | 372 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= |
| 328 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | 373 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= |
| @@ -334,12 +379,15 @@ golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwY | @@ -334,12 +379,15 @@ golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwY | ||
| 334 | golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | 379 | golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= |
| 335 | golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | 380 | golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= |
| 336 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | 381 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= |
| 337 | -golang.org/x/net v0.0.0-20210510120150-4163338589ed h1:p9UgmWI9wKpfYmgaV/IZKGdXc5qEK45tDwwwDyjS26I= | ||
| 338 | golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | 382 | golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= |
| 383 | +golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= | ||
| 384 | +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||
| 339 | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | 385 | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= |
| 386 | +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||
| 340 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | 387 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= |
| 341 | golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | 388 | golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= |
| 342 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | 389 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= |
| 390 | +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 343 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | 391 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= |
| 344 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | 392 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= |
| 345 | golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | 393 | golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= |
| @@ -347,6 +395,7 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h | @@ -347,6 +395,7 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h | ||
| 347 | golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | 395 | golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= |
| 348 | golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | 396 | golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= |
| 349 | golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | 397 | golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= |
| 398 | +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||
| 350 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | 399 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= |
| 351 | golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | 400 | golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= |
| 352 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | 401 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= |
| @@ -375,11 +424,13 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | @@ -375,11 +424,13 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | ||
| 375 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | 424 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= |
| 376 | golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= | 425 | golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= |
| 377 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | 426 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= |
| 427 | +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||
| 378 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | 428 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= |
| 379 | golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | 429 | golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= |
| 380 | golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | 430 | golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= |
| 381 | golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= | 431 | golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= |
| 382 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | 432 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= |
| 433 | +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||
| 383 | golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | 434 | golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= |
| 384 | golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= | 435 | golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= |
| 385 | golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= | 436 | golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= |
| @@ -395,15 +446,20 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T | @@ -395,15 +446,20 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T | ||
| 395 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | 446 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= |
| 396 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= | 447 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= |
| 397 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | 448 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= |
| 449 | +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= | ||
| 398 | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | 450 | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= |
| 399 | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | 451 | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= |
| 400 | google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= | 452 | google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= |
| 453 | +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | ||
| 401 | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | 454 | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= |
| 402 | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= | 455 | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= |
| 456 | +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= | ||
| 403 | google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= | 457 | google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= |
| 404 | google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | 458 | google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= |
| 459 | +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= | ||
| 405 | google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | 460 | google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= |
| 406 | google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | 461 | google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= |
| 462 | +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= | ||
| 407 | google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | 463 | google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= |
| 408 | google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | 464 | google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= |
| 409 | google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | 465 | google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= |
| @@ -433,6 +489,8 @@ gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuv | @@ -433,6 +489,8 @@ gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuv | ||
| 433 | gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU= | 489 | gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU= |
| 434 | gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= | 490 | gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= |
| 435 | gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= | 491 | gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= |
| 492 | +gopkg.in/sohlich/elogrus.v7 v7.0.0 h1:w4pw1DTXK/bqliKbcJk7hSXKrMM/jPdvpaROC9WSK+8= | ||
| 493 | +gopkg.in/sohlich/elogrus.v7 v7.0.0/go.mod h1:nGmb0kLyAPGwIHLpHNlMlz0l0OfSaFatKgfpuO/+fnY= | ||
| 436 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= | 494 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= |
| 437 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= | 495 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= |
| 438 | gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | 496 | gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= |
| @@ -444,6 +502,7 @@ gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= | @@ -444,6 +502,7 @@ gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= | ||
| 444 | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | 502 | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= |
| 445 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | 503 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= |
| 446 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | 504 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
| 505 | +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||
| 447 | honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | 506 | honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= |
| 448 | honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | 507 | honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= |
| 449 | honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= | 508 | honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= |
| 1 | package main | 1 | package main |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "fmt" | ||
| 4 | "github.com/beego/beego/v2/server/web" | 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" | ||
| 5 | _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg" | 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" | ||
| 6 | _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/port/beego" | 12 | _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/port/beego" |
| 7 | ) | 13 | ) |
| 8 | 14 | ||
| 9 | func main() { | 15 | func main() { |
| 10 | // web主服务 | 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 | + | ||
| 11 | web.Run() | 27 | web.Run() |
| 12 | } | 28 | } |
不能预览此文件类型
| @@ -10,15 +10,15 @@ import ( | @@ -10,15 +10,15 @@ import ( | ||
| 10 | 10 | ||
| 11 | type ApplyForCooperationCommand struct { | 11 | type ApplyForCooperationCommand struct { |
| 12 | // 共创申请描述附件 | 12 | // 共创申请描述附件 |
| 13 | - CooperationApplicationAttachment []*domain.Attachment `cname:"共创申请描述附件" json:"cooperationApplicationAttachment" valid:"Required"` | 13 | + CooperationApplicationAttachment []*domain.Attachment `cname:"共创申请描述附件" json:"cooperationApplicationAttachment"` |
| 14 | // 共创申请描述 | 14 | // 共创申请描述 |
| 15 | CooperationApplicationDescription string `cname:"共创申请描述" json:"cooperationApplicationDescription,omitempty"` | 15 | CooperationApplicationDescription string `cname:"共创申请描述" json:"cooperationApplicationDescription,omitempty"` |
| 16 | // 申请人ID | 16 | // 申请人ID |
| 17 | - UserId int64 `cname:"申请人ID" json:"userId" valid:"Required"` | 17 | + UserId int64 `cname:"申请人ID" json:"userId"` |
| 18 | // 用户基本id | 18 | // 用户基本id |
| 19 | - UserBaseId int64 `cname:"用户基本数据ID" json:"userBaseId" valid:"Required"` | 19 | + UserBaseId int64 `cname:"用户基本数据ID" json:"userBaseId"` |
| 20 | // 组织机构ID | 20 | // 组织机构ID |
| 21 | - OrgId int64 `cname:"组织机构ID" json:"orgId" valid:"Required"` | 21 | + OrgId int64 `cname:"组织机构ID" json:"orgId"` |
| 22 | // 公司ID,通过集成REST上下文获取 | 22 | // 公司ID,通过集成REST上下文获取 |
| 23 | CompanyId int64 `cname:"公司ID" json:"companyId"` | 23 | CompanyId int64 `cname:"公司ID" json:"companyId"` |
| 24 | // 共创项目ID | 24 | // 共创项目ID |
| @@ -26,7 +26,6 @@ type ApplyForCooperationCommand struct { | @@ -26,7 +26,6 @@ type ApplyForCooperationCommand struct { | ||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | func (applyForCooperationCommand *ApplyForCooperationCommand) Valid(validation *validation.Validation) { | 28 | func (applyForCooperationCommand *ApplyForCooperationCommand) Valid(validation *validation.Validation) { |
| 29 | - //validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 30 | } | 29 | } |
| 31 | 30 | ||
| 32 | func (applyForCooperationCommand *ApplyForCooperationCommand) ValidateCommand() error { | 31 | func (applyForCooperationCommand *ApplyForCooperationCommand) ValidateCommand() error { |
| @@ -98,7 +98,11 @@ func (data *CooperationApplicationDto) LoadDto(a *domain.CooperationApplication) | @@ -98,7 +98,11 @@ func (data *CooperationApplicationDto) LoadDto(a *domain.CooperationApplication) | ||
| 98 | data.CooperationApplyTime = a.CooperationApplyTime.Unix() * 1000 | 98 | data.CooperationApplyTime = a.CooperationApplyTime.Unix() * 1000 |
| 99 | data.CooperationProject = data.LoadCooperationProject(a.CooperationProject) | 99 | data.CooperationProject = data.LoadCooperationProject(a.CooperationProject) |
| 100 | data.Org = data.LoadOrg(a.Org) | 100 | data.Org = data.LoadOrg(a.Org) |
| 101 | - data.IsCanceled = a.IsCanceled | 101 | + if a.IsCanceled == 1 { |
| 102 | + data.IsCanceled = false | ||
| 103 | + } else { | ||
| 104 | + data.IsCanceled = true | ||
| 105 | + } | ||
| 102 | data.Company = data.LoadCompany(a.Company) | 106 | data.Company = data.LoadCompany(a.Company) |
| 103 | } | 107 | } |
| 104 | 108 |
| @@ -17,6 +17,8 @@ type SearchCooperationApplicationQuery struct { | @@ -17,6 +17,8 @@ type SearchCooperationApplicationQuery struct { | ||
| 17 | ApplicantName string `cname:"申请人姓名" json:"applicantName,omitempty"` | 17 | ApplicantName string `cname:"申请人姓名" json:"applicantName,omitempty"` |
| 18 | // 共创申请审核状态,1待审核,2已同意,3已拒绝 | 18 | // 共创申请审核状态,1待审核,2已同意,3已拒绝 |
| 19 | CooperationApplicationStatus int32 `cname:"共创申请审核状态" json:"cooperationApplicationStatus,omitempty"` | 19 | CooperationApplicationStatus int32 `cname:"共创申请审核状态" json:"cooperationApplicationStatus,omitempty"` |
| 20 | + // 是否被取消标记 1正常,2取消,3所有 | ||
| 21 | + IsCanceled int32 `cname:"取消状态" json:"isCanceled,omitempty"` | ||
| 20 | // 页面大小 | 22 | // 页面大小 |
| 21 | PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"` | 23 | PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"` |
| 22 | // 页面大小 | 24 | // 页面大小 |
| @@ -10,6 +10,7 @@ import ( | @@ -10,6 +10,7 @@ import ( | ||
| 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" |
| 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
| 12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" | 12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" |
| 13 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | ||
| 13 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | 14 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" |
| 14 | "strconv" | 15 | "strconv" |
| 15 | "time" | 16 | "time" |
| @@ -45,15 +46,6 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | @@ -45,15 +46,6 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | ||
| 45 | cooperationProjectRepository = value | 46 | cooperationProjectRepository = value |
| 46 | } | 47 | } |
| 47 | 48 | ||
| 48 | - // 获取共创项目 | ||
| 49 | - cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{"cooperationProjectId": applyForCooperationCommand.CooperationProjectId}) | ||
| 50 | - if err != nil { | ||
| 51 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创项目不存在") | ||
| 52 | - } | ||
| 53 | - if cooperationProject == nil { | ||
| 54 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(applyForCooperationCommand.CooperationProjectId, 10))) | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | // 用户REST服务初始化 | 49 | // 用户REST服务初始化 |
| 58 | var userService service.UserService | 50 | var userService service.UserService |
| 59 | if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil { | 51 | if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil { |
| @@ -62,14 +54,6 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | @@ -62,14 +54,6 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | ||
| 62 | userService = value | 54 | userService = value |
| 63 | } | 55 | } |
| 64 | 56 | ||
| 65 | - // 获取申请人 | ||
| 66 | - var applicant *domain.User | ||
| 67 | - if data, err := userService.UserFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId, applyForCooperationCommand.UserId); err != nil { | ||
| 68 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败") | ||
| 69 | - } else { | ||
| 70 | - applicant = data | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | // 公司REST服务初始化 | 57 | // 公司REST服务初始化 |
| 74 | var companyService service.CompanyService | 58 | var companyService service.CompanyService |
| 75 | if value, err := factory.CreateCompanyService(map[string]interface{}{}); err != nil { | 59 | if value, err := factory.CreateCompanyService(map[string]interface{}{}); err != nil { |
| @@ -78,14 +62,6 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | @@ -78,14 +62,6 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | ||
| 78 | companyService = value | 62 | companyService = value |
| 79 | } | 63 | } |
| 80 | 64 | ||
| 81 | - // 获取公司信息 | ||
| 82 | - var company *domain.Company | ||
| 83 | - if data, err := companyService.CompanyFrom(applyForCooperationCommand.CompanyId); err != nil { | ||
| 84 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取公司信息失败") | ||
| 85 | - } else { | ||
| 86 | - company = data | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | // 组织机构REST服务初始化 | 65 | // 组织机构REST服务初始化 |
| 90 | var organizationService service.OrgService | 66 | var organizationService service.OrgService |
| 91 | if value, err := factory.CreateOrganizationService(map[string]interface{}{}); err != nil { | 67 | if value, err := factory.CreateOrganizationService(map[string]interface{}{}); err != nil { |
| @@ -94,32 +70,7 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | @@ -94,32 +70,7 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | ||
| 94 | organizationService = value | 70 | organizationService = value |
| 95 | } | 71 | } |
| 96 | 72 | ||
| 97 | - // 获取组织机构信息 | ||
| 98 | - var organization *domain.Org | ||
| 99 | - if data, err := organizationService.OrgFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId); err != nil { | ||
| 100 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取组织机构数据失败") | ||
| 101 | - } else { | ||
| 102 | - organization = data | ||
| 103 | - } | ||
| 104 | - | ||
| 105 | - newCooperationApplication := &domain.CooperationApplication{ | ||
| 106 | - CooperationApplicationApplicant: applicant, | ||
| 107 | - CooperationApplicationAttachment: applyForCooperationCommand.CooperationApplicationAttachment, | ||
| 108 | - CooperationApplicationDescription: applyForCooperationCommand.CooperationApplicationDescription, | ||
| 109 | - CooperationApplicationStatus: 1, | ||
| 110 | - CooperationApplicationVerifier: nil, | ||
| 111 | - CooperationApplicationVerifyDescription: "", | ||
| 112 | - CooperationApplicationVerifyTime: time.Time{}, | ||
| 113 | - CooperationApplyTime: time.Now(), | ||
| 114 | - CooperationProject: cooperationProject, | ||
| 115 | - Org: organization, | ||
| 116 | - IsCanceled: false, | ||
| 117 | - Company: company, | ||
| 118 | - CreatedAt: time.Now(), | ||
| 119 | - DeletedAt: time.Time{}, | ||
| 120 | - UpdatedAt: time.Time{}, | ||
| 121 | - } | ||
| 122 | - | 73 | + // 共创申请仓储初始化 |
| 123 | var cooperationApplicationRepository domain.CooperationApplicationRepository | 74 | var cooperationApplicationRepository domain.CooperationApplicationRepository |
| 124 | if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{ | 75 | if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{ |
| 125 | "transactionContext": transactionContext, | 76 | "transactionContext": transactionContext, |
| @@ -128,9 +79,141 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | @@ -128,9 +79,141 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | ||
| 128 | } else { | 79 | } else { |
| 129 | cooperationApplicationRepository = value | 80 | cooperationApplicationRepository = value |
| 130 | } | 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 | + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, 4) { // 非公开类型校验 | ||
| 126 | + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType) { | ||
| 127 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象") | ||
| 128 | + } | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + newCooperationApplication = &domain.CooperationApplication{ | ||
| 132 | + CooperationApplicationApplicant: applicant, | ||
| 133 | + CooperationApplicationAttachment: applyForCooperationCommand.CooperationApplicationAttachment, | ||
| 134 | + CooperationApplicationDescription: applyForCooperationCommand.CooperationApplicationDescription, | ||
| 135 | + CooperationApplicationStatus: 1, | ||
| 136 | + CooperationApplicationVerifier: nil, | ||
| 137 | + CooperationApplicationVerifyDescription: "", | ||
| 138 | + CooperationApplicationVerifyTime: time.Time{}, | ||
| 139 | + CooperationApplyTime: time.Now(), | ||
| 140 | + CooperationProject: cooperationProject, | ||
| 141 | + Org: cooperationProject.Org, | ||
| 142 | + IsCanceled: 1, | ||
| 143 | + Company: cooperationProject.Company, | ||
| 144 | + CreatedAt: time.Now(), | ||
| 145 | + DeletedAt: time.Time{}, | ||
| 146 | + UpdatedAt: time.Time{}, | ||
| 147 | + } | ||
| 148 | + } else { | ||
| 149 | + // 获取申请人 | ||
| 150 | + var applicant *domain.User | ||
| 151 | + if data, err := userService.UserFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId, applyForCooperationCommand.UserId); err != nil { | ||
| 152 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败") | ||
| 153 | + } else { | ||
| 154 | + applicant = data | ||
| 155 | + } | ||
| 156 | + | ||
| 157 | + // 获取公司信息 | ||
| 158 | + var company *domain.Company | ||
| 159 | + if data, err := companyService.CompanyFrom(applyForCooperationCommand.CompanyId); err != nil { | ||
| 160 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取公司信息失败") | ||
| 161 | + } else { | ||
| 162 | + company = data | ||
| 163 | + } | ||
| 164 | + | ||
| 165 | + // 获取组织机构信息 | ||
| 166 | + var organization *domain.Org | ||
| 167 | + if data, err := organizationService.OrgFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId); err != nil { | ||
| 168 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取组织机构数据失败") | ||
| 169 | + } else { | ||
| 170 | + organization = data | ||
| 171 | + } | ||
| 172 | + | ||
| 173 | + // 校验:同一个用户,不能多次申请同一个项目 | ||
| 174 | + applicationExist, _ := cooperationApplicationDao.CheckApplicationExist(map[string]interface{}{ | ||
| 175 | + "companyId": applyForCooperationCommand.CompanyId, | ||
| 176 | + "orgId": applyForCooperationCommand.OrgId, | ||
| 177 | + "applicantId": applicant.UserId, | ||
| 178 | + "cooperationProjectNumber": cooperationProject.CooperationProjectNumber, | ||
| 179 | + }) | ||
| 180 | + if applicationExist { | ||
| 181 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "抱歉,您已经申请过该项目") | ||
| 182 | + } | ||
| 183 | + | ||
| 184 | + // 校验:判断用户类型是否属于承接对象 | ||
| 185 | + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType) { | ||
| 186 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象") | ||
| 187 | + } | ||
| 188 | + | ||
| 189 | + newCooperationApplication = &domain.CooperationApplication{ | ||
| 190 | + CooperationApplicationApplicant: applicant, | ||
| 191 | + CooperationApplicationAttachment: applyForCooperationCommand.CooperationApplicationAttachment, | ||
| 192 | + CooperationApplicationDescription: applyForCooperationCommand.CooperationApplicationDescription, | ||
| 193 | + CooperationApplicationStatus: 1, | ||
| 194 | + CooperationApplicationVerifier: nil, | ||
| 195 | + CooperationApplicationVerifyDescription: "", | ||
| 196 | + CooperationApplicationVerifyTime: time.Time{}, | ||
| 197 | + CooperationApplyTime: time.Now(), | ||
| 198 | + CooperationProject: cooperationProject, | ||
| 199 | + Org: organization, | ||
| 200 | + IsCanceled: 1, | ||
| 201 | + Company: company, | ||
| 202 | + CreatedAt: time.Now(), | ||
| 203 | + DeletedAt: time.Time{}, | ||
| 204 | + UpdatedAt: time.Time{}, | ||
| 205 | + } | ||
| 206 | + } | ||
| 207 | + | ||
| 208 | + // 保存共创申请 | ||
| 131 | if cooperationApplication, err := cooperationApplicationRepository.Save(newCooperationApplication); err != nil { | 209 | if cooperationApplication, err := cooperationApplicationRepository.Save(newCooperationApplication); err != nil { |
| 132 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 210 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 133 | } else { | 211 | } else { |
| 212 | + // 更新共创项目申请人计数 | ||
| 213 | + cooperationProject.ApplicantCount = cooperationProject.ApplicantCount + 1 | ||
| 214 | + if _, err := cooperationProjectRepository.Save(cooperationProject); err != nil { | ||
| 215 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 216 | + } | ||
| 134 | if err := transactionContext.CommitTransaction(); err != nil { | 217 | if err := transactionContext.CommitTransaction(); err != nil { |
| 135 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 218 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 136 | } | 219 | } |
| @@ -195,6 +278,11 @@ func (cooperationApplicationService *CooperationApplicationService) ApprovalCoop | @@ -195,6 +278,11 @@ func (cooperationApplicationService *CooperationApplicationService) ApprovalCoop | ||
| 195 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cooperationApplicationId, 10))) | 278 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cooperationApplicationId, 10))) |
| 196 | } | 279 | } |
| 197 | 280 | ||
| 281 | + // 校验共创申请是否已经审核过 | ||
| 282 | + if cooperationApplication.CooperationApplicationStatus != 1 { | ||
| 283 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "改申请已经审核过") | ||
| 284 | + } | ||
| 285 | + | ||
| 198 | if approvalCooperationApplicationCommand.Action == 1 { | 286 | if approvalCooperationApplicationCommand.Action == 1 { |
| 199 | cooperationApplication.CooperationApplicationStatus = 2 | 287 | cooperationApplication.CooperationApplicationStatus = 2 |
| 200 | } else if approvalCooperationApplicationCommand.Action == 2 { | 288 | } else if approvalCooperationApplicationCommand.Action == 2 { |
| @@ -272,7 +360,12 @@ func (cooperationApplicationService *CooperationApplicationService) BatchApprova | @@ -272,7 +360,12 @@ func (cooperationApplicationService *CooperationApplicationService) BatchApprova | ||
| 272 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 360 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 273 | } else { | 361 | } else { |
| 274 | if count > 0 { | 362 | if count > 0 { |
| 275 | - for i, _ := range cooperationApplications { | 363 | + for i, cooperationApplication := range cooperationApplications { |
| 364 | + // 校验共创申请是否已经审核过 | ||
| 365 | + if cooperationApplication.CooperationApplicationStatus != 1 { | ||
| 366 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "改申请已经审核过") | ||
| 367 | + } | ||
| 368 | + // 更新共创申请数据 | ||
| 276 | cooperationApplications[i].CooperationApplicationVerifyDescription = batchApprovalCooperationApplicationCommand.CooperationApplicationVerifyDescription | 369 | cooperationApplications[i].CooperationApplicationVerifyDescription = batchApprovalCooperationApplicationCommand.CooperationApplicationVerifyDescription |
| 277 | if batchApprovalCooperationApplicationCommand.Action == 1 { // 同意 | 370 | if batchApprovalCooperationApplicationCommand.Action == 1 { // 同意 |
| 278 | cooperationApplications[i].CooperationApplicationStatus = 2 | 371 | cooperationApplications[i].CooperationApplicationStatus = 2 |
| @@ -281,6 +374,7 @@ func (cooperationApplicationService *CooperationApplicationService) BatchApprova | @@ -281,6 +374,7 @@ func (cooperationApplicationService *CooperationApplicationService) BatchApprova | ||
| 281 | } | 374 | } |
| 282 | cooperationApplications[i].CooperationApplicationVerifier = verifier | 375 | cooperationApplications[i].CooperationApplicationVerifier = verifier |
| 283 | cooperationApplications[i].CooperationApplicationVerifyTime = time.Now() | 376 | cooperationApplications[i].CooperationApplicationVerifyTime = time.Now() |
| 377 | + cooperationApplications[i].IsCanceled = 1 | ||
| 284 | } | 378 | } |
| 285 | cooperationApplicationsApproved, err := cooperationApplicationRepository.UpdateMany(cooperationApplications) | 379 | cooperationApplicationsApproved, err := cooperationApplicationRepository.UpdateMany(cooperationApplications) |
| 286 | if err != nil { | 380 | if err != nil { |
| @@ -346,7 +440,12 @@ func (cooperationApplicationService *CooperationApplicationService) OneClickAppr | @@ -346,7 +440,12 @@ func (cooperationApplicationService *CooperationApplicationService) OneClickAppr | ||
| 346 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 440 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 347 | } else { | 441 | } else { |
| 348 | if count > 0 { | 442 | if count > 0 { |
| 349 | - for i, _ := range cooperationApplications { | 443 | + for i, cooperationApplication := range cooperationApplications { |
| 444 | + // 校验共创申请是否已经审核过 | ||
| 445 | + if cooperationApplication.CooperationApplicationStatus != 1 { | ||
| 446 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "改申请已经审核过") | ||
| 447 | + } | ||
| 448 | + // 更新共创申请 | ||
| 350 | if oneClickApprovalCooperationApplicationCommand.Action == 1 { | 449 | if oneClickApprovalCooperationApplicationCommand.Action == 1 { |
| 351 | cooperationApplications[i].CooperationApplicationStatus = 2 | 450 | cooperationApplications[i].CooperationApplicationStatus = 2 |
| 352 | } else if oneClickApprovalCooperationApplicationCommand.Action == 2 { | 451 | } else if oneClickApprovalCooperationApplicationCommand.Action == 2 { |
| @@ -463,7 +562,7 @@ func (cooperationApplicationService *CooperationApplicationService) CreateCooper | @@ -463,7 +562,7 @@ func (cooperationApplicationService *CooperationApplicationService) CreateCooper | ||
| 463 | CooperationApplyTime: time.Now(), | 562 | CooperationApplyTime: time.Now(), |
| 464 | CooperationProject: cooperationProject, | 563 | CooperationProject: cooperationProject, |
| 465 | Org: organization, | 564 | Org: organization, |
| 466 | - IsCanceled: false, | 565 | + IsCanceled: 1, |
| 467 | Company: company, | 566 | Company: company, |
| 468 | CreatedAt: time.Now(), | 567 | CreatedAt: time.Now(), |
| 469 | DeletedAt: time.Time{}, | 568 | DeletedAt: time.Time{}, |
| @@ -551,6 +650,7 @@ func (cooperationApplicationService *CooperationApplicationService) ListCooperat | @@ -551,6 +650,7 @@ func (cooperationApplicationService *CooperationApplicationService) ListCooperat | ||
| 551 | } else { | 650 | } else { |
| 552 | cooperationApplicationRepository = value | 651 | cooperationApplicationRepository = value |
| 553 | } | 652 | } |
| 653 | + // 获取共创申请 | ||
| 554 | if count, cooperationApplications, err := cooperationApplicationRepository.Find(tool_funs.SimpleStructToMap(listCooperationApplicationQuery)); err != nil { | 654 | if count, cooperationApplications, err := cooperationApplicationRepository.Find(tool_funs.SimpleStructToMap(listCooperationApplicationQuery)); err != nil { |
| 555 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 655 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 556 | } else { | 656 | } else { |
| @@ -709,8 +809,19 @@ func (cooperationApplicationService *CooperationApplicationService) CancelCooper | @@ -709,8 +809,19 @@ func (cooperationApplicationService *CooperationApplicationService) CancelCooper | ||
| 709 | defer func() { | 809 | defer func() { |
| 710 | _ = transactionContext.RollbackTransaction() | 810 | _ = transactionContext.RollbackTransaction() |
| 711 | }() | 811 | }() |
| 812 | + | ||
| 712 | //TODO 校验用户菜单模块权限 | 813 | //TODO 校验用户菜单模块权限 |
| 713 | 814 | ||
| 815 | + // 共创项目仓储初始化 | ||
| 816 | + var cooperationProjectRepository domain.CooperationProjectRepository | ||
| 817 | + if value, err := factory.CreateCooperationProjectRepository(map[string]interface{}{ | ||
| 818 | + "transactionContext": transactionContext, | ||
| 819 | + }); err != nil { | ||
| 820 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 821 | + } else { | ||
| 822 | + cooperationProjectRepository = value | ||
| 823 | + } | ||
| 824 | + | ||
| 714 | // 共创申请仓储初始化 | 825 | // 共创申请仓储初始化 |
| 715 | var cooperationApplicationRepository domain.CooperationApplicationRepository | 826 | var cooperationApplicationRepository domain.CooperationApplicationRepository |
| 716 | if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{ | 827 | if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{ |
| @@ -732,17 +843,30 @@ func (cooperationApplicationService *CooperationApplicationService) CancelCooper | @@ -732,17 +843,30 @@ func (cooperationApplicationService *CooperationApplicationService) CancelCooper | ||
| 732 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cooperationApplicationId, 10))) | 843 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cooperationApplicationId, 10))) |
| 733 | } | 844 | } |
| 734 | if err := cooperationApplication.Update(map[string]interface{}{ | 845 | if err := cooperationApplication.Update(map[string]interface{}{ |
| 735 | - "isCanceled": true, | 846 | + "isCanceled": int32(2), |
| 736 | }); err != nil { | 847 | }); err != nil { |
| 737 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 848 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
| 738 | } | 849 | } |
| 739 | - if cooperationApplication, err := cooperationApplicationRepository.Save(cooperationApplication); err != nil { | 850 | + if cooperationApplicationSaved, err := cooperationApplicationRepository.Save(cooperationApplication); err != nil { |
| 740 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 851 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 741 | } else { | 852 | } else { |
| 853 | + // 获取共创项目 | ||
| 854 | + cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{"cooperationProjectId": cooperationApplicationSaved.CooperationProject.CooperationProjectId}) | ||
| 855 | + if err != nil { | ||
| 856 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创项目不存在") | ||
| 857 | + } | ||
| 858 | + if cooperationProject == nil { | ||
| 859 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("共创项目%s不存在", strconv.FormatInt(cooperationApplicationSaved.CooperationProject.CooperationProjectId, 10))) | ||
| 860 | + } | ||
| 861 | + // 更新共创项目申请统计 | ||
| 862 | + cooperationProject.ApplicantCount = cooperationProject.ApplicantCount - 1 | ||
| 863 | + if _, err := cooperationProjectRepository.Save(cooperationProject); err != nil { | ||
| 864 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 865 | + } | ||
| 742 | if err := transactionContext.CommitTransaction(); err != nil { | 866 | if err := transactionContext.CommitTransaction(); err != nil { |
| 743 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 867 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 744 | } | 868 | } |
| 745 | - return cooperationApplication, nil | 869 | + return cooperationApplicationSaved, nil |
| 746 | } | 870 | } |
| 747 | } | 871 | } |
| 748 | 872 |
| @@ -18,6 +18,10 @@ type CooperationContractByUndertakerDto struct { | @@ -18,6 +18,10 @@ type CooperationContractByUndertakerDto struct { | ||
| 18 | CooperationContractNumber string `json:"cooperationContractNumber"` | 18 | CooperationContractNumber string `json:"cooperationContractNumber"` |
| 19 | // 项目合约名称 | 19 | // 项目合约名称 |
| 20 | CooperationContractName string `json:"cooperationContractName"` | 20 | CooperationContractName string `json:"cooperationContractName"` |
| 21 | + // 项目合约状态 | ||
| 22 | + CooperationContractStatus int32 `json:"cooperationContractStatus"` | ||
| 23 | + // 共创描述 | ||
| 24 | + CooperationContractDescription string `json:"cooperationContractDescription"` | ||
| 21 | // 合同附件 | 25 | // 合同附件 |
| 22 | Attachment []*domain.Attachment `json:"attachment"` | 26 | Attachment []*domain.Attachment `json:"attachment"` |
| 23 | // 发起人姓名 | 27 | // 发起人姓名 |
| @@ -37,6 +41,8 @@ func (dto *CooperationContractByUndertakerDto) LoadDto(contractByUndertaker *mod | @@ -37,6 +41,8 @@ func (dto *CooperationContractByUndertakerDto) LoadDto(contractByUndertaker *mod | ||
| 37 | dto.UndertakerPhone = contractByUndertaker.UndertakerPhone | 41 | dto.UndertakerPhone = contractByUndertaker.UndertakerPhone |
| 38 | dto.CooperationContractNumber = contractByUndertaker.CooperationContractNumber | 42 | dto.CooperationContractNumber = contractByUndertaker.CooperationContractNumber |
| 39 | dto.CooperationContractName = contractByUndertaker.CooperationContractName | 43 | dto.CooperationContractName = contractByUndertaker.CooperationContractName |
| 44 | + dto.CooperationContractStatus = contractByUndertaker.ContractStatus | ||
| 45 | + dto.CooperationContractDescription = contractByUndertaker.CooperationContractDescription | ||
| 40 | dto.Attachment = contractByUndertaker.ContractAttachment | 46 | dto.Attachment = contractByUndertaker.ContractAttachment |
| 41 | dto.SponsorName = contractByUndertaker.CooperationContractSponsor.UserName | 47 | dto.SponsorName = contractByUndertaker.CooperationContractSponsor.UserName |
| 42 | if contractByUndertaker.Department != nil { | 48 | if contractByUndertaker.Department != nil { |
| @@ -17,6 +17,8 @@ type SearchCooperationContractQuery struct { | @@ -17,6 +17,8 @@ type SearchCooperationContractQuery struct { | ||
| 17 | CooperationContractNumber string `cname:"共创合约编号" json:"cooperationContractNumber,omitempty"` | 17 | CooperationContractNumber string `cname:"共创合约编号" json:"cooperationContractNumber,omitempty"` |
| 18 | // 发起人姓名 | 18 | // 发起人姓名 |
| 19 | SponsorName string `cname:"发起人姓名" json:"sponsorName,omitempty"` | 19 | SponsorName string `cname:"发起人姓名" json:"sponsorName,omitempty"` |
| 20 | + // 激励类型 | ||
| 21 | + IncentivesType int32 `cname:"激励类型" json:"incentivesType,omitempty"` | ||
| 20 | // 公司ID,通过集成REST上下文获取 | 22 | // 公司ID,通过集成REST上下文获取 |
| 21 | CompanyId int64 `cname:"公司ID" json:"companyId"` | 23 | CompanyId int64 `cname:"公司ID" json:"companyId"` |
| 22 | // 组织机构ID | 24 | // 组织机构ID |
| @@ -30,7 +32,6 @@ type SearchCooperationContractQuery struct { | @@ -30,7 +32,6 @@ type SearchCooperationContractQuery struct { | ||
| 30 | } | 32 | } |
| 31 | 33 | ||
| 32 | func (searchCooperationContractQuery *SearchCooperationContractQuery) Valid(validation *validation.Validation) { | 34 | func (searchCooperationContractQuery *SearchCooperationContractQuery) Valid(validation *validation.Validation) { |
| 33 | - //validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 34 | } | 35 | } |
| 35 | 36 | ||
| 36 | func (searchCooperationContractQuery *SearchCooperationContractQuery) ValidateQuery() error { | 37 | func (searchCooperationContractQuery *SearchCooperationContractQuery) ValidateQuery() error { |
| @@ -2,6 +2,9 @@ package service | @@ -2,6 +2,9 @@ package service | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "strconv" | ||
| 6 | + "time" | ||
| 7 | + | ||
| 5 | "github.com/linmadan/egglib-go/core/application" | 8 | "github.com/linmadan/egglib-go/core/application" |
| 6 | "github.com/linmadan/egglib-go/utils/tool_funs" | 9 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/cooperationContract/command" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/cooperationContract/command" |
| @@ -13,8 +16,6 @@ import ( | @@ -13,8 +16,6 @@ import ( | ||
| 13 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | 16 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" |
| 14 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | 17 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" |
| 15 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log" | 18 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log" |
| 16 | - "strconv" | ||
| 17 | - "time" | ||
| 18 | ) | 19 | ) |
| 19 | 20 | ||
| 20 | // CooperationContractService 共创合约服务 | 21 | // CooperationContractService 共创合约服务 |
| @@ -125,7 +126,9 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | @@ -125,7 +126,9 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | ||
| 125 | } | 126 | } |
| 126 | 127 | ||
| 127 | // 生成共创合约编号 | 128 | // 生成共创合约编号 |
| 128 | - contractNumber, err2 := cooperationContractDao.GenerateContractNumber() | 129 | + contractNumber, err2 := cooperationContractDao.GenerateContractNumber(map[string]interface{}{ |
| 130 | + "companyId": createCooperationContractCommand.CompanyId, | ||
| 131 | + }) | ||
| 129 | if err2 != nil { | 132 | if err2 != nil { |
| 130 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err2.Error()) | 133 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err2.Error()) |
| 131 | } | 134 | } |
| @@ -133,16 +136,16 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | @@ -133,16 +136,16 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | ||
| 133 | // 校验共创合约编号是否唯一 | 136 | // 校验共创合约编号是否唯一 |
| 134 | numberAvailable, _ := cooperationContractDao.CheckContractNumberAvailable(map[string]interface{}{ | 137 | numberAvailable, _ := cooperationContractDao.CheckContractNumberAvailable(map[string]interface{}{ |
| 135 | "companyId": createCooperationContractCommand.CompanyId, | 138 | "companyId": createCooperationContractCommand.CompanyId, |
| 136 | - "orgId": createCooperationContractCommand.OrgId, | ||
| 137 | "cooperationContractNumber": contractNumber, | 139 | "cooperationContractNumber": contractNumber, |
| 138 | }) | 140 | }) |
| 139 | if !numberAvailable { | 141 | if !numberAvailable { |
| 140 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "新增共创合约异常") | 142 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "新增共创合约异常") |
| 141 | } | 143 | } |
| 142 | 144 | ||
| 143 | - // 获取承接人 | 145 | + // 承接人 |
| 144 | var undertakers []*domain.Undertaker | 146 | var undertakers []*domain.Undertaker |
| 145 | for _, undertaker := range createCooperationContractCommand.Undertakers { | 147 | for _, undertaker := range createCooperationContractCommand.Undertakers { |
| 148 | + // 获取承接人 | ||
| 146 | var undertakerDomain *domain.Undertaker | 149 | var undertakerDomain *domain.Undertaker |
| 147 | undertakerUid, err := strconv.ParseInt(undertaker.UserId, 10, 64) | 150 | undertakerUid, err := strconv.ParseInt(undertaker.UserId, 10, 64) |
| 148 | if err != nil { | 151 | if err != nil { |
| @@ -155,6 +158,13 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | @@ -155,6 +158,13 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | ||
| 155 | undertakerDomain = data | 158 | undertakerDomain = data |
| 156 | } | 159 | } |
| 157 | 160 | ||
| 161 | + // 校验承接人是否属于承接对象,1员工,2共创用户,4公开 | ||
| 162 | + if !utils.IsContain(createCooperationContractCommand.CooperationContractUndertakerTypes, 4) { | ||
| 163 | + if !utils.IsContain(createCooperationContractCommand.CooperationContractUndertakerTypes, undertakerDomain.UserType) { | ||
| 164 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "承接人"+undertakerDomain.UserName+"不属于承接对象") | ||
| 165 | + } | ||
| 166 | + } | ||
| 167 | + | ||
| 158 | // 获取推荐人 | 168 | // 获取推荐人 |
| 159 | var referrerDomain *domain.Referrer | 169 | var referrerDomain *domain.Referrer |
| 160 | referrerUid, _ := strconv.ParseInt(undertaker.ReferrerId, 10, 64) | 170 | referrerUid, _ := strconv.ParseInt(undertaker.ReferrerId, 10, 64) |
| @@ -195,11 +205,13 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | @@ -195,11 +205,13 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | ||
| 195 | UserId: undertakerDomain.UserId, | 205 | UserId: undertakerDomain.UserId, |
| 196 | CooperationContractNumber: contractNumber, | 206 | CooperationContractNumber: contractNumber, |
| 197 | UserBaseId: undertakerDomain.UserBaseId, | 207 | UserBaseId: undertakerDomain.UserBaseId, |
| 198 | - Org: undertakerDomain.Org, | 208 | + Org: organization, |
| 199 | Orgs: undertakerDomain.Orgs, | 209 | Orgs: undertakerDomain.Orgs, |
| 200 | Department: undertakerDomain.Department, | 210 | Department: undertakerDomain.Department, |
| 201 | Roles: undertakerDomain.Roles, | 211 | Roles: undertakerDomain.Roles, |
| 202 | UserInfo: undertakerDomain.UserInfo, | 212 | UserInfo: undertakerDomain.UserInfo, |
| 213 | + UserName: undertakerDomain.UserName, | ||
| 214 | + UserPhone: undertakerDomain.UserPhone, | ||
| 203 | UserType: undertakerDomain.UserType, | 215 | UserType: undertakerDomain.UserType, |
| 204 | Referrer: referrerDomain, | 216 | Referrer: referrerDomain, |
| 205 | Salesman: salesmanDomain, | 217 | Salesman: salesmanDomain, |
| @@ -225,14 +237,14 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | @@ -225,14 +237,14 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | ||
| 225 | CooperationContractNumber: contractNumber, | 237 | CooperationContractNumber: contractNumber, |
| 226 | UserId: relevantDomain.UserId, | 238 | UserId: relevantDomain.UserId, |
| 227 | UserBaseId: relevantDomain.UserBaseId, | 239 | UserBaseId: relevantDomain.UserBaseId, |
| 228 | - Org: relevantDomain.Org, | 240 | + Org: organization, |
| 229 | Orgs: relevantDomain.Orgs, | 241 | Orgs: relevantDomain.Orgs, |
| 230 | Department: relevantDomain.Department, | 242 | Department: relevantDomain.Department, |
| 231 | Roles: relevantDomain.Roles, | 243 | Roles: relevantDomain.Roles, |
| 232 | UserInfo: relevantDomain.UserInfo, | 244 | UserInfo: relevantDomain.UserInfo, |
| 233 | UserType: relevantDomain.UserType, | 245 | UserType: relevantDomain.UserType, |
| 234 | Status: relevantDomain.Status, | 246 | Status: relevantDomain.Status, |
| 235 | - Company: relevantDomain.Company, | 247 | + Company: company, |
| 236 | }) | 248 | }) |
| 237 | } | 249 | } |
| 238 | 250 | ||
| @@ -267,7 +279,7 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | @@ -267,7 +279,7 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC | ||
| 267 | MoneyIncentivesStage: moneyIncentivesRule.MoneyIncentivesStage, | 279 | MoneyIncentivesStage: moneyIncentivesRule.MoneyIncentivesStage, |
| 268 | MoneyIncentivesStageEnd: moneyIncentivesRule.MoneyIncentivesStageEnd, | 280 | MoneyIncentivesStageEnd: moneyIncentivesRule.MoneyIncentivesStageEnd, |
| 269 | MoneyIncentivesStageStart: moneyIncentivesRule.MoneyIncentivesStageStart, | 281 | MoneyIncentivesStageStart: moneyIncentivesRule.MoneyIncentivesStageStart, |
| 270 | - MoneyIncentivesTime: time.Now(), | 282 | + MoneyIncentivesTime: moneyIncentivesRule.MoneyIncentivesTime, |
| 271 | ReferrerPercentage: moneyIncentivesRule.ReferrerPercentage, | 283 | ReferrerPercentage: moneyIncentivesRule.ReferrerPercentage, |
| 272 | SalesmanPercentage: moneyIncentivesRule.SalesmanPercentage, | 284 | SalesmanPercentage: moneyIncentivesRule.SalesmanPercentage, |
| 273 | Org: organization, | 285 | Org: organization, |
| @@ -444,6 +456,7 @@ func (cooperationContractService *CooperationContractService) ListCooperationCon | @@ -444,6 +456,7 @@ func (cooperationContractService *CooperationContractService) ListCooperationCon | ||
| 444 | defer func() { | 456 | defer func() { |
| 445 | _ = transactionContext.RollbackTransaction() | 457 | _ = transactionContext.RollbackTransaction() |
| 446 | }() | 458 | }() |
| 459 | + // 合约仓储初始化 | ||
| 447 | var cooperationContractRepository domain.CooperationContractRepository | 460 | var cooperationContractRepository domain.CooperationContractRepository |
| 448 | if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | 461 | if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ |
| 449 | "transactionContext": transactionContext, | 462 | "transactionContext": transactionContext, |
| @@ -452,6 +465,7 @@ func (cooperationContractService *CooperationContractService) ListCooperationCon | @@ -452,6 +465,7 @@ func (cooperationContractService *CooperationContractService) ListCooperationCon | ||
| 452 | } else { | 465 | } else { |
| 453 | cooperationContractRepository = value | 466 | cooperationContractRepository = value |
| 454 | } | 467 | } |
| 468 | + // 查找合约 | ||
| 455 | if count, cooperationContracts, err := cooperationContractRepository.Find(tool_funs.SimpleStructToMap(listCooperationContractQuery)); err != nil { | 469 | if count, cooperationContracts, err := cooperationContractRepository.Find(tool_funs.SimpleStructToMap(listCooperationContractQuery)); err != nil { |
| 456 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 470 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 457 | } else { | 471 | } else { |
| @@ -824,7 +838,7 @@ func (cooperationContractService *CooperationContractService) SearchCooperationC | @@ -824,7 +838,7 @@ func (cooperationContractService *CooperationContractService) SearchCooperationC | ||
| 824 | if count, cooperationContractByUndertakers, err := cooperationContractDao.SearchCooperationContractByUndertaker(tool_funs.SimpleStructToMap(searchCooperationContractByUndertakerQuery)); err != nil { | 838 | if count, cooperationContractByUndertakers, err := cooperationContractDao.SearchCooperationContractByUndertaker(tool_funs.SimpleStructToMap(searchCooperationContractByUndertakerQuery)); err != nil { |
| 825 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 839 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 826 | } else { | 840 | } else { |
| 827 | - var cooperationContractByUndertakerDtos []*dto.CooperationContractByUndertakerDto | 841 | + cooperationContractByUndertakerDtos := make([]*dto.CooperationContractByUndertakerDto, 0) |
| 828 | for _, cooperationContractByUndertaker := range cooperationContractByUndertakers { | 842 | for _, cooperationContractByUndertaker := range cooperationContractByUndertakers { |
| 829 | cooperationContractByUndertakerDto := &dto.CooperationContractByUndertakerDto{} | 843 | cooperationContractByUndertakerDto := &dto.CooperationContractByUndertakerDto{} |
| 830 | if err := cooperationContractByUndertakerDto.LoadDto(cooperationContractByUndertaker); err != nil { | 844 | if err := cooperationContractByUndertakerDto.LoadDto(cooperationContractByUndertaker); err != nil { |
| @@ -1005,6 +1019,13 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | @@ -1005,6 +1019,13 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | ||
| 1005 | undertakerDomain = data | 1019 | undertakerDomain = data |
| 1006 | } | 1020 | } |
| 1007 | 1021 | ||
| 1022 | + // 校验:判断用户类型是否属于承接对象 | ||
| 1023 | + if !utils.IsContain(cooperationContract.CooperationContractUndertakerTypes, 4) { // 非公开类型校验 | ||
| 1024 | + if !utils.IsContain(cooperationContract.CooperationContractUndertakerTypes, undertakerDomain.UserType) { | ||
| 1025 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象") | ||
| 1026 | + } | ||
| 1027 | + } | ||
| 1028 | + | ||
| 1008 | // 获取推荐人 | 1029 | // 获取推荐人 |
| 1009 | var referrerDomain *domain.Referrer | 1030 | var referrerDomain *domain.Referrer |
| 1010 | if undertaker.ReferrerId != "" { | 1031 | if undertaker.ReferrerId != "" { |
| @@ -1043,6 +1064,16 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | @@ -1043,6 +1064,16 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | ||
| 1043 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err16.Error()) | 1064 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err16.Error()) |
| 1044 | } | 1065 | } |
| 1045 | 1066 | ||
| 1067 | + var contractAttachments []*domain.Attachment | ||
| 1068 | + for _, attachment := range undertaker.ContractAttachment { | ||
| 1069 | + contractAttachments = append(contractAttachments, &domain.Attachment{ | ||
| 1070 | + FileType: attachment.FileType, | ||
| 1071 | + Name: attachment.Name, | ||
| 1072 | + Url: attachment.Url, | ||
| 1073 | + FileSize: attachment.FileSize, | ||
| 1074 | + }) | ||
| 1075 | + } | ||
| 1076 | + | ||
| 1046 | undertakers = append(undertakers, &domain.Undertaker{ | 1077 | undertakers = append(undertakers, &domain.Undertaker{ |
| 1047 | UndertakerId: undertakerId, | 1078 | UndertakerId: undertakerId, |
| 1048 | UserId: undertakerDomain.UserId, | 1079 | UserId: undertakerDomain.UserId, |
| @@ -1058,7 +1089,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | @@ -1058,7 +1089,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | ||
| 1058 | Salesman: salesmanDomain, | 1089 | Salesman: salesmanDomain, |
| 1059 | Status: undertakerDomain.Status, | 1090 | Status: undertakerDomain.Status, |
| 1060 | Company: undertakerDomain.Company, | 1091 | Company: undertakerDomain.Company, |
| 1061 | - ContractAttachment: nil, | 1092 | + ContractAttachment: contractAttachments, |
| 1062 | }) | 1093 | }) |
| 1063 | } | 1094 | } |
| 1064 | // 更新承接人 | 1095 | // 更新承接人 |
| @@ -1106,7 +1137,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | @@ -1106,7 +1137,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | ||
| 1106 | MoneyIncentivesStage: moneyIncentivesRule.MoneyIncentivesStage, | 1137 | MoneyIncentivesStage: moneyIncentivesRule.MoneyIncentivesStage, |
| 1107 | MoneyIncentivesStageEnd: moneyIncentivesRule.MoneyIncentivesStageEnd, | 1138 | MoneyIncentivesStageEnd: moneyIncentivesRule.MoneyIncentivesStageEnd, |
| 1108 | MoneyIncentivesStageStart: moneyIncentivesRule.MoneyIncentivesStageStart, | 1139 | MoneyIncentivesStageStart: moneyIncentivesRule.MoneyIncentivesStageStart, |
| 1109 | - MoneyIncentivesTime: time.Now(), | 1140 | + MoneyIncentivesTime: moneyIncentivesRule.MoneyIncentivesTime, |
| 1110 | ReferrerPercentage: moneyIncentivesRule.ReferrerPercentage, | 1141 | ReferrerPercentage: moneyIncentivesRule.ReferrerPercentage, |
| 1111 | SalesmanPercentage: moneyIncentivesRule.SalesmanPercentage, | 1142 | SalesmanPercentage: moneyIncentivesRule.SalesmanPercentage, |
| 1112 | Org: organization, | 1143 | Org: organization, |
| @@ -1301,7 +1332,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | @@ -1301,7 +1332,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | ||
| 1301 | UserPhone: "", | 1332 | UserPhone: "", |
| 1302 | } | 1333 | } |
| 1303 | } | 1334 | } |
| 1304 | - undertakersOriginal = undertakersOriginal + strconv.FormatInt(int64(i), 10) + "(" + undertaker.UserName + "," + undertaker.Referrer.UserName + "," + undertaker.Salesman.UserName + ")" | 1335 | + undertakersOriginal = undertakersOriginal + strconv.FormatInt(int64(i+1), 10) + "(" + undertaker.UserName + "," + undertaker.Referrer.UserName + "," + undertaker.Salesman.UserName + ")" |
| 1305 | } | 1336 | } |
| 1306 | undertakerChangeTmp1 := "【" + undertakersOriginal + "】" | 1337 | undertakerChangeTmp1 := "【" + undertakersOriginal + "】" |
| 1307 | 1338 | ||
| @@ -1338,7 +1369,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | @@ -1338,7 +1369,7 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC | ||
| 1338 | UserPhone: "", | 1369 | UserPhone: "", |
| 1339 | } | 1370 | } |
| 1340 | } | 1371 | } |
| 1341 | - undertakersChanged = undertakersChanged + strconv.FormatInt(int64(i), 10) + "(" + undertaker.UserName + "," + undertaker.Referrer.UserName + "," + undertaker.Salesman.UserName + ")" | 1372 | + undertakersChanged = undertakersChanged + strconv.FormatInt(int64(i+1), 10) + "(" + undertaker.UserName + "," + undertaker.Referrer.UserName + "," + undertaker.Salesman.UserName + ")" |
| 1342 | } | 1373 | } |
| 1343 | undertakerChangeTemp2 := "【" + undertakersChanged + "】" | 1374 | undertakerChangeTemp2 := "【" + undertakersChanged + "】" |
| 1344 | // 拼接承接人变更记录 | 1375 | // 拼接承接人变更记录 |
| @@ -29,6 +29,8 @@ type SearchCooperationModeQuery struct { | @@ -29,6 +29,8 @@ type SearchCooperationModeQuery struct { | ||
| 29 | UserId int64 `cname:"用户ID" json:"userId"` | 29 | UserId int64 `cname:"用户ID" json:"userId"` |
| 30 | // 用户基础数据id | 30 | // 用户基础数据id |
| 31 | UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"` | 31 | UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"` |
| 32 | + // 共创模式状态,1启用,2禁用 | ||
| 33 | + Status int32 `json:"status"` | ||
| 32 | } | 34 | } |
| 33 | 35 | ||
| 34 | func (searchCooperationModeQuery *SearchCooperationModeQuery) Valid(validation *validation.Validation) { | 36 | func (searchCooperationModeQuery *SearchCooperationModeQuery) Valid(validation *validation.Validation) { |
| @@ -17,6 +17,8 @@ type SearchCooperationProjectQuery struct { | @@ -17,6 +17,8 @@ type SearchCooperationProjectQuery struct { | ||
| 17 | CooperationProjectName string `cname:"共创项目名称" json:"cooperationProjectName,omitempty"` | 17 | CooperationProjectName string `cname:"共创项目名称" json:"cooperationProjectName,omitempty"` |
| 18 | // 共创项目编号 | 18 | // 共创项目编号 |
| 19 | CooperationProjectNumber string `cname:"共创项目编号" json:"cooperationProjectNumber,omitempty"` | 19 | CooperationProjectNumber string `cname:"共创项目编号" json:"cooperationProjectNumber,omitempty"` |
| 20 | + // 共创项目承接对象,1员工,2共创用户,4公开,可以多选 | ||
| 21 | + CooperationProjectUndertakerType int32 `json:"cooperationProjectUndertakerType"` | ||
| 20 | // 部门名称 | 22 | // 部门名称 |
| 21 | DepartmentName string `cname:"部门名称" json:"departmentName,omitempty"` | 23 | DepartmentName string `cname:"部门名称" json:"departmentName,omitempty"` |
| 22 | // 关键字搜索 | 24 | // 关键字搜索 |
| @@ -163,9 +163,11 @@ func (cooperationProjectService *CooperationProjectService) CreateCooperationPro | @@ -163,9 +163,11 @@ func (cooperationProjectService *CooperationProjectService) CreateCooperationPro | ||
| 163 | cooperationProjectDao = value | 163 | cooperationProjectDao = value |
| 164 | } | 164 | } |
| 165 | // 生成共创项目编号 | 165 | // 生成共创项目编号 |
| 166 | - projectNumber, err2 := cooperationProjectDao.GenerateProjectNumber() | 166 | + projectNumber, err2 := cooperationProjectDao.GenerateProjectNumber(map[string]interface{}{ |
| 167 | + "companyId": createCooperationProjectCommand.CompanyId, | ||
| 168 | + }) | ||
| 167 | if err2 != nil { | 169 | if err2 != nil { |
| 168 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 170 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err2.Error()) |
| 169 | } | 171 | } |
| 170 | // 校验共创项目编号是否唯一 | 172 | // 校验共创项目编号是否唯一 |
| 171 | numberAvailable, _ := cooperationProjectDao.CheckProjectNumberAvailable(map[string]interface{}{ | 173 | numberAvailable, _ := cooperationProjectDao.CheckProjectNumberAvailable(map[string]interface{}{ |
| @@ -457,29 +459,123 @@ func (cooperationProjectService *CooperationProjectService) UpdateCooperationPro | @@ -457,29 +459,123 @@ func (cooperationProjectService *CooperationProjectService) UpdateCooperationPro | ||
| 457 | cooperationProjectRepository = value | 459 | cooperationProjectRepository = value |
| 458 | } | 460 | } |
| 459 | 461 | ||
| 462 | + // 共创申请仓储初始化 | ||
| 463 | + var cooperationApplicationRepository domain.CooperationApplicationRepository | ||
| 464 | + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{ | ||
| 465 | + "transactionContext": transactionContext, | ||
| 466 | + }); err != nil { | ||
| 467 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 468 | + } else { | ||
| 469 | + cooperationApplicationRepository = value | ||
| 470 | + } | ||
| 471 | + | ||
| 472 | + // 用户REST服务初始化 | ||
| 473 | + var userService service.UserService | ||
| 474 | + if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil { | ||
| 475 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 476 | + } else { | ||
| 477 | + userService = value | ||
| 478 | + } | ||
| 479 | + | ||
| 480 | + // 获取操作人 | ||
| 481 | + var operator *domain.User | ||
| 482 | + if data, err := userService.OperatorFrom(updateCooperationProjectCommand.CompanyId, updateCooperationProjectCommand.OrgId, updateCooperationProjectCommand.UserId); err != nil { | ||
| 483 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取操作人失败") | ||
| 484 | + } else { | ||
| 485 | + operator = data | ||
| 486 | + } | ||
| 487 | + | ||
| 488 | + // 获取发起人 | ||
| 489 | + var sponsor *domain.User | ||
| 490 | + // sponsorUid类型转换 | ||
| 491 | + sponsorUid, err := strconv.ParseInt(updateCooperationProjectCommand.SponsorUid, 10, 64) | ||
| 492 | + if err != nil { | ||
| 493 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 494 | + } | ||
| 495 | + | ||
| 496 | + if data, err := userService.UserFrom(updateCooperationProjectCommand.CompanyId, updateCooperationProjectCommand.OrgId, sponsorUid); err != nil { | ||
| 497 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取发起人失败") | ||
| 498 | + } else { | ||
| 499 | + sponsor = data | ||
| 500 | + } | ||
| 501 | + | ||
| 502 | + // 共创项目ID类型转换 | ||
| 460 | cooperationProjectId, err := strconv.ParseInt(updateCooperationProjectCommand.CooperationProjectId, 10, 64) | 503 | cooperationProjectId, err := strconv.ParseInt(updateCooperationProjectCommand.CooperationProjectId, 10, 64) |
| 461 | if err != nil { | 504 | if err != nil { |
| 462 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创项目编号类型错误") | 505 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创项目编号类型错误") |
| 463 | } | 506 | } |
| 464 | 507 | ||
| 465 | // 查找共创项目 | 508 | // 查找共创项目 |
| 466 | - cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{"cooperationProjectId": cooperationProjectId}) | 509 | + cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{ |
| 510 | + "cooperationProjectId": cooperationProjectId, | ||
| 511 | + }) | ||
| 467 | if err != nil { | 512 | if err != nil { |
| 468 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 513 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 469 | } | 514 | } |
| 470 | if cooperationProject == nil { | 515 | if cooperationProject == nil { |
| 471 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateCooperationProjectCommand.CooperationProjectId))) | 516 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateCooperationProjectCommand.CooperationProjectId))) |
| 472 | } | 517 | } |
| 518 | + | ||
| 519 | + applicantTypes := make(map[int32]interface{}) | ||
| 520 | + | ||
| 521 | + // 获取所有申请人 | ||
| 522 | + if count, cooperationApplications, err := cooperationApplicationRepository.Find(map[string]interface{}{ | ||
| 523 | + "cooperationProjectNumber": cooperationProject.CooperationProjectNumber, | ||
| 524 | + "offsetLimit": false, | ||
| 525 | + "companyId": updateCooperationProjectCommand.CompanyId, | ||
| 526 | + "cooperationApplicationStatus": int32(2), // 共创申请审核状态,1待审核,2已同意,3已拒绝 | ||
| 527 | + }); err != nil { | ||
| 528 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 529 | + } else { | ||
| 530 | + if count > 0 { | ||
| 531 | + for _, cooperationApplication := range cooperationApplications { | ||
| 532 | + applicantTypes[cooperationApplication.CooperationApplicationApplicant.UserType] = cooperationApplication.CooperationApplicationApplicant.UserType | ||
| 533 | + } | ||
| 534 | + } | ||
| 535 | + } | ||
| 536 | + var undertakerTypes []int32 | ||
| 537 | + var k1, k2 int32 | ||
| 538 | + if len(applicantTypes) > 0 { | ||
| 539 | + for k, _ := range applicantTypes { | ||
| 540 | + if k == 1 { | ||
| 541 | + k1 = k | ||
| 542 | + } else if k == 2 { | ||
| 543 | + k2 = k | ||
| 544 | + } | ||
| 545 | + undertakerTypes = append(undertakerTypes, k) | ||
| 546 | + } | ||
| 547 | + } | ||
| 548 | + if k1 != 0 && k2 != 0 { | ||
| 549 | + undertakerTypes = append(undertakerTypes, 4) | ||
| 550 | + } | ||
| 551 | + | ||
| 552 | + // 校验可以修改的承接人(申请人)类型 | ||
| 553 | + for _, t := range undertakerTypes { | ||
| 554 | + if !utils.IsContain(updateCooperationProjectCommand.CooperationProjectUndertakerTypes, t) { | ||
| 555 | + switch t { | ||
| 556 | + case 1: | ||
| 557 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "承接对象'员工'存在业务数据,不可取消勾选") | ||
| 558 | + case 2: | ||
| 559 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "承接对象'共创用户'存在业务数据,不可取消勾选") | ||
| 560 | + case 4: | ||
| 561 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "承接对象'公开'存在业务数据,不可取消勾选") | ||
| 562 | + } | ||
| 563 | + } | ||
| 564 | + } | ||
| 565 | + | ||
| 566 | + // 更新共创项目 | ||
| 567 | + cooperationProject.Operator = operator | ||
| 568 | + cooperationProject.CooperationProjectSponsor = sponsor | ||
| 473 | if err := cooperationProject.Update(tool_funs.SimpleStructToMap(updateCooperationProjectCommand)); err != nil { | 569 | if err := cooperationProject.Update(tool_funs.SimpleStructToMap(updateCooperationProjectCommand)); err != nil { |
| 474 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 570 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
| 475 | } | 571 | } |
| 476 | - if cooperationProject, err := cooperationProjectRepository.Save(cooperationProject); err != nil { | 572 | + if cooperationProjectSaved, err := cooperationProjectRepository.Save(cooperationProject); err != nil { |
| 477 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 573 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 478 | } else { | 574 | } else { |
| 479 | if err := transactionContext.CommitTransaction(); err != nil { | 575 | if err := transactionContext.CommitTransaction(); err != nil { |
| 480 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 576 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 481 | } | 577 | } |
| 482 | - return cooperationProject, nil | 578 | + return cooperationProjectSaved, nil |
| 483 | } | 579 | } |
| 484 | } | 580 | } |
| 485 | 581 |
| @@ -63,6 +63,8 @@ func (svr *CooperationStatisticsService) CooperationContractStatistics(contractS | @@ -63,6 +63,8 @@ func (svr *CooperationStatisticsService) CooperationContractStatistics(contractS | ||
| 63 | res, err = statisticsService.PersonCompanyPaymentHistoryStatistics(contractStatisticsQuery.QueryOptions) | 63 | res, err = statisticsService.PersonCompanyPaymentHistoryStatistics(contractStatisticsQuery.QueryOptions) |
| 64 | case domain_service.CreditAccountStatistics: | 64 | case domain_service.CreditAccountStatistics: |
| 65 | res, err = statisticsService.CreditAccountStatistics(contractStatisticsQuery.QueryOptions) | 65 | res, err = statisticsService.CreditAccountStatistics(contractStatisticsQuery.QueryOptions) |
| 66 | + case domain_service.RelevantCooperationContractNumbers: | ||
| 67 | + res, err = statisticsService.RelevantCooperationContractNumbers(contractStatisticsQuery.QueryOptions) | ||
| 66 | } | 68 | } |
| 67 | if err != nil { | 69 | if err != nil { |
| 68 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 70 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
| @@ -16,9 +16,9 @@ type PayCreditAccountCommand struct { | @@ -16,9 +16,9 @@ type PayCreditAccountCommand struct { | ||
| 16 | // 账期结算实付金额 | 16 | // 账期结算实付金额 |
| 17 | ActuallyPaidAmount float64 `cname:"账期结算实付金额" json:"actuallyPaidAmount" valid:"Required"` | 17 | ActuallyPaidAmount float64 `cname:"账期结算实付金额" json:"actuallyPaidAmount" valid:"Required"` |
| 18 | // 备注 | 18 | // 备注 |
| 19 | - Remarks string `cname:"备注" json:"remarks" valid:"Required"` | 19 | + Remarks string `cname:"备注" json:"remarks"` |
| 20 | // 支付凭证附件 | 20 | // 支付凭证附件 |
| 21 | - PaymentDocumentAttachments []*domain.Attachment `cname:"支付凭证附件" json:"paymentDocumentAttachment" valid:"Required"` | 21 | + PaymentDocumentAttachments []*domain.Attachment `cname:"支付凭证附件" json:"paymentDocumentAttachment"` |
| 22 | // 公司ID,通过集成REST上下文获取 | 22 | // 公司ID,通过集成REST上下文获取 |
| 23 | CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"` | 23 | CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"` |
| 24 | // 组织机构ID | 24 | // 组织机构ID |
| @@ -30,7 +30,6 @@ type PayCreditAccountCommand struct { | @@ -30,7 +30,6 @@ type PayCreditAccountCommand struct { | ||
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | func (payCreditAccountCommand *PayCreditAccountCommand) Valid(validation *validation.Validation) { | 32 | func (payCreditAccountCommand *PayCreditAccountCommand) Valid(validation *validation.Validation) { |
| 33 | - //validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 34 | } | 33 | } |
| 35 | 34 | ||
| 36 | func (payCreditAccountCommand *PayCreditAccountCommand) ValidateCommand() error { | 35 | func (payCreditAccountCommand *PayCreditAccountCommand) ValidateCommand() error { |
| @@ -32,6 +32,12 @@ type SearchCreditAccountQuery struct { | @@ -32,6 +32,12 @@ type SearchCreditAccountQuery struct { | ||
| 32 | UserId int64 `cname:"用户ID" json:"userId"` | 32 | UserId int64 `cname:"用户ID" json:"userId"` |
| 33 | // 用户基础数据id | 33 | // 用户基础数据id |
| 34 | UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"` | 34 | UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"` |
| 35 | + // 账期创建-开始时间 | ||
| 36 | + BeginTime time.Time `json:"beginTime"` | ||
| 37 | + // 账期创建-结束时间 | ||
| 38 | + EndTime time.Time `json:"endTime"` | ||
| 39 | + // 合约编号列表 | ||
| 40 | + CooperationContractNumbers []string `json:"cooperationContractNumbers"` | ||
| 35 | } | 41 | } |
| 36 | 42 | ||
| 37 | func (searchCreditAccountQuery *SearchCreditAccountQuery) Valid(validation *validation.Validation) { | 43 | func (searchCreditAccountQuery *SearchCreditAccountQuery) Valid(validation *validation.Validation) { |
| @@ -145,7 +145,6 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | @@ -145,7 +145,6 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | ||
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | // 预算明细 | 147 | // 预算明细 |
| 148 | - var creditAccounts []*domain.CreditAccount | ||
| 149 | var accountDetail []*domain.AccountDetail | 148 | var accountDetail []*domain.AccountDetail |
| 150 | var settlementAmount float64 | 149 | var settlementAmount float64 |
| 151 | for _, dividendsEstimate := range dividendsEstimates { | 150 | for _, dividendsEstimate := range dividendsEstimates { |
| @@ -158,7 +157,9 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | @@ -158,7 +157,9 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | ||
| 158 | } | 157 | } |
| 159 | 158 | ||
| 160 | // 生成账期结算单号 | 159 | // 生成账期结算单号 |
| 161 | - creditAccountNumber, err12 := creditAccountDao.GenerateCreditAccountNumber() | 160 | + creditAccountNumber, err12 := creditAccountDao.GenerateCreditAccountNumber(map[string]interface{}{ |
| 161 | + "companyId": createCreditAccountCommand.CompanyId, | ||
| 162 | + }) | ||
| 162 | if err12 != nil { | 163 | if err12 != nil { |
| 163 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "生成账期结算单号错误") | 164 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "生成账期结算单号错误") |
| 164 | } | 165 | } |
| @@ -179,7 +180,7 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | @@ -179,7 +180,7 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | ||
| 179 | Department: dividendsEstimates[0].DividendsUser.Department, | 180 | Department: dividendsEstimates[0].DividendsUser.Department, |
| 180 | Roles: dividendsEstimates[0].DividendsUser.Roles, | 181 | Roles: dividendsEstimates[0].DividendsUser.Roles, |
| 181 | UserInfo: dividendsEstimates[0].DividendsUser.UserInfo, | 182 | UserInfo: dividendsEstimates[0].DividendsUser.UserInfo, |
| 182 | - UserName: dividendsEstimates[0].DividendsUser.UserName, | 183 | + UserName: dividendsEstimates[0].DividendsUser.UserInfo.UserName, |
| 183 | UserPhone: dividendsEstimates[0].DividendsUser.UserPhone, | 184 | UserPhone: dividendsEstimates[0].DividendsUser.UserPhone, |
| 184 | UserType: dividendsEstimates[0].DividendsUser.UserType, | 185 | UserType: dividendsEstimates[0].DividendsUser.UserType, |
| 185 | Status: dividendsEstimates[0].DividendsUser.Status, | 186 | Status: dividendsEstimates[0].DividendsUser.Status, |
| @@ -199,13 +200,19 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | @@ -199,13 +200,19 @@ func (creditAccountService *CreditAccountService) CreateCreditAccount(createCred | ||
| 199 | if creditAccount, err13 := creditAccountRepository.Save(newCreditAccount); err13 != nil { | 200 | if creditAccount, err13 := creditAccountRepository.Save(newCreditAccount); err13 != nil { |
| 200 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err13.Error()) | 201 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err13.Error()) |
| 201 | } else { | 202 | } else { |
| 202 | - creditAccounts = append(creditAccounts, creditAccount) | ||
| 203 | - } | ||
| 204 | - | ||
| 205 | - if err14 := transactionContext.CommitTransaction(); err14 != nil { | ||
| 206 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err14.Error()) | 203 | + // 变更分红预算单结算状态 |
| 204 | + for i, _ := range dividendsEstimates { | ||
| 205 | + dividendsEstimates[i].DividendsAccountStatus = 2 | ||
| 206 | + } | ||
| 207 | + _, err3 := dividendsEstimateRepository.UpdateMany(dividendsEstimates) | ||
| 208 | + if err3 != nil { | ||
| 209 | + return nil, err3 | ||
| 210 | + } | ||
| 211 | + if err14 := transactionContext.CommitTransaction(); err14 != nil { | ||
| 212 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err14.Error()) | ||
| 213 | + } | ||
| 214 | + return creditAccount, nil | ||
| 207 | } | 215 | } |
| 208 | - return creditAccounts, nil | ||
| 209 | } | 216 | } |
| 210 | } | 217 | } |
| 211 | 218 | ||
| @@ -353,6 +360,7 @@ func (creditAccountService *CreditAccountService) PayCreditAccount(payCreditAcco | @@ -353,6 +360,7 @@ func (creditAccountService *CreditAccountService) PayCreditAccount(payCreditAcco | ||
| 353 | if creditAccountSaved, err4 := creditAccountRepository.Save(creditAccount); err4 != nil { | 360 | if creditAccountSaved, err4 := creditAccountRepository.Save(creditAccount); err4 != nil { |
| 354 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err4.Error()) | 361 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err4.Error()) |
| 355 | } else { | 362 | } else { |
| 363 | + // TODO 更新分红预算单结算状态(已支付) | ||
| 356 | if err3 := transactionContext.CommitTransaction(); err3 != nil { | 364 | if err3 := transactionContext.CommitTransaction(); err3 != nil { |
| 357 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err3.Error()) | 365 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err3.Error()) |
| 358 | } | 366 | } |
| @@ -28,10 +28,11 @@ type MoneyIncentivesEstimateDto struct { | @@ -28,10 +28,11 @@ type MoneyIncentivesEstimateDto struct { | ||
| 28 | // 创建合约时间 | 28 | // 创建合约时间 |
| 29 | CreatedAt time.Time `json:"createdAt"` | 29 | CreatedAt time.Time `json:"createdAt"` |
| 30 | // 阶段和承接人 | 30 | // 阶段和承接人 |
| 31 | - StageAndUndertaker *StageAndUndertaker `json:"stageAndUndertaker"` | 31 | + StageAndUndertaker []*StageAndUndertaker `json:"stageAndUndertaker"` |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | func (dto *MoneyIncentivesEstimateDto) LoadDto(contract *domain.CooperationContract) error { | 34 | func (dto *MoneyIncentivesEstimateDto) LoadDto(contract *domain.CooperationContract) error { |
| 35 | + // TODO 阶段承接人数据聚合 | ||
| 35 | dto.CooperationContractId = contract.CooperationContractId | 36 | dto.CooperationContractId = contract.CooperationContractId |
| 36 | dto.CooperationContractNumber = contract.CooperationContractNumber | 37 | dto.CooperationContractNumber = contract.CooperationContractNumber |
| 37 | dto.CooperationContractName = contract.CooperationContractName | 38 | dto.CooperationContractName = contract.CooperationContractName |
| @@ -39,9 +40,9 @@ func (dto *MoneyIncentivesEstimateDto) LoadDto(contract *domain.CooperationContr | @@ -39,9 +40,9 @@ func (dto *MoneyIncentivesEstimateDto) LoadDto(contract *domain.CooperationContr | ||
| 39 | dto.Department = contract.Department | 40 | dto.Department = contract.Department |
| 40 | dto.CooperationContractSponsorName = contract.CooperationContractSponsor.UserName | 41 | dto.CooperationContractSponsorName = contract.CooperationContractSponsor.UserName |
| 41 | dto.CreatedAt = contract.CreatedAt | 42 | dto.CreatedAt = contract.CreatedAt |
| 42 | - dto.StageAndUndertaker = &StageAndUndertaker{ | 43 | + dto.StageAndUndertaker = append(dto.StageAndUndertaker, &StageAndUndertaker{ |
| 43 | Stage: 0, | 44 | Stage: 0, |
| 44 | - Undertakers: []*domain.Undertaker{}, | ||
| 45 | - } | 45 | + Undertakers: nil, |
| 46 | + }) | ||
| 46 | return nil | 47 | return nil |
| 47 | } | 48 | } |
| @@ -27,7 +27,6 @@ type ListDividendsIncentivesEstimateQuery struct { | @@ -27,7 +27,6 @@ type ListDividendsIncentivesEstimateQuery struct { | ||
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | func (listDividendsIncentivesEstimateQuery *ListDividendsIncentivesEstimateQuery) Valid(validation *validation.Validation) { | 29 | func (listDividendsIncentivesEstimateQuery *ListDividendsIncentivesEstimateQuery) Valid(validation *validation.Validation) { |
| 30 | - //validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 31 | } | 30 | } |
| 32 | 31 | ||
| 33 | func (listDividendsIncentivesEstimateQuery *ListDividendsIncentivesEstimateQuery) ValidateQuery() error { | 32 | func (listDividendsIncentivesEstimateQuery *ListDividendsIncentivesEstimateQuery) ValidateQuery() error { |
| @@ -75,24 +75,32 @@ func (dividendsEstimateService *DividendsEstimateService) ListDividendsIncentive | @@ -75,24 +75,32 @@ func (dividendsEstimateService *DividendsEstimateService) ListDividendsIncentive | ||
| 75 | for _, orderGood := range orderGoods { | 75 | for _, orderGood := range orderGoods { |
| 76 | dividendsIncentivesEstimateDto := &dto.DividendsIncentivesEstimateDto{} | 76 | dividendsIncentivesEstimateDto := &dto.DividendsIncentivesEstimateDto{} |
| 77 | if orderGood.DividendsOrderNumber != "" { // 查询分红订单 | 77 | if orderGood.DividendsOrderNumber != "" { // 查询分红订单 |
| 78 | - dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderNumber": orderGood.DividendsOrderNumber}) | 78 | + dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{ |
| 79 | + "dividendsOrderNumber": orderGood.DividendsOrderNumber, | ||
| 80 | + "companyId": orderGood.CompanyId, | ||
| 81 | + "orgId": orderGood.OrgId, | ||
| 82 | + }) | ||
| 79 | if err != nil { | 83 | if err != nil { |
| 80 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 84 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 81 | } | 85 | } |
| 82 | if dividendsOrder == nil { | 86 | if dividendsOrder == nil { |
| 83 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsOrderNumber)) | 87 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("分红订单%s不存在", orderGood.DividendsOrderNumber)) |
| 84 | } | 88 | } |
| 85 | if err := dividendsIncentivesEstimateDto.LoadDto(orderGood, dividendsOrder.DividendsOrderNumber, dividendsOrder.DividendsOriginalOrderNum, dividendsOrder.CustomerName, dividendsOrder.Region.RegionName, dividendsOrder.OrderTime); err != nil { | 89 | if err := dividendsIncentivesEstimateDto.LoadDto(orderGood, dividendsOrder.DividendsOrderNumber, dividendsOrder.DividendsOriginalOrderNum, dividendsOrder.CustomerName, dividendsOrder.Region.RegionName, dividendsOrder.OrderTime); err != nil { |
| 86 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 90 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 87 | } | 91 | } |
| 88 | dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto) | 92 | dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto) |
| 89 | } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单 | 93 | } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单 |
| 90 | - dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{"dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber}) | 94 | + dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{ |
| 95 | + "companyId": orderGood.CompanyId, | ||
| 96 | + "orgId": orderGood.OrgId, | ||
| 97 | + "dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber, | ||
| 98 | + }) | ||
| 91 | if err != nil { | 99 | if err != nil { |
| 92 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 100 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 93 | } | 101 | } |
| 94 | if dividendsReturnedOrder == nil { | 102 | if dividendsReturnedOrder == nil { |
| 95 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsReturnedOrderNumber)) | 103 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("分红退货单%s不存在", orderGood.DividendsReturnedOrderNumber)) |
| 96 | } | 104 | } |
| 97 | if err := dividendsIncentivesEstimateDto.LoadDto(orderGood, dividendsReturnedOrder.DividendsReturnedOrderNumber, dividendsReturnedOrder.OriginalOrderNum, dividendsReturnedOrder.DividendsReturnedCustomerName, dividendsReturnedOrder.Region.RegionName, dividendsReturnedOrder.OrderTime); err != nil { | 105 | if err := dividendsIncentivesEstimateDto.LoadDto(orderGood, dividendsReturnedOrder.DividendsReturnedOrderNumber, dividendsReturnedOrder.OriginalOrderNum, dividendsReturnedOrder.DividendsReturnedCustomerName, dividendsReturnedOrder.Region.RegionName, dividendsReturnedOrder.OrderTime); err != nil { |
| 98 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 106 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -223,6 +231,11 @@ func (dividendsEstimateService *DividendsEstimateService) CancelDividendsEstimat | @@ -223,6 +231,11 @@ func (dividendsEstimateService *DividendsEstimateService) CancelDividendsEstimat | ||
| 223 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cancelDividendsEstimateCommand.DividendsEstimateId, 10))) | 231 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(cancelDividendsEstimateCommand.DividendsEstimateId, 10))) |
| 224 | } | 232 | } |
| 225 | 233 | ||
| 234 | + // 校验重复取消 | ||
| 235 | + if dividendsEstimate.IsCanceled { | ||
| 236 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已取消的分红单不能重复取消") | ||
| 237 | + } | ||
| 238 | + | ||
| 226 | // 校验是否能够取消 | 239 | // 校验是否能够取消 |
| 227 | if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销 | 240 | if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销 |
| 228 | if count, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum}); err2 != nil { | 241 | if count, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum}); err2 != nil { |
| @@ -328,6 +341,11 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs | @@ -328,6 +341,11 @@ func (dividendsEstimateService *DividendsEstimateService) BatchCancelDividendsEs | ||
| 328 | if count > 0 { | 341 | if count > 0 { |
| 329 | // 校验分红预算是否可以取消,已有相关分红预算单已结算,无法取消 | 342 | // 校验分红预算是否可以取消,已有相关分红预算单已结算,无法取消 |
| 330 | for _, dividendsEstimate := range dividendsEstimates { | 343 | for _, dividendsEstimate := range dividendsEstimates { |
| 344 | + // 校验重复取消 | ||
| 345 | + if dividendsEstimate.IsCanceled { | ||
| 346 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "已取消的分红单不能重复取消") | ||
| 347 | + } | ||
| 348 | + | ||
| 331 | // 校验是否能够取消 | 349 | // 校验是否能够取消 |
| 332 | if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销 | 350 | if dividendsEstimate.DividendsType == domain.ORDER_DIVIDENDS || dividendsEstimate.DividendsType == domain.RETURN_WRITE_OFF { // 订单分红、退货冲销 |
| 333 | if count, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum}); err2 != nil { | 351 | if count, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{"orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum}); err2 != nil { |
| @@ -542,25 +560,25 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | @@ -542,25 +560,25 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | ||
| 542 | operator = data | 560 | operator = data |
| 543 | } | 561 | } |
| 544 | 562 | ||
| 545 | - // 分红订单仓储初始化 | ||
| 546 | - var dividendsOrderRepository domain.DividendsOrderRepository | ||
| 547 | - if value, err := factory.CreateDividendsOrderRepository(map[string]interface{}{ | ||
| 548 | - "transactionContext": transactionContext, | ||
| 549 | - }); err != nil { | ||
| 550 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 551 | - } else { | ||
| 552 | - dividendsOrderRepository = value | ||
| 553 | - } | 563 | + //// 分红订单仓储初始化 |
| 564 | + //var dividendsOrderRepository domain.DividendsOrderRepository | ||
| 565 | + //if value, err := factory.CreateDividendsOrderRepository(map[string]interface{}{ | ||
| 566 | + // "transactionContext": transactionContext, | ||
| 567 | + //}); err != nil { | ||
| 568 | + // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 569 | + //} else { | ||
| 570 | + // dividendsOrderRepository = value | ||
| 571 | + //} | ||
| 554 | 572 | ||
| 555 | // 分红退货单仓储初始化 | 573 | // 分红退货单仓储初始化 |
| 556 | - var dividendsReturnedOrderRepository domain.DividendsReturnedOrderRepository | ||
| 557 | - if value, err := factory.CreateDividendsReturnedOrderRepository(map[string]interface{}{ | ||
| 558 | - "transactionContext": transactionContext, | ||
| 559 | - }); err != nil { | ||
| 560 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 561 | - } else { | ||
| 562 | - dividendsReturnedOrderRepository = value | ||
| 563 | - } | 574 | + //var dividendsReturnedOrderRepository domain.DividendsReturnedOrderRepository |
| 575 | + //if value, err := factory.CreateDividendsReturnedOrderRepository(map[string]interface{}{ | ||
| 576 | + // "transactionContext": transactionContext, | ||
| 577 | + //}); err != nil { | ||
| 578 | + // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 579 | + //} else { | ||
| 580 | + // dividendsReturnedOrderRepository = value | ||
| 581 | + //} | ||
| 564 | 582 | ||
| 565 | // 订单产品仓储初始化 | 583 | // 订单产品仓储初始化 |
| 566 | var orderGoodRepository domain.OrderGoodRepository | 584 | var orderGoodRepository domain.OrderGoodRepository |
| @@ -605,103 +623,140 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | @@ -605,103 +623,140 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | ||
| 605 | }) | 623 | }) |
| 606 | } | 624 | } |
| 607 | 625 | ||
| 626 | + // 统计成功预算的分红订单 | ||
| 627 | + estimateSuccessfullyDividendsOrders := make(map[string]string) | ||
| 628 | + | ||
| 629 | + // 统计预算失败的分红订单 | ||
| 630 | + estimateFailedDividendsOrders := make(map[string]string) | ||
| 631 | + | ||
| 608 | // 获取订单产品 | 632 | // 获取订单产品 |
| 609 | if _, orderGoods, err := orderGoodRepository.Find(map[string]interface{}{ | 633 | if _, orderGoods, err := orderGoodRepository.Find(map[string]interface{}{ |
| 610 | "orderGoodIds": orderGoodIds, | 634 | "orderGoodIds": orderGoodIds, |
| 611 | }); err != nil { | 635 | }); err != nil { |
| 612 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 636 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 613 | } else { | 637 | } else { |
| 614 | - var dividendsEstimates []*domain.DividendsEstimate | 638 | + dividendsEstimates := make([]*domain.DividendsEstimate, 0) |
| 639 | + // 统计当前分红预算单数 | ||
| 640 | + count, err := dividendsEstimateDao.CountDividendsEstimate(map[string]interface{}{ | ||
| 641 | + "companyId": confirmDividendsIncentivesEstimateCommand.CompanyId, | ||
| 642 | + }) | ||
| 643 | + if err != nil { | ||
| 644 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 645 | + } | ||
| 646 | + var countDividendsEstimate int64 | ||
| 615 | for _, orderGood := range orderGoods { | 647 | for _, orderGood := range orderGoods { |
| 616 | dividendsEstimate := &domain.DividendsEstimate{} | 648 | dividendsEstimate := &domain.DividendsEstimate{} |
| 617 | if orderGood.DividendsOrderNumber != "" { // 查询分红订单 | 649 | if orderGood.DividendsOrderNumber != "" { // 查询分红订单 |
| 618 | - dividendsOrder, err3 := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderNumber": orderGood.DividendsOrderNumber}) | ||
| 619 | - if err3 != nil { | ||
| 620 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单不存在") | ||
| 621 | - } | ||
| 622 | - if dividendsOrder == nil { | ||
| 623 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsOrderNumber)) | ||
| 624 | - } | 650 | + //dividendsOrder, err3 := dividendsOrderRepository.FindOne(map[string]interface{}{ |
| 651 | + // "dividendsOrderNumber": orderGood.DividendsOrderNumber, | ||
| 652 | + // "companyId": orderGood.CompanyId, | ||
| 653 | + // "orgId": orderGood.OrgId, | ||
| 654 | + //}) | ||
| 655 | + //if err3 != nil { | ||
| 656 | + // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单不存在") | ||
| 657 | + //} | ||
| 658 | + //if dividendsOrder == nil { | ||
| 659 | + // return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("分红订单%s不存在", orderGood.DividendsOrderNumber)) | ||
| 660 | + //} | ||
| 625 | // 分红订单产品预算 | 661 | // 分红订单产品预算 |
| 626 | if dividendsEstimateDetails, err := confirmDividendsIncentivesEstimateService.Confirm(orderGoods); err != nil { | 662 | if dividendsEstimateDetails, err := confirmDividendsIncentivesEstimateService.Confirm(orderGoods); err != nil { |
| 627 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 663 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 628 | } else { | 664 | } else { |
| 629 | for _, dividendsEstimateDetail := range dividendsEstimateDetails { | 665 | for _, dividendsEstimateDetail := range dividendsEstimateDetails { |
| 630 | - // 生成分红预算单号 | ||
| 631 | - dividendsEstimateOrderNumber, err := dividendsEstimateDao.GenerateDividendsEstimateNumber() | ||
| 632 | - if err != nil { | ||
| 633 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 634 | - } | ||
| 635 | - dividendsEstimate = &domain.DividendsEstimate{ | ||
| 636 | - DividendsEstimateId: 0, | ||
| 637 | - DividendsAccountStatus: domain.TO_BE_ACCOUNT, | ||
| 638 | - DividendsAmount: dividendsEstimateDetail.DividendsAmount, | ||
| 639 | - DividendsEstimateOrderNumber: dividendsEstimateOrderNumber, | ||
| 640 | - DividendsEstimateTime: time.Now(), | ||
| 641 | - DividendsParticipateType: dividendsEstimateDetail.DividendsParticipateType, | ||
| 642 | - DividendsType: domain.ORDER_DIVIDENDS, | ||
| 643 | - DividendsTypeName: "订单分红", | ||
| 644 | - OrderOrReturnedOrderNum: orderGood.DividendsOrderNumber, | ||
| 645 | - CooperationContractNumber: orderGood.CooperationContractNumber, | ||
| 646 | - DividendsUser: dividendsEstimateDetail.DividendsUser, | ||
| 647 | - DividendsStage: dividendsEstimateDetail.DividendsStage, | ||
| 648 | - Org: organization, | ||
| 649 | - Company: company, | ||
| 650 | - Operator: operator, | ||
| 651 | - OperateTime: time.Time{}, | ||
| 652 | - IsCanceled: false, | ||
| 653 | - CreatedAt: time.Now(), | ||
| 654 | - DeletedAt: time.Time{}, | ||
| 655 | - UpdatedAt: time.Time{}, | ||
| 656 | - OrderGoodId: orderGood.OrderGoodId, | ||
| 657 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 666 | + if dividendsEstimateDetail.IsSuccessfully { |
| 667 | + // 生成分红预算单号 | ||
| 668 | + dividendsEstimateOrderNumber, err := dividendsEstimateDetail.GenerateSpecificDividendsEstimateNumber(int64(count), countDividendsEstimate) | ||
| 669 | + if err != nil { | ||
| 670 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 671 | + } | ||
| 672 | + | ||
| 673 | + // 记录成功的订单号 | ||
| 674 | + estimateSuccessfullyDividendsOrders[dividendsEstimateDetail.OrderOrReturnedOrderNumber] = dividendsEstimateDetail.OrderOrReturnedOrderNumber | ||
| 675 | + | ||
| 676 | + // 统计分红预算单数目 | ||
| 677 | + countDividendsEstimate = countDividendsEstimate + 1 | ||
| 678 | + | ||
| 679 | + dividendsEstimate = &domain.DividendsEstimate{ | ||
| 680 | + DividendsEstimateId: 0, | ||
| 681 | + DividendsAccountStatus: domain.TO_BE_ACCOUNT, | ||
| 682 | + DividendsAmount: dividendsEstimateDetail.DividendsAmount, | ||
| 683 | + DividendsEstimateOrderNumber: dividendsEstimateOrderNumber, | ||
| 684 | + DividendsEstimateTime: time.Now(), | ||
| 685 | + DividendsParticipateType: dividendsEstimateDetail.DividendsParticipateType, | ||
| 686 | + DividendsType: domain.ORDER_DIVIDENDS, | ||
| 687 | + DividendsTypeName: "订单分红", | ||
| 688 | + OrderOrReturnedOrderNum: orderGood.DividendsOrderNumber, | ||
| 689 | + CooperationContractNumber: orderGood.CooperationContractNumber, | ||
| 690 | + DividendsUser: dividendsEstimateDetail.DividendsUser, | ||
| 691 | + DividendsStage: dividendsEstimateDetail.DividendsStage, | ||
| 692 | + Org: organization, | ||
| 693 | + Company: company, | ||
| 694 | + Operator: operator, | ||
| 695 | + OperateTime: time.Time{}, | ||
| 696 | + IsCanceled: false, | ||
| 697 | + CreatedAt: time.Now(), | ||
| 698 | + DeletedAt: time.Time{}, | ||
| 699 | + UpdatedAt: time.Time{}, | ||
| 700 | + OrderGoodId: orderGood.OrderGoodId, | ||
| 701 | + OrderGoodAmount: orderGood.OrderGoodAmount, | ||
| 702 | + } | ||
| 703 | + | ||
| 704 | + dividendsEstimates = append(dividendsEstimates, dividendsEstimate) | ||
| 705 | + } else { | ||
| 706 | + // 记录失败的订单号和原因s | ||
| 707 | + estimateFailedDividendsOrders[dividendsEstimateDetail.OrderOrReturnedOrderNumber] = dividendsEstimateDetail.Reason | ||
| 658 | } | 708 | } |
| 659 | - dividendsEstimates = append(dividendsEstimates, dividendsEstimate) | ||
| 660 | } | 709 | } |
| 661 | } | 710 | } |
| 662 | } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单 | 711 | } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单 |
| 663 | - dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{"dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber}) | ||
| 664 | - if err != nil { | ||
| 665 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 666 | - } | ||
| 667 | - if dividendsReturnedOrder == nil { | ||
| 668 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsReturnedOrderNumber)) | ||
| 669 | - } | ||
| 670 | // 分红退货单产品预算 | 712 | // 分红退货单产品预算 |
| 671 | if dividendsReturnedEstimateDetails, err := confirmDividendsIncentivesEstimateService.Confirm(orderGoods); err != nil { | 713 | if dividendsReturnedEstimateDetails, err := confirmDividendsIncentivesEstimateService.Confirm(orderGoods); err != nil { |
| 672 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 714 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 673 | } else { | 715 | } else { |
| 674 | for _, dividendsReturnedEstimateDetail := range dividendsReturnedEstimateDetails { | 716 | for _, dividendsReturnedEstimateDetail := range dividendsReturnedEstimateDetails { |
| 675 | - // 生成分红预算单号 | ||
| 676 | - dividendsEstimateOrderNumber, err := dividendsEstimateDao.GenerateDividendsEstimateNumber() | ||
| 677 | - if err != nil { | ||
| 678 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 679 | - } | ||
| 680 | - dividendsEstimate = &domain.DividendsEstimate{ | ||
| 681 | - DividendsEstimateId: 0, | ||
| 682 | - DividendsAccountStatus: domain.TO_BE_ACCOUNT, | ||
| 683 | - DividendsAmount: dividendsReturnedEstimateDetail.DividendsAmount, | ||
| 684 | - DividendsEstimateOrderNumber: dividendsEstimateOrderNumber, | ||
| 685 | - DividendsEstimateTime: time.Now(), | ||
| 686 | - DividendsParticipateType: dividendsReturnedEstimateDetail.DividendsParticipateType, | ||
| 687 | - DividendsType: domain.RETURN_WRITE_OFF, | ||
| 688 | - DividendsTypeName: "退货冲销", | ||
| 689 | - OrderOrReturnedOrderNum: orderGood.DividendsReturnedOrderNumber, | ||
| 690 | - CooperationContractNumber: orderGood.CooperationContractNumber, | ||
| 691 | - DividendsUser: dividendsReturnedEstimateDetail.DividendsUser, | ||
| 692 | - DividendsStage: dividendsReturnedEstimateDetail.DividendsStage, | ||
| 693 | - Org: organization, | ||
| 694 | - Company: company, | ||
| 695 | - Operator: operator, | ||
| 696 | - OperateTime: time.Time{}, | ||
| 697 | - IsCanceled: false, | ||
| 698 | - CreatedAt: time.Now(), | ||
| 699 | - DeletedAt: time.Time{}, | ||
| 700 | - UpdatedAt: time.Time{}, | ||
| 701 | - OrderGoodId: orderGood.OrderGoodId, | ||
| 702 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 717 | + if dividendsReturnedEstimateDetail.IsSuccessfully { |
| 718 | + // 生成分红预算单号 | ||
| 719 | + dividendsEstimateOrderNumber, err := dividendsReturnedEstimateDetail.GenerateSpecificDividendsEstimateNumber(int64(count), countDividendsEstimate) | ||
| 720 | + if err != nil { | ||
| 721 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 722 | + } | ||
| 723 | + | ||
| 724 | + // 记录成功的退货单号 | ||
| 725 | + estimateSuccessfullyDividendsOrders[dividendsReturnedEstimateDetail.OrderOrReturnedOrderNumber] = dividendsReturnedEstimateDetail.OrderOrReturnedOrderNumber | ||
| 726 | + | ||
| 727 | + // 统计生成的预算单数量 | ||
| 728 | + countDividendsEstimate = countDividendsEstimate + 1 | ||
| 729 | + | ||
| 730 | + dividendsEstimate = &domain.DividendsEstimate{ | ||
| 731 | + DividendsEstimateId: 0, | ||
| 732 | + DividendsAccountStatus: domain.TO_BE_ACCOUNT, | ||
| 733 | + DividendsAmount: dividendsReturnedEstimateDetail.DividendsAmount, | ||
| 734 | + DividendsEstimateOrderNumber: dividendsEstimateOrderNumber, | ||
| 735 | + DividendsEstimateTime: time.Now(), | ||
| 736 | + DividendsParticipateType: dividendsReturnedEstimateDetail.DividendsParticipateType, | ||
| 737 | + DividendsType: domain.RETURN_WRITE_OFF, | ||
| 738 | + DividendsTypeName: "退货冲销", | ||
| 739 | + OrderOrReturnedOrderNum: orderGood.DividendsReturnedOrderNumber, | ||
| 740 | + CooperationContractNumber: orderGood.CooperationContractNumber, | ||
| 741 | + DividendsUser: dividendsReturnedEstimateDetail.DividendsUser, | ||
| 742 | + DividendsStage: dividendsReturnedEstimateDetail.DividendsStage, | ||
| 743 | + Org: organization, | ||
| 744 | + Company: company, | ||
| 745 | + Operator: operator, | ||
| 746 | + OperateTime: time.Time{}, | ||
| 747 | + IsCanceled: false, | ||
| 748 | + CreatedAt: time.Now(), | ||
| 749 | + DeletedAt: time.Time{}, | ||
| 750 | + UpdatedAt: time.Time{}, | ||
| 751 | + OrderGoodId: orderGood.OrderGoodId, | ||
| 752 | + OrderGoodAmount: orderGood.OrderGoodAmount, | ||
| 753 | + } | ||
| 754 | + | ||
| 755 | + dividendsEstimates = append(dividendsEstimates, dividendsEstimate) | ||
| 756 | + } else { | ||
| 757 | + // 记录失败的退货单号和原因 | ||
| 758 | + estimateFailedDividendsOrders[dividendsReturnedEstimateDetail.OrderOrReturnedOrderNumber] = dividendsReturnedEstimateDetail.Reason | ||
| 703 | } | 759 | } |
| 704 | - dividendsEstimates = append(dividendsEstimates, dividendsEstimate) | ||
| 705 | } | 760 | } |
| 706 | } | 761 | } |
| 707 | } | 762 | } |
| @@ -709,26 +764,29 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | @@ -709,26 +764,29 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | ||
| 709 | log.Logger.Info("新增的分红预算单", map[string]interface{}{ | 764 | log.Logger.Info("新增的分红预算单", map[string]interface{}{ |
| 710 | "dividendsEstimates": dividendsEstimates, | 765 | "dividendsEstimates": dividendsEstimates, |
| 711 | }) | 766 | }) |
| 712 | - | ||
| 713 | - // 创建成功的分红预算单 | ||
| 714 | - var dividendsEstimatesSavedSuccessfully []*domain.DividendsEstimate | ||
| 715 | - // 创建失败的分红预算单 | ||
| 716 | - var dividendsEstimateSaveFailed []*domain.DividendsEstimate | ||
| 717 | - for _, dividendsEstimate := range dividendsEstimates { | ||
| 718 | - if dividendsEstimateSaved, err := dividendsEstimateRepository.Save(dividendsEstimate); err != nil { | ||
| 719 | - dividendsEstimateSaveFailed = append(dividendsEstimateSaveFailed, dividendsEstimate) | ||
| 720 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 721 | - } else if dividendsEstimateSaved != nil { | ||
| 722 | - dividendsEstimatesSavedSuccessfully = append(dividendsEstimatesSavedSuccessfully, dividendsEstimate) | 767 | + if dividendsEstimatesSaved, err := dividendsEstimateRepository.SaveMany(dividendsEstimates); err != nil { |
| 768 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 769 | + } else { | ||
| 770 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 771 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 723 | } | 772 | } |
| 773 | + // 分析成功和失败原因 | ||
| 774 | + successfullyCount := len(dividendsEstimatesSaved) | ||
| 775 | + // 错误原因收集,返回第一个可能的原因 | ||
| 776 | + failedReason := make([]string, 0) | ||
| 777 | + for _, v := range estimateFailedDividendsOrders { | ||
| 778 | + failedReason = append(failedReason, v) | ||
| 779 | + } | ||
| 780 | + var failedReasonStr string | ||
| 781 | + if len(failedReason) > 0 { | ||
| 782 | + failedReasonStr = failedReason[0] | ||
| 783 | + } else { | ||
| 784 | + failedReasonStr = "无" | ||
| 785 | + } | ||
| 786 | + return map[string]interface{}{ | ||
| 787 | + "report": fmt.Sprintf("已完成%d笔单订单分红预算,生成%d笔单分红预算,%d笔订单分红预算失败,失败原因:%s", len(estimateSuccessfullyDividendsOrders), successfullyCount, len(estimateFailedDividendsOrders), failedReasonStr), | ||
| 788 | + }, nil | ||
| 724 | } | 789 | } |
| 725 | - | ||
| 726 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
| 727 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 728 | - } | ||
| 729 | - // TODO 分析成功和失败原因 | ||
| 730 | - | ||
| 731 | - return dividendsEstimatesSavedSuccessfully, nil | ||
| 732 | } | 790 | } |
| 733 | } | 791 | } |
| 734 | 792 | ||
| @@ -823,11 +881,20 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | @@ -823,11 +881,20 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | ||
| 823 | dividendsEstimateRepository = value | 881 | dividendsEstimateRepository = value |
| 824 | } | 882 | } |
| 825 | 883 | ||
| 826 | - cooperationContractId, _ := strconv.ParseInt(confirmMoneyIncentivesEstimateCommand.CooperationContractId, 10, 64) | ||
| 827 | - undertakerUIDs, _ := utils.SliceAtoi(confirmMoneyIncentivesEstimateCommand.UndertakerUids) | 884 | + cooperationContractId, err := strconv.ParseInt(confirmMoneyIncentivesEstimateCommand.CooperationContractId, 10, 64) |
| 885 | + if err != nil { | ||
| 886 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "合约编号类型错误:"+err.Error()) | ||
| 887 | + } | ||
| 888 | + | ||
| 889 | + undertakerUIDs, err := utils.SliceAtoi(confirmMoneyIncentivesEstimateCommand.UndertakerUids) | ||
| 890 | + if err != nil { | ||
| 891 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "承接人UID类型错误:"+err.Error()) | ||
| 892 | + } | ||
| 828 | 893 | ||
| 829 | // 获取共创合约 | 894 | // 获取共创合约 |
| 830 | - cooperationContract, err := cooperationContractRepository.FindOne(map[string]interface{}{"cooperationContractId": cooperationContractId}) | 895 | + cooperationContract, err := cooperationContractRepository.FindOne(map[string]interface{}{ |
| 896 | + "cooperationContractId": cooperationContractId, | ||
| 897 | + }) | ||
| 831 | if err != nil { | 898 | if err != nil { |
| 832 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 899 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 833 | } | 900 | } |
| @@ -837,16 +904,28 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | @@ -837,16 +904,28 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | ||
| 837 | 904 | ||
| 838 | var dividendsEstimates []*domain.DividendsEstimate | 905 | var dividendsEstimates []*domain.DividendsEstimate |
| 839 | 906 | ||
| 907 | + // 统计当前分红预算单数 | ||
| 908 | + count, err := dividendsEstimateDao.CountDividendsEstimate(map[string]interface{}{ | ||
| 909 | + "companyId": confirmMoneyIncentivesEstimateCommand.CompanyId, | ||
| 910 | + }) | ||
| 911 | + | ||
| 912 | + // 分红预算单统计 | ||
| 913 | + var countDividendsEstimate int64 | ||
| 914 | + | ||
| 840 | // 共创合约预算 | 915 | // 共创合约预算 |
| 841 | if dividendsEstimateDetails, err2 := confirmMoneyIncentivesEstimateService.Confirm(cooperationContract, confirmMoneyIncentivesEstimateCommand.DividendsIncentivesStage, undertakerUIDs); err2 != nil { | 916 | if dividendsEstimateDetails, err2 := confirmMoneyIncentivesEstimateService.Confirm(cooperationContract, confirmMoneyIncentivesEstimateCommand.DividendsIncentivesStage, undertakerUIDs); err2 != nil { |
| 842 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error()) | 917 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error()) |
| 843 | } else { | 918 | } else { |
| 844 | for _, dividendsEstimateDetail := range dividendsEstimateDetails { | 919 | for _, dividendsEstimateDetail := range dividendsEstimateDetails { |
| 845 | // 生成分红预算单号 | 920 | // 生成分红预算单号 |
| 846 | - dividendsEstimateOrderNumber, err := dividendsEstimateDao.GenerateDividendsEstimateNumber() | 921 | + dividendsEstimateOrderNumber, err := dividendsEstimateDetail.GenerateSpecificDividendsEstimateNumber(int64(count), countDividendsEstimate) |
| 847 | if err != nil { | 922 | if err != nil { |
| 848 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 923 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 849 | } | 924 | } |
| 925 | + | ||
| 926 | + // 统计生成的预算单数目 | ||
| 927 | + countDividendsEstimate = countDividendsEstimate + 1 | ||
| 928 | + | ||
| 850 | dividendsEstimate := &domain.DividendsEstimate{ | 929 | dividendsEstimate := &domain.DividendsEstimate{ |
| 851 | DividendsEstimateId: 0, | 930 | DividendsEstimateId: 0, |
| 852 | DividendsAccountStatus: domain.TO_BE_ACCOUNT, | 931 | DividendsAccountStatus: domain.TO_BE_ACCOUNT, |
| @@ -869,15 +948,13 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | @@ -869,15 +948,13 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives | ||
| 869 | DeletedAt: time.Time{}, | 948 | DeletedAt: time.Time{}, |
| 870 | UpdatedAt: time.Time{}, | 949 | UpdatedAt: time.Time{}, |
| 871 | } | 950 | } |
| 951 | + | ||
| 872 | dividendsEstimates = append(dividendsEstimates, dividendsEstimate) | 952 | dividendsEstimates = append(dividendsEstimates, dividendsEstimate) |
| 873 | } | 953 | } |
| 874 | dividendsEstimatesSaved, err := dividendsEstimateRepository.SaveMany(dividendsEstimates) | 954 | dividendsEstimatesSaved, err := dividendsEstimateRepository.SaveMany(dividendsEstimates) |
| 875 | if err != nil { | 955 | if err != nil { |
| 876 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 956 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 877 | } | 957 | } |
| 878 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
| 879 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 880 | - } | ||
| 881 | if confirmMoneyIncentivesEstimateCommand.Action == 1 { // 只预算,不入库 | 958 | if confirmMoneyIncentivesEstimateCommand.Action == 1 { // 只预算,不入库 |
| 882 | return dividendsEstimatesSaved, nil | 959 | return dividendsEstimatesSaved, nil |
| 883 | } else if confirmMoneyIncentivesEstimateCommand.Action == 2 { // 确定预算 | 960 | } else if confirmMoneyIncentivesEstimateCommand.Action == 2 { // 确定预算 |
| @@ -1098,7 +1175,11 @@ func (dividendsEstimateService *DividendsEstimateService) SearchDividendsIncenti | @@ -1098,7 +1175,11 @@ func (dividendsEstimateService *DividendsEstimateService) SearchDividendsIncenti | ||
| 1098 | for _, orderGood := range orderGoods { | 1175 | for _, orderGood := range orderGoods { |
| 1099 | dividendsIncentivesEstimateDto := &dto.DividendsIncentivesEstimateDto{} | 1176 | dividendsIncentivesEstimateDto := &dto.DividendsIncentivesEstimateDto{} |
| 1100 | if orderGood.DividendsOrderNumber != "" { // 查询分红订单 | 1177 | if orderGood.DividendsOrderNumber != "" { // 查询分红订单 |
| 1101 | - dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderNumber": orderGood.DividendsOrderNumber}) | 1178 | + dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{ |
| 1179 | + "dividendsOrderNumber": orderGood.DividendsOrderNumber, | ||
| 1180 | + "companyId": orderGood.CompanyId, | ||
| 1181 | + "orgId": orderGood.OrgId, | ||
| 1182 | + }) | ||
| 1102 | if err != nil { | 1183 | if err != nil { |
| 1103 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 1184 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 1104 | } | 1185 | } |
| @@ -1110,7 +1191,11 @@ func (dividendsEstimateService *DividendsEstimateService) SearchDividendsIncenti | @@ -1110,7 +1191,11 @@ func (dividendsEstimateService *DividendsEstimateService) SearchDividendsIncenti | ||
| 1110 | } | 1191 | } |
| 1111 | dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto) | 1192 | dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto) |
| 1112 | } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单 | 1193 | } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单 |
| 1113 | - dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{"dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber}) | 1194 | + dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{ |
| 1195 | + "dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber, | ||
| 1196 | + "companyId": orderGood.CompanyId, | ||
| 1197 | + "orgId": orderGood.OrgId, | ||
| 1198 | + }) | ||
| 1114 | if err != nil { | 1199 | if err != nil { |
| 1115 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 1200 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 1116 | } | 1201 | } |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | "github.com/beego/beego/v2/core/validation" | 5 | "github.com/beego/beego/v2/core/validation" |
| 6 | "reflect" | 6 | "reflect" |
| 7 | "strings" | 7 | "strings" |
| 8 | + "time" | ||
| 8 | ) | 9 | ) |
| 9 | 10 | ||
| 10 | type OrderGoods struct { | 11 | type OrderGoods struct { |
| @@ -17,7 +18,7 @@ type OrderGoods struct { | @@ -17,7 +18,7 @@ type OrderGoods struct { | ||
| 17 | // 订单产品单价 | 18 | // 订单产品单价 |
| 18 | OrderGoodPrice float64 `json:"orderGoodPrice"` | 19 | OrderGoodPrice float64 `json:"orderGoodPrice"` |
| 19 | // 订单产品数量 | 20 | // 订单产品数量 |
| 20 | - OrderGoodQuantity int64 `json:"orderGoodQuantity"` | 21 | + OrderGoodQuantity float64 `json:"orderGoodQuantity"` |
| 21 | // 关联分红订单号 | 22 | // 关联分红订单号 |
| 22 | DividendsOrderNumber string `json:"dividendsOrderNumber"` | 23 | DividendsOrderNumber string `json:"dividendsOrderNumber"` |
| 23 | // 关联的共创合约编号 | 24 | // 关联的共创合约编号 |
| @@ -55,6 +56,28 @@ type CreateDividendsOrderCommand struct { | @@ -55,6 +56,28 @@ type CreateDividendsOrderCommand struct { | ||
| 55 | LineNumbers []int `cname:"记录行号" json:"lineNumbers"` | 56 | LineNumbers []int `cname:"记录行号" json:"lineNumbers"` |
| 56 | } | 57 | } |
| 57 | 58 | ||
| 59 | +// GenerateSpecificDividendsOrderNumber 生成自定义分红订单 | ||
| 60 | +func (createDividendsOrderCommand *CreateDividendsOrderCommand) GenerateSpecificDividendsOrderNumber(count int64, orderTime time.Time, index int64) (string, error) { | ||
| 61 | + currentTime := time.Now() | ||
| 62 | + if count+index < 1000 { | ||
| 63 | + countStr := fmt.Sprintf("%03d", count+index+1) | ||
| 64 | + timestamp := currentTime.Unix() | ||
| 65 | + timeNow := time.Unix(timestamp, 0) | ||
| 66 | + timeString := timeNow.Format("20060102") | ||
| 67 | + timeString = timeString[2:len(timeString)] | ||
| 68 | + dividendsOrderNumber := "SL" + timeString + "#" + countStr | ||
| 69 | + return dividendsOrderNumber, nil | ||
| 70 | + } else { | ||
| 71 | + countStr := fmt.Sprintf("%d", count+index+1) | ||
| 72 | + timestamp := currentTime.Unix() | ||
| 73 | + timeNow := time.Unix(timestamp, 0) | ||
| 74 | + timeString := timeNow.Format("20060102") | ||
| 75 | + timeString = timeString[2:len(timeString)] | ||
| 76 | + dividendsOrderNumber := "SL" + timeString + "#" + countStr | ||
| 77 | + return dividendsOrderNumber, nil | ||
| 78 | + } | ||
| 79 | +} | ||
| 80 | + | ||
| 58 | func (createDividendsOrderCommand *CreateDividendsOrderCommand) Valid(validation *validation.Validation) { | 81 | func (createDividendsOrderCommand *CreateDividendsOrderCommand) Valid(validation *validation.Validation) { |
| 59 | } | 82 | } |
| 60 | 83 |
| @@ -10,7 +10,7 @@ import ( | @@ -10,7 +10,7 @@ import ( | ||
| 10 | 10 | ||
| 11 | type RemoveDividendsOrderCommand struct { | 11 | type RemoveDividendsOrderCommand struct { |
| 12 | // 分红订单ID | 12 | // 分红订单ID |
| 13 | - DividendsOrderId string `cname:"分红订单ID" json:"dividendsOrderId" valid:"Required"` | 13 | + DividendsOrderId int64 `cname:"分红订单ID" json:"dividendsOrderId" valid:"Required"` |
| 14 | // 公司ID,通过集成REST上下文获取 | 14 | // 公司ID,通过集成REST上下文获取 |
| 15 | CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"` | 15 | CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"` |
| 16 | // 组织机构ID | 16 | // 组织机构ID |
| @@ -40,7 +40,7 @@ type UpdateDividendsOrderCommand struct { | @@ -40,7 +40,7 @@ type UpdateDividendsOrderCommand struct { | ||
| 40 | 40 | ||
| 41 | func (updateDividendsOrderCommand *UpdateDividendsOrderCommand) Valid(validation *validation.Validation) { | 41 | func (updateDividendsOrderCommand *UpdateDividendsOrderCommand) Valid(validation *validation.Validation) { |
| 42 | if len(updateDividendsOrderCommand.OrderGoods) <= 0 { | 42 | if len(updateDividendsOrderCommand.OrderGoods) <= 0 { |
| 43 | - validation.Error("激励规则不能为空") | 43 | + validation.Error("订单产品不能为空") |
| 44 | } else { | 44 | } else { |
| 45 | for i, _ := range updateDividendsOrderCommand.OrderGoods { | 45 | for i, _ := range updateDividendsOrderCommand.OrderGoods { |
| 46 | if updateDividendsOrderCommand.OrderGoods[i].OrderGoodId == "" { | 46 | if updateDividendsOrderCommand.OrderGoods[i].OrderGoodId == "" { |
| @@ -10,7 +10,7 @@ import ( | @@ -10,7 +10,7 @@ import ( | ||
| 10 | 10 | ||
| 11 | type GetDividendsOrderQuery struct { | 11 | type GetDividendsOrderQuery struct { |
| 12 | // 分红订单ID | 12 | // 分红订单ID |
| 13 | - DividendsOrderId int64 `cname:"分红订单ID" json:"dividendsOrderId" valid:"Required"` | 13 | + DividendsOrderId int64 `cname:"分红订单ID" json:"dividendsOrderId,omitempty"` |
| 14 | // 分红订单编号 | 14 | // 分红订单编号 |
| 15 | DividendsOrderNumber string `cname:"分红订单编号" json:"dividendsOrderNumber,omitempty"` | 15 | DividendsOrderNumber string `cname:"分红订单编号" json:"dividendsOrderNumber,omitempty"` |
| 16 | // 公司ID,通过集成REST上下文获取 | 16 | // 公司ID,通过集成REST上下文获取 |
| @@ -20,7 +20,7 @@ type GetDividendsOrderQuery struct { | @@ -20,7 +20,7 @@ type GetDividendsOrderQuery struct { | ||
| 20 | // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员 | 20 | // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员 |
| 21 | UserId int64 `cname:"用户ID" json:"userId" valid:"Required"` | 21 | UserId int64 `cname:"用户ID" json:"userId" valid:"Required"` |
| 22 | // 用户基础数据id | 22 | // 用户基础数据id |
| 23 | - UserBaseId int64 `canme:"用户基础数据ID" json:"userBaseId" valid:"Required"` | 23 | + UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId" valid:"Required"` |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | func (getDividendsOrderQuery *GetDividendsOrderQuery) Valid(validation *validation.Validation) { | 26 | func (getDividendsOrderQuery *GetDividendsOrderQuery) Valid(validation *validation.Validation) { |
| @@ -6,6 +6,7 @@ import ( | @@ -6,6 +6,7 @@ import ( | ||
| 6 | "fmt" | 6 | "fmt" |
| 7 | "github.com/linmadan/egglib-go/core/application" | 7 | "github.com/linmadan/egglib-go/core/application" |
| 8 | "github.com/linmadan/egglib-go/utils/tool_funs" | 8 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| 9 | + "github.com/shopspring/decimal" | ||
| 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsOrder/command" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsOrder/command" |
| 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsOrder/query" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsOrder/query" |
| 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" | 12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" |
| @@ -99,7 +100,9 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | @@ -99,7 +100,9 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | ||
| 99 | } | 100 | } |
| 100 | 101 | ||
| 101 | // 生成分红订单号 | 102 | // 生成分红订单号 |
| 102 | - dividendsOrderNumber, err := dividendsOrderDao.GenerateDividendsOrderNumber() | 103 | + dividendsOrderNumber, err := dividendsOrderDao.GenerateDividendsOrderNumber(map[string]interface{}{ |
| 104 | + "companyId": createDividendsOrderCommand.CompanyId, | ||
| 105 | + }) | ||
| 103 | if err != nil { | 106 | if err != nil { |
| 104 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 107 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 105 | } | 108 | } |
| @@ -107,7 +110,6 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | @@ -107,7 +110,6 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | ||
| 107 | // 校验分红订单编号是否唯一 | 110 | // 校验分红订单编号是否唯一 |
| 108 | numberAvailable, err := dividendsOrderDao.CheckDividendsOrderNumberAvailable(map[string]interface{}{ | 111 | numberAvailable, err := dividendsOrderDao.CheckDividendsOrderNumberAvailable(map[string]interface{}{ |
| 109 | "companyId": createDividendsOrderCommand.CompanyId, | 112 | "companyId": createDividendsOrderCommand.CompanyId, |
| 110 | - "orgId": createDividendsOrderCommand.OrgId, | ||
| 111 | "dividendsOrderNumber": dividendsOrderNumber, | 113 | "dividendsOrderNumber": dividendsOrderNumber, |
| 112 | }) | 114 | }) |
| 113 | if err != nil { | 115 | if err != nil { |
| @@ -117,13 +119,70 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | @@ -117,13 +119,70 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | ||
| 117 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "新增分红订单异常") | 119 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "新增分红订单异常") |
| 118 | } | 120 | } |
| 119 | 121 | ||
| 122 | + // 合约仓储初始化 | ||
| 123 | + var cooperationContractRepository domain.CooperationContractRepository | ||
| 124 | + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | ||
| 125 | + "transactionContext": transactionContext, | ||
| 126 | + }); err != nil { | ||
| 127 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 128 | + } else { | ||
| 129 | + cooperationContractRepository = value | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + // 查找合约 | ||
| 133 | + cooperationContractsMap := make(map[string]*domain.CooperationContract) | ||
| 134 | + if count, cooperationContracts, err := cooperationContractRepository.Find(map[string]interface{}{ | ||
| 135 | + "offsetLimit": false, | ||
| 136 | + "companyId": createDividendsOrderCommand.CompanyId, | ||
| 137 | + "orgId": createDividendsOrderCommand.OrgId, | ||
| 138 | + }); err != nil { | ||
| 139 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 140 | + } else { | ||
| 141 | + if count > 0 { | ||
| 142 | + for _, cooperationContract := range cooperationContracts { | ||
| 143 | + cooperationContractsMap[cooperationContract.CooperationContractNumber] = cooperationContract | ||
| 144 | + } | ||
| 145 | + } | ||
| 146 | + } | ||
| 147 | + | ||
| 148 | + // 订单时间转换 | ||
| 149 | + orderTimeInt, err := strconv.ParseInt(createDividendsOrderCommand.OrderTime, 10, 64) | ||
| 150 | + if err != nil { | ||
| 151 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间错误") | ||
| 152 | + } | ||
| 153 | + orderTime := utils.TransformTimestampToTime(orderTimeInt) | ||
| 154 | + | ||
| 120 | // 新增订单产品 | 155 | // 新增订单产品 |
| 121 | var orderGoods []*domain.OrderGood | 156 | var orderGoods []*domain.OrderGood |
| 122 | var dividendsOrderAmount float64 | 157 | var dividendsOrderAmount float64 |
| 123 | for _, orderGood := range createDividendsOrderCommand.OrderGoods { | 158 | for _, orderGood := range createDividendsOrderCommand.OrderGoods { |
| 159 | + // 计算订单产品金额 | ||
| 160 | + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64() | ||
| 161 | + | ||
| 162 | + // 校验合约 | ||
| 163 | + ruleMatchedFlag := false | ||
| 164 | + if orderGood.CooperationContractNumber != "" { | ||
| 165 | + // 校验共创合约激励类型是否正确 | ||
| 166 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 { | ||
| 167 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单产品不能关联金额激励规则") | ||
| 168 | + } | ||
| 169 | + // 校验产品关联合约的激励规则是否匹配订单时间 | ||
| 170 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil { | ||
| 171 | + for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules { | ||
| 172 | + if (orderTime.After(incentivesRule.DividendsIncentivesStageStart) || orderTime.Equal(incentivesRule.DividendsIncentivesStageStart)) && (orderTime.Before(incentivesRule.DividendsIncentivesStageEnd) || orderTime.Equal(incentivesRule.DividendsIncentivesStageEnd)) { | ||
| 173 | + ruleMatchedFlag = true | ||
| 174 | + break | ||
| 175 | + } | ||
| 176 | + } | ||
| 177 | + } | ||
| 178 | + if !ruleMatchedFlag { | ||
| 179 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间无法匹配分红激励规则,请重新选择") | ||
| 180 | + } | ||
| 181 | + } | ||
| 182 | + | ||
| 124 | orderGoods = append(orderGoods, &domain.OrderGood{ | 183 | orderGoods = append(orderGoods, &domain.OrderGood{ |
| 125 | OrderGoodId: 0, | 184 | OrderGoodId: 0, |
| 126 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 185 | + OrderGoodAmount: orderGoodAmount, |
| 127 | OrderGoodName: orderGood.OrderGoodName, | 186 | OrderGoodName: orderGood.OrderGoodName, |
| 128 | OrderGoodPrice: orderGood.OrderGoodPrice, | 187 | OrderGoodPrice: orderGood.OrderGoodPrice, |
| 129 | OrderGoodQuantity: orderGood.OrderGoodQuantity, | 188 | OrderGoodQuantity: orderGood.OrderGoodQuantity, |
| @@ -139,19 +198,11 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | @@ -139,19 +198,11 @@ func (dividendsOrderService *DividendsOrderService) CreateDividendsOrder(createD | ||
| 139 | UpdatedAt: time.Time{}, | 198 | UpdatedAt: time.Time{}, |
| 140 | }) | 199 | }) |
| 141 | // 计算分红订单金额 | 200 | // 计算分红订单金额 |
| 142 | - dividendsOrderAmount = dividendsOrderAmount + orderGood.OrderGoodAmount | ||
| 143 | - } | ||
| 144 | - | ||
| 145 | - // 订单时间转换 | ||
| 146 | - orderTimeInt, err := strconv.ParseInt(createDividendsOrderCommand.OrderTime, 10, 64) | ||
| 147 | - if err != nil { | ||
| 148 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间错误") | 201 | + dividendsOrderAmount, _ = decimal.NewFromFloat(dividendsOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense))).Float64() |
| 149 | } | 202 | } |
| 150 | - orderTime := utils.TransformTimestampToTime(orderTimeInt) | ||
| 151 | 203 | ||
| 152 | // 新增分红订单 | 204 | // 新增分红订单 |
| 153 | newDividendsOrder := &domain.DividendsOrder{ | 205 | newDividendsOrder := &domain.DividendsOrder{ |
| 154 | - DividendsOrderId: 0, | ||
| 155 | DividendsOrderNumber: dividendsOrderNumber, | 206 | DividendsOrderNumber: dividendsOrderNumber, |
| 156 | DividendsOriginalOrderNum: createDividendsOrderCommand.DividendsOriginalOrderNum, | 207 | DividendsOriginalOrderNum: createDividendsOrderCommand.DividendsOriginalOrderNum, |
| 157 | DividendsOrderAmount: dividendsOrderAmount, | 208 | DividendsOrderAmount: dividendsOrderAmount, |
| @@ -257,6 +308,33 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -257,6 +308,33 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 257 | operator = data | 308 | operator = data |
| 258 | } | 309 | } |
| 259 | 310 | ||
| 311 | + // 合约仓储初始化 | ||
| 312 | + var cooperationContractRepository domain.CooperationContractRepository | ||
| 313 | + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | ||
| 314 | + "transactionContext": transactionContext, | ||
| 315 | + }); err != nil { | ||
| 316 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 317 | + } else { | ||
| 318 | + cooperationContractRepository = value | ||
| 319 | + } | ||
| 320 | + | ||
| 321 | + // 查找合约 | ||
| 322 | + cooperationContractsMap := make(map[string]*domain.CooperationContract) | ||
| 323 | + countContracts, cooperationContracts, err := cooperationContractRepository.Find(map[string]interface{}{ | ||
| 324 | + "offsetLimit": false, | ||
| 325 | + "companyId": importDividendsOrderCommand.CompanyId, | ||
| 326 | + "orgId": importDividendsOrderCommand.OrgId, | ||
| 327 | + }) | ||
| 328 | + if err != nil { | ||
| 329 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 330 | + } else { | ||
| 331 | + if countContracts > 0 { | ||
| 332 | + for _, cooperationContract := range cooperationContracts { | ||
| 333 | + cooperationContractsMap[cooperationContract.CooperationContractNumber] = cooperationContract | ||
| 334 | + } | ||
| 335 | + } | ||
| 336 | + } | ||
| 337 | + | ||
| 260 | // 分红订单DAO初始化 | 338 | // 分红订单DAO初始化 |
| 261 | var dividendsOrderDao *dao.DividendsOrderDao | 339 | var dividendsOrderDao *dao.DividendsOrderDao |
| 262 | if value, err := factory.CreateDividendsOrderDao(map[string]interface{}{ | 340 | if value, err := factory.CreateDividendsOrderDao(map[string]interface{}{ |
| @@ -297,7 +375,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -297,7 +375,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 297 | } | 375 | } |
| 298 | 376 | ||
| 299 | // 必填项校验 | 377 | // 必填项校验 |
| 300 | - nullCellError := make([]interface{}, 0) | 378 | + nullCellError := make([]*domain.FailInfo, 0) |
| 301 | 379 | ||
| 302 | // 数据行计数 | 380 | // 数据行计数 |
| 303 | rowCnt := 0 | 381 | rowCnt := 0 |
| @@ -308,7 +386,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -308,7 +386,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 308 | for i, dividendsOrder := range importDividendsOrderCommand.DividendsOrderData { | 386 | for i, dividendsOrder := range importDividendsOrderCommand.DividendsOrderData { |
| 309 | rowCnt++ | 387 | rowCnt++ |
| 310 | nullCell := make([]interface{}, 0) | 388 | nullCell := make([]interface{}, 0) |
| 311 | - //var myRow []string | ||
| 312 | t := reflect.TypeOf(dividendsOrder) | 389 | t := reflect.TypeOf(dividendsOrder) |
| 313 | v := reflect.ValueOf(dividendsOrder) | 390 | v := reflect.ValueOf(dividendsOrder) |
| 314 | for k := 0; k < t.NumField(); k++ { | 391 | for k := 0; k < t.NumField(); k++ { |
| @@ -323,7 +400,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -323,7 +400,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 323 | } | 400 | } |
| 324 | if nullFlag { | 401 | if nullFlag { |
| 325 | myRow := &domain.FailInfo{ | 402 | myRow := &domain.FailInfo{ |
| 326 | - FailReason: "订单日期格式错误,请输入正确的订单日期", | 403 | + FailReason: "必填项为空", |
| 327 | } | 404 | } |
| 328 | myRow.ImportDividendsOrderData = &importDividendsOrderCommand.DividendsOrderData[i] | 405 | myRow.ImportDividendsOrderData = &importDividendsOrderCommand.DividendsOrderData[i] |
| 329 | nullCellError = append(nullCellError, myRow) | 406 | nullCellError = append(nullCellError, myRow) |
| @@ -459,7 +536,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -459,7 +536,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 459 | // 订单日期时间格式转换 | 536 | // 订单日期时间格式转换 |
| 460 | timeValue, err := time.ParseInLocation("2006/01/02", dividendsOrder.OrderTime, time.Local) | 537 | timeValue, err := time.ParseInLocation("2006/01/02", dividendsOrder.OrderTime, time.Local) |
| 461 | if err != nil { | 538 | if err != nil { |
| 462 | - //s := strconv.Itoa(i + 1) | ||
| 463 | tmpRow := &domain.FailInfo{ | 539 | tmpRow := &domain.FailInfo{ |
| 464 | FailReason: "无效的订单日期", | 540 | FailReason: "无效的订单日期", |
| 465 | } | 541 | } |
| @@ -469,7 +545,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -469,7 +545,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 469 | } | 545 | } |
| 470 | 546 | ||
| 471 | // 产品相关:产品名称,产品数量、产品价格、费用 | 547 | // 产品相关:产品名称,产品数量、产品价格、费用 |
| 472 | - quantity, err := strconv.ParseInt(dividendsOrder.OrderGoodQuantity, 10, 64) | 548 | + quantity, err := strconv.ParseFloat(dividendsOrder.OrderGoodQuantity, 64) |
| 473 | if err != nil { | 549 | if err != nil { |
| 474 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 550 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
| 475 | } | 551 | } |
| @@ -477,9 +553,13 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -477,9 +553,13 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 477 | if err != nil { | 553 | if err != nil { |
| 478 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 554 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
| 479 | } | 555 | } |
| 480 | - expense, err := strconv.ParseFloat(dividendsOrder.Expense, 64) | ||
| 481 | - if err != nil { | ||
| 482 | - return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 556 | + var expense float64 |
| 557 | + if dividendsOrder.Expense != "" { | ||
| 558 | + if expenseParse, err := strconv.ParseFloat(dividendsOrder.Expense, 64); err != nil { | ||
| 559 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 560 | + } else { | ||
| 561 | + expense = expenseParse | ||
| 562 | + } | ||
| 483 | } | 563 | } |
| 484 | 564 | ||
| 485 | // 初始化新建分红订单命令集 | 565 | // 初始化新建分红订单命令集 |
| @@ -510,7 +590,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -510,7 +590,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 510 | } | 590 | } |
| 511 | } else { // 聚合同一笔订单产品 | 591 | } else { // 聚合同一笔订单产品 |
| 512 | // 产品相关:产品名称,产品数量、产品价格、费用 | 592 | // 产品相关:产品名称,产品数量、产品价格、费用 |
| 513 | - quantity, err := strconv.ParseInt(dividendsOrder.OrderGoodQuantity, 10, 64) | 593 | + quantity, err := strconv.ParseFloat(dividendsOrder.OrderGoodQuantity, 64) |
| 514 | if err != nil { | 594 | if err != nil { |
| 515 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 595 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
| 516 | } | 596 | } |
| @@ -518,9 +598,13 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -518,9 +598,13 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 518 | if err != nil { | 598 | if err != nil { |
| 519 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 599 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
| 520 | } | 600 | } |
| 521 | - expense, err := strconv.ParseFloat(dividendsOrder.Expense, 64) | ||
| 522 | - if err != nil { | ||
| 523 | - return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 601 | + var expense float64 |
| 602 | + if dividendsOrder.Expense != "" { | ||
| 603 | + if expenseParse, err := strconv.ParseFloat(dividendsOrder.Expense, 64); err != nil { | ||
| 604 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 605 | + } else { | ||
| 606 | + expense = expenseParse | ||
| 607 | + } | ||
| 524 | } | 608 | } |
| 525 | 609 | ||
| 526 | dividendsOrderCommands[hashString].OrderGoods = append(dividendsOrderCommands[hashString].OrderGoods, command.OrderGoods{ | 610 | dividendsOrderCommands[hashString].OrderGoods = append(dividendsOrderCommands[hashString].OrderGoods, command.OrderGoods{ |
| @@ -586,7 +670,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -586,7 +670,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 586 | for _, errorData := range errorDataList { | 670 | for _, errorData := range errorDataList { |
| 587 | if len(errorData.GoodLine) == 0 { // 订单错误 | 671 | if len(errorData.GoodLine) == 0 { // 订单错误 |
| 588 | for _, line := range errorData.LineNumbers { | 672 | for _, line := range errorData.LineNumbers { |
| 589 | - //s := strconv.Itoa(line + 1) | ||
| 590 | tmpRow := &domain.FailInfo{ | 673 | tmpRow := &domain.FailInfo{ |
| 591 | FailReason: "数据校验错误:" + errorData.Error.Error(), | 674 | FailReason: "数据校验错误:" + errorData.Error.Error(), |
| 592 | } | 675 | } |
| @@ -595,7 +678,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -595,7 +678,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 595 | } | 678 | } |
| 596 | } else if len(errorData.GoodLine) > 0 { // 订单产品错误 | 679 | } else if len(errorData.GoodLine) > 0 { // 订单产品错误 |
| 597 | for line := range errorData.GoodLine { | 680 | for line := range errorData.GoodLine { |
| 598 | - //s := strconv.Itoa(line + 1) | ||
| 599 | tmpRow := &domain.FailInfo{ | 681 | tmpRow := &domain.FailInfo{ |
| 600 | FailReason: "订单产品信息错误:" + errorData.Error.Error(), | 682 | FailReason: "订单产品信息错误:" + errorData.Error.Error(), |
| 601 | } | 683 | } |
| @@ -613,36 +695,35 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -613,36 +695,35 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 613 | }, nil | 695 | }, nil |
| 614 | } | 696 | } |
| 615 | 697 | ||
| 616 | - // 批量导入创建分红订单 | ||
| 617 | - for _, dividendsOrder := range createDividendsOrderCommands { | 698 | + // 创建分红订单领域模型 |
| 699 | + var creatDividendsOrder []*domain.DividendsOrder | ||
| 700 | + | ||
| 701 | + // 统计当前分红订单数 | ||
| 702 | + count, err := dividendsOrderDao.CountDividendsOrder(map[string]interface{}{}) | ||
| 703 | + if err != nil { | ||
| 704 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 705 | + } | ||
| 706 | + | ||
| 707 | + // 批量创建分红订单 | ||
| 708 | + for i, dividendsOrder := range createDividendsOrderCommands { | ||
| 618 | // 生成分红订单号 | 709 | // 生成分红订单号 |
| 619 | - dividendsOrderNumber, err := dividendsOrderDao.GenerateDividendsOrderNumber() | 710 | + dividendsOrderNumber, err := dividendsOrder.GenerateSpecificDividendsOrderNumber(int64(count), time.Time{}, int64(i)) |
| 620 | if err != nil { | 711 | if err != nil { |
| 621 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 712 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 622 | } | 713 | } |
| 623 | 714 | ||
| 624 | - // 校验分红订单编号是否唯一 | ||
| 625 | - numberAvailable, err3 := dividendsOrderDao.CheckDividendsOrderNumberAvailable(map[string]interface{}{ | ||
| 626 | - "companyId": importDividendsOrderCommand.CompanyId, | ||
| 627 | - "orgId": importDividendsOrderCommand.OrgId, | ||
| 628 | - "dividendsOrderNumber": dividendsOrderNumber, | ||
| 629 | - }) | ||
| 630 | - if err3 != nil { | ||
| 631 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err3.Error()) | ||
| 632 | - } | ||
| 633 | - if !numberAvailable { | ||
| 634 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, "新增分红订单异常") | ||
| 635 | - } | ||
| 636 | - | ||
| 637 | - // 共创合约DAO初始化 | ||
| 638 | - var cooperationContractDao *dao.CooperationContractDao | ||
| 639 | - if value, err := factory.CreateCooperationContractDao(map[string]interface{}{ | ||
| 640 | - "transactionContext": transactionContext, | ||
| 641 | - }); err != nil { | ||
| 642 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 643 | - } else { | ||
| 644 | - cooperationContractDao = value | 715 | + // 订单时间转换 |
| 716 | + orderTimeInt, err := strconv.ParseInt(dividendsOrder.OrderTime, 10, 64) | ||
| 717 | + if err != nil { | ||
| 718 | + row := &domain.ImportInfo{ | ||
| 719 | + Error: application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("订单日期转换错误:%s", err)), | ||
| 720 | + LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行 | ||
| 721 | + GoodLine: map[int]interface{}{}, | ||
| 722 | + } | ||
| 723 | + errorDataList = append(errorDataList, row) | ||
| 724 | + continue | ||
| 645 | } | 725 | } |
| 726 | + orderTime := utils.TransformTimestampToTime(orderTimeInt) | ||
| 646 | 727 | ||
| 647 | // 新增订单产品 | 728 | // 新增订单产品 |
| 648 | var orderGoods []*domain.OrderGood | 729 | var orderGoods []*domain.OrderGood |
| @@ -650,20 +731,43 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -650,20 +731,43 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 650 | orderGoodErrMap := make(map[int]interface{}, 0) | 731 | orderGoodErrMap := make(map[int]interface{}, 0) |
| 651 | for i, orderGood := range dividendsOrder.OrderGoods { | 732 | for i, orderGood := range dividendsOrder.OrderGoods { |
| 652 | // 校验共创合约是否合法 | 733 | // 校验共创合约是否合法 |
| 734 | + contractNumberExist := false | ||
| 735 | + for _, cooperationContract := range cooperationContracts { | ||
| 736 | + if orderGood.CooperationContractNumber == cooperationContract.CooperationContractNumber { | ||
| 737 | + contractNumberExist = true | ||
| 738 | + break | ||
| 739 | + } | ||
| 740 | + } | ||
| 741 | + if !contractNumberExist { | ||
| 742 | + orderGoodErrMap[dividendsOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("共创合约编号不存在:%s", err)) | ||
| 743 | + } | ||
| 744 | + | ||
| 745 | + // 计算产品金额 | ||
| 746 | + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64() | ||
| 747 | + | ||
| 748 | + // 校验共创合约激励类型是否正确 | ||
| 749 | + ruleMatchedFlag := false | ||
| 653 | if orderGood.CooperationContractNumber != "" { | 750 | if orderGood.CooperationContractNumber != "" { |
| 654 | - contractNumberExist, _ := cooperationContractDao.CheckContractNumberExist(map[string]interface{}{ | ||
| 655 | - "companyId": importDividendsOrderCommand.CompanyId, | ||
| 656 | - "orgId": importDividendsOrderCommand.OrgId, | ||
| 657 | - "cooperationContractNumber": orderGood.CooperationContractNumber, | ||
| 658 | - }) | ||
| 659 | - if !contractNumberExist { | ||
| 660 | - orderGoodErrMap[dividendsOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("共创合约编号不存在:%s", err)) | 751 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 { |
| 752 | + orderGoodErrMap[dividendsOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, "退货单产品不能关联金额激励规则") | ||
| 753 | + } | ||
| 754 | + // 校验产品关联合约的激励规则是否匹配订单时间 | ||
| 755 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil { | ||
| 756 | + for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules { | ||
| 757 | + if (orderTime.After(incentivesRule.DividendsIncentivesStageStart) || orderTime.Equal(incentivesRule.DividendsIncentivesStageStart)) && (orderTime.Before(incentivesRule.DividendsIncentivesStageEnd) || orderTime.Equal(incentivesRule.DividendsIncentivesStageEnd)) { | ||
| 758 | + ruleMatchedFlag = true | ||
| 759 | + break | ||
| 760 | + } | ||
| 761 | + } | ||
| 762 | + } | ||
| 763 | + if !ruleMatchedFlag { | ||
| 764 | + orderGoodErrMap[dividendsOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间无法匹配分红激励规则,请重新选择") | ||
| 661 | } | 765 | } |
| 662 | } | 766 | } |
| 663 | 767 | ||
| 664 | orderGoods = append(orderGoods, &domain.OrderGood{ | 768 | orderGoods = append(orderGoods, &domain.OrderGood{ |
| 665 | OrderGoodId: 0, | 769 | OrderGoodId: 0, |
| 666 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 770 | + OrderGoodAmount: orderGoodAmount, |
| 667 | OrderGoodName: orderGood.OrderGoodName, | 771 | OrderGoodName: orderGood.OrderGoodName, |
| 668 | OrderGoodPrice: orderGood.OrderGoodPrice, | 772 | OrderGoodPrice: orderGood.OrderGoodPrice, |
| 669 | OrderGoodQuantity: orderGood.OrderGoodQuantity, | 773 | OrderGoodQuantity: orderGood.OrderGoodQuantity, |
| @@ -679,7 +783,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -679,7 +783,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 679 | }) | 783 | }) |
| 680 | 784 | ||
| 681 | // 计算分红订单金额 | 785 | // 计算分红订单金额 |
| 682 | - dividendsOrderAmount = dividendsOrderAmount + orderGood.OrderGoodAmount | 786 | + dividendsOrderAmount, _ = decimal.NewFromFloat(dividendsOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)))).Float64() |
| 683 | } | 787 | } |
| 684 | if len(orderGoodErrMap) > 0 { | 788 | if len(orderGoodErrMap) > 0 { |
| 685 | row := &domain.ImportInfo{ | 789 | row := &domain.ImportInfo{ |
| @@ -691,19 +795,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -691,19 +795,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 691 | continue | 795 | continue |
| 692 | } | 796 | } |
| 693 | 797 | ||
| 694 | - // 订单时间转换 | ||
| 695 | - orderTimeInt, err := strconv.ParseInt(dividendsOrder.OrderTime, 10, 64) | ||
| 696 | - if err != nil { | ||
| 697 | - row := &domain.ImportInfo{ | ||
| 698 | - Error: application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("订单日期转换错误:%s", err)), | ||
| 699 | - LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行 | ||
| 700 | - GoodLine: map[int]interface{}{}, | ||
| 701 | - } | ||
| 702 | - errorDataList = append(errorDataList, row) | ||
| 703 | - continue | ||
| 704 | - } | ||
| 705 | - orderTime := utils.TransformTimestampToTime(orderTimeInt) | ||
| 706 | - | ||
| 707 | // 新增分红订单 | 798 | // 新增分红订单 |
| 708 | newDividendsOrder := &domain.DividendsOrder{ | 799 | newDividendsOrder := &domain.DividendsOrder{ |
| 709 | DividendsOrderId: 0, | 800 | DividendsOrderId: 0, |
| @@ -728,19 +819,14 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -728,19 +819,14 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 728 | Operator: operator, | 819 | Operator: operator, |
| 729 | } | 820 | } |
| 730 | 821 | ||
| 731 | - if _, err2 := dividendsOrderRepository.Save(newDividendsOrder); err2 != nil { | ||
| 732 | - row := &domain.ImportInfo{ | ||
| 733 | - Error: application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("保存订单数据失败:%s", err)), | ||
| 734 | - LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行 | ||
| 735 | - GoodLine: map[int]interface{}{}, | ||
| 736 | - } | ||
| 737 | - errorDataList = append(errorDataList, row) | ||
| 738 | - continue | ||
| 739 | - } | 822 | + creatDividendsOrder = append(creatDividendsOrder, newDividendsOrder) |
| 740 | } | 823 | } |
| 741 | 824 | ||
| 742 | // 错误报告处理 | 825 | // 错误报告处理 |
| 743 | if len(errorDataList) <= 0 { // 成功返回 | 826 | if len(errorDataList) <= 0 { // 成功返回 |
| 827 | + if _, err2 := dividendsOrderRepository.SaveMany(creatDividendsOrder); err2 != nil { | ||
| 828 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error()) | ||
| 829 | + } | ||
| 744 | if err3 := transactionContext.CommitTransaction(); err3 != nil { | 830 | if err3 := transactionContext.CommitTransaction(); err3 != nil { |
| 745 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err3.Error()) | 831 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err3.Error()) |
| 746 | } | 832 | } |
| @@ -757,7 +843,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -757,7 +843,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 757 | for _, errorData := range errorDataList { | 843 | for _, errorData := range errorDataList { |
| 758 | if len(errorData.GoodLine) == 0 { // 订单错误 | 844 | if len(errorData.GoodLine) == 0 { // 订单错误 |
| 759 | for _, line := range errorData.LineNumbers { | 845 | for _, line := range errorData.LineNumbers { |
| 760 | - //s := strconv.Itoa(line + 1) | ||
| 761 | tmpRow := &domain.FailInfo{ | 846 | tmpRow := &domain.FailInfo{ |
| 762 | FailReason: "订单数据新增错误:" + errorData.Error.Error(), | 847 | FailReason: "订单数据新增错误:" + errorData.Error.Error(), |
| 763 | } | 848 | } |
| @@ -766,7 +851,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -766,7 +851,6 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 766 | } | 851 | } |
| 767 | } else if len(errorData.GoodLine) > 0 { // 订单产品错误 | 852 | } else if len(errorData.GoodLine) > 0 { // 订单产品错误 |
| 768 | for line := range errorData.GoodLine { | 853 | for line := range errorData.GoodLine { |
| 769 | - //s := strconv.Itoa(line + 1) | ||
| 770 | tmpRow := &domain.FailInfo{ | 854 | tmpRow := &domain.FailInfo{ |
| 771 | FailReason: "订单数据新增错误:" + errorData.Error.Error(), | 855 | FailReason: "订单数据新增错误:" + errorData.Error.Error(), |
| 772 | } | 856 | } |
| @@ -888,15 +972,15 @@ func (dividendsOrderService *DividendsOrderService) RemoveDividendsOrder(removeD | @@ -888,15 +972,15 @@ func (dividendsOrderService *DividendsOrderService) RemoveDividendsOrder(removeD | ||
| 888 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 972 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 889 | } | 973 | } |
| 890 | if dividendsOrder == nil { | 974 | if dividendsOrder == nil { |
| 891 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeDividendsOrderCommand.DividendsOrderId))) | 975 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(removeDividendsOrderCommand.DividendsOrderId, 10))) |
| 892 | } | 976 | } |
| 893 | - if dividendsOrder, err := dividendsOrderRepository.Remove(dividendsOrder); err != nil { | 977 | + if dividendsOrderRemoved, err := dividendsOrderRepository.Remove(dividendsOrder); err != nil { |
| 894 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 978 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 895 | } else { | 979 | } else { |
| 896 | if err := transactionContext.CommitTransaction(); err != nil { | 980 | if err := transactionContext.CommitTransaction(); err != nil { |
| 897 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 981 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 898 | } | 982 | } |
| 899 | - return dividendsOrder, nil | 983 | + return dividendsOrderRemoved, nil |
| 900 | } | 984 | } |
| 901 | } | 985 | } |
| 902 | 986 | ||
| @@ -924,7 +1008,10 @@ func (dividendsOrderService *DividendsOrderService) BatchRemoveDividendsOrder(ba | @@ -924,7 +1008,10 @@ func (dividendsOrderService *DividendsOrderService) BatchRemoveDividendsOrder(ba | ||
| 924 | dividendsOrderRepository = value | 1008 | dividendsOrderRepository = value |
| 925 | } | 1009 | } |
| 926 | 1010 | ||
| 927 | - dividendsOrderIds, _ := utils.SliceAtoi(batchRemoveDividendsOrderCommand.DividendsOrderIds) | 1011 | + dividendsOrderIds, err := utils.SliceAtoi(batchRemoveDividendsOrderCommand.DividendsOrderIds) |
| 1012 | + if err != nil { | ||
| 1013 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单ID类型错误") | ||
| 1014 | + } | ||
| 928 | if count, dividendsOrders, err := dividendsOrderRepository.Find(map[string]interface{}{ | 1015 | if count, dividendsOrders, err := dividendsOrderRepository.Find(map[string]interface{}{ |
| 929 | "dividendsOrderIds": dividendsOrderIds, | 1016 | "dividendsOrderIds": dividendsOrderIds, |
| 930 | }); err != nil { | 1017 | }); err != nil { |
| @@ -1055,8 +1142,14 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD | @@ -1055,8 +1142,14 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD | ||
| 1055 | } | 1142 | } |
| 1056 | orderTime := utils.TransformTimestampToTime(orderTimeInt) | 1143 | orderTime := utils.TransformTimestampToTime(orderTimeInt) |
| 1057 | 1144 | ||
| 1145 | + // 分红订单ID类型转换 | ||
| 1146 | + dividendsOrderId, err := strconv.ParseInt(updateDividendsOrderCommand.DividendsOrderId, 10, 64) | ||
| 1147 | + if err != nil { | ||
| 1148 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1149 | + } | ||
| 1150 | + | ||
| 1058 | // 获取分红订单 | 1151 | // 获取分红订单 |
| 1059 | - dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderId": updateDividendsOrderCommand.DividendsOrderId}) | 1152 | + dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderId": dividendsOrderId}) |
| 1060 | if err != nil { | 1153 | if err != nil { |
| 1061 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单不存在") | 1154 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单不存在") |
| 1062 | } | 1155 | } |
| @@ -1064,18 +1157,68 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD | @@ -1064,18 +1157,68 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD | ||
| 1064 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateDividendsOrderCommand.DividendsOrderId))) | 1157 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateDividendsOrderCommand.DividendsOrderId))) |
| 1065 | } | 1158 | } |
| 1066 | 1159 | ||
| 1160 | + // 合约仓储初始化 | ||
| 1161 | + var cooperationContractRepository domain.CooperationContractRepository | ||
| 1162 | + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | ||
| 1163 | + "transactionContext": transactionContext, | ||
| 1164 | + }); err != nil { | ||
| 1165 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1166 | + } else { | ||
| 1167 | + cooperationContractRepository = value | ||
| 1168 | + } | ||
| 1169 | + | ||
| 1170 | + // 查找合约 | ||
| 1171 | + cooperationContractsMap := make(map[string]*domain.CooperationContract) | ||
| 1172 | + if count, cooperationContracts, err := cooperationContractRepository.Find(map[string]interface{}{ | ||
| 1173 | + "offsetLimit": false, | ||
| 1174 | + "companyId": updateDividendsOrderCommand.CompanyId, | ||
| 1175 | + "orgId": updateDividendsOrderCommand.OrgId, | ||
| 1176 | + }); err != nil { | ||
| 1177 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1178 | + } else { | ||
| 1179 | + if count > 0 { | ||
| 1180 | + for _, cooperationContract := range cooperationContracts { | ||
| 1181 | + cooperationContractsMap[cooperationContract.CooperationContractNumber] = cooperationContract | ||
| 1182 | + } | ||
| 1183 | + } | ||
| 1184 | + } | ||
| 1185 | + | ||
| 1067 | // 获取订单产品 | 1186 | // 获取订单产品 |
| 1068 | var orderGoods []*domain.OrderGood | 1187 | var orderGoods []*domain.OrderGood |
| 1069 | var dividendsOrderAmount float64 | 1188 | var dividendsOrderAmount float64 |
| 1070 | for _, orderGood := range updateDividendsOrderCommand.OrderGoods { | 1189 | for _, orderGood := range updateDividendsOrderCommand.OrderGoods { |
| 1190 | + // 计算订单产品金额 | ||
| 1191 | + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64() | ||
| 1192 | + | ||
| 1071 | // 产品ID类型转换 | 1193 | // 产品ID类型转换 |
| 1072 | orderGoodId, err3 := strconv.ParseInt(orderGood.OrderGoodId, 10, 64) | 1194 | orderGoodId, err3 := strconv.ParseInt(orderGood.OrderGoodId, 10, 64) |
| 1073 | if err3 != nil { | 1195 | if err3 != nil { |
| 1074 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error()) | 1196 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error()) |
| 1075 | } | 1197 | } |
| 1198 | + | ||
| 1199 | + ruleMatchedFlag := false | ||
| 1200 | + if orderGood.CooperationContractNumber != "" { | ||
| 1201 | + // 校验共创合约激励类型是否正确 | ||
| 1202 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 { | ||
| 1203 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单产品不能关联金额激励规则") | ||
| 1204 | + } | ||
| 1205 | + // 校验产品关联合约的激励规则是否匹配订单时间 | ||
| 1206 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil { | ||
| 1207 | + for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules { | ||
| 1208 | + if (orderTime.After(incentivesRule.DividendsIncentivesStageStart) || orderTime.Equal(incentivesRule.DividendsIncentivesStageStart)) && (orderTime.Before(incentivesRule.DividendsIncentivesStageEnd) || orderTime.Equal(incentivesRule.DividendsIncentivesStageEnd)) { | ||
| 1209 | + ruleMatchedFlag = true | ||
| 1210 | + break | ||
| 1211 | + } | ||
| 1212 | + } | ||
| 1213 | + } | ||
| 1214 | + if !ruleMatchedFlag { | ||
| 1215 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间无法匹配分红激励规则,请重新选择") | ||
| 1216 | + } | ||
| 1217 | + } | ||
| 1218 | + | ||
| 1076 | orderGoods = append(orderGoods, &domain.OrderGood{ | 1219 | orderGoods = append(orderGoods, &domain.OrderGood{ |
| 1077 | OrderGoodId: orderGoodId, | 1220 | OrderGoodId: orderGoodId, |
| 1078 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 1221 | + OrderGoodAmount: orderGoodAmount, |
| 1079 | OrderGoodName: orderGood.OrderGoodName, | 1222 | OrderGoodName: orderGood.OrderGoodName, |
| 1080 | OrderGoodPrice: orderGood.OrderGoodPrice, | 1223 | OrderGoodPrice: orderGood.OrderGoodPrice, |
| 1081 | OrderGoodQuantity: orderGood.OrderGoodQuantity, | 1224 | OrderGoodQuantity: orderGood.OrderGoodQuantity, |
| @@ -1083,13 +1226,14 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD | @@ -1083,13 +1226,14 @@ func (dividendsOrderService *DividendsOrderService) UpdateDividendsOrder(updateD | ||
| 1083 | DividendsReturnedOrderNumber: "", | 1226 | DividendsReturnedOrderNumber: "", |
| 1084 | CooperationContractNumber: orderGood.CooperationContractNumber, | 1227 | CooperationContractNumber: orderGood.CooperationContractNumber, |
| 1085 | OrderGoodExpense: orderGood.OrderGoodExpense, | 1228 | OrderGoodExpense: orderGood.OrderGoodExpense, |
| 1229 | + OrderGoodDividendsStatus: 0, | ||
| 1086 | OrgId: updateDividendsOrderCommand.OrgId, | 1230 | OrgId: updateDividendsOrderCommand.OrgId, |
| 1087 | CompanyId: updateDividendsOrderCommand.CompanyId, | 1231 | CompanyId: updateDividendsOrderCommand.CompanyId, |
| 1088 | CreatedAt: time.Time{}, | 1232 | CreatedAt: time.Time{}, |
| 1089 | UpdatedAt: time.Now(), | 1233 | UpdatedAt: time.Now(), |
| 1090 | }) | 1234 | }) |
| 1091 | // 计算分红订单金额 | 1235 | // 计算分红订单金额 |
| 1092 | - dividendsOrderAmount = dividendsOrderAmount + orderGood.OrderGoodAmount | 1236 | + dividendsOrderAmount, _ = decimal.NewFromFloat(dividendsOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense))).Float64() |
| 1093 | } | 1237 | } |
| 1094 | 1238 | ||
| 1095 | if err := dividendsOrder.Update(tool_funs.SimpleStructToMap(updateDividendsOrderCommand)); err != nil { | 1239 | if err := dividendsOrder.Update(tool_funs.SimpleStructToMap(updateDividendsOrderCommand)); err != nil { |
| @@ -17,13 +17,15 @@ type OrderGoods struct { | @@ -17,13 +17,15 @@ type OrderGoods struct { | ||
| 17 | // 订单产品单价 | 17 | // 订单产品单价 |
| 18 | OrderGoodPrice float64 `cname:"订单产品单价" json:"orderGoodPrice"` | 18 | OrderGoodPrice float64 `cname:"订单产品单价" json:"orderGoodPrice"` |
| 19 | // 订单产品数量 | 19 | // 订单产品数量 |
| 20 | - OrderGoodQuantity int64 `cname:"订单产品数量" json:"orderGoodQuantity"` | 20 | + OrderGoodQuantity float64 `cname:"订单产品数量" json:"orderGoodQuantity"` |
| 21 | // 关联分红订单号 | 21 | // 关联分红订单号 |
| 22 | DividendsOrderNumber string `cname:"关联分红订单号" json:"dividendsOrderNumber"` | 22 | DividendsOrderNumber string `cname:"关联分红订单号" json:"dividendsOrderNumber"` |
| 23 | // 关联的共创合约编号 | 23 | // 关联的共创合约编号 |
| 24 | CooperationContractNumber string `cname:"关联的共创合约编号" json:"cooperationContractNumber"` | 24 | CooperationContractNumber string `cname:"关联的共创合约编号" json:"cooperationContractNumber"` |
| 25 | // 订单产品费用 | 25 | // 订单产品费用 |
| 26 | OrderGoodExpense float64 `cname:"订单产品费用" json:"orderGoodExpense"` | 26 | OrderGoodExpense float64 `cname:"订单产品费用" json:"orderGoodExpense"` |
| 27 | + //行号-错误信息返回 | ||
| 28 | + LineNumber int `json:"lineNumber"` | ||
| 27 | } | 29 | } |
| 28 | 30 | ||
| 29 | type CreateDividendsReturnedOrderCommand struct { | 31 | type CreateDividendsReturnedOrderCommand struct { |
| @@ -34,9 +36,9 @@ type CreateDividendsReturnedOrderCommand struct { | @@ -34,9 +36,9 @@ type CreateDividendsReturnedOrderCommand struct { | ||
| 34 | // 来源单号,源单号,订单号 | 36 | // 来源单号,源单号,订单号 |
| 35 | OriginalOrderNum string `cname:"来源单号" json:"originalOrderNum" valid:"Required"` | 37 | OriginalOrderNum string `cname:"来源单号" json:"originalOrderNum" valid:"Required"` |
| 36 | // 分红单号 | 38 | // 分红单号 |
| 37 | - DividendsOrderNumber string `cname:"订单号" json:"dividendsOrderNumber" valid:"Required"` | 39 | + DividendsOrderNumber string `cname:"订单号" json:"dividendsOrderNumber"` |
| 38 | // 备注 | 40 | // 备注 |
| 39 | - Remarks string `cname:"备注" json:"remarks" valid:"Required"` | 41 | + Remarks string `cname:"备注" json:"remarks,omitempty"` |
| 40 | // 退货日期 | 42 | // 退货日期 |
| 41 | DividendsReturnedDate string `cname:"退货日期" json:"dividendsReturnedDate" valid:"Required"` | 43 | DividendsReturnedDate string `cname:"退货日期" json:"dividendsReturnedDate" valid:"Required"` |
| 42 | // 订单日期 | 44 | // 订单日期 |
| @@ -10,14 +10,14 @@ import ( | @@ -10,14 +10,14 @@ import ( | ||
| 10 | type UpdateDividendsReturnedOrderCommand struct { | 10 | type UpdateDividendsReturnedOrderCommand struct { |
| 11 | // 分红退货单记录ID | 11 | // 分红退货单记录ID |
| 12 | DividendsReturnedOrderId string `cname:"分红退货单记录ID" json:"dividendsReturnedOrderId" valid:"Required"` | 12 | DividendsReturnedOrderId string `cname:"分红退货单记录ID" json:"dividendsReturnedOrderId" valid:"Required"` |
| 13 | - // 退货金额 | ||
| 14 | - DividendsReturnedOrderRefund float64 `cname:"退货金额" json:"dividendsReturnedOrderRefund" valid:"Required"` | ||
| 15 | // 退货客户名称 | 13 | // 退货客户名称 |
| 16 | DividendsReturnedCustomerName string `cname:"退货客户名称" json:"dividendsReturnedCustomerName" valid:"Required"` | 14 | DividendsReturnedCustomerName string `cname:"退货客户名称" json:"dividendsReturnedCustomerName" valid:"Required"` |
| 17 | // 来源单号,源单号,订单号 | 15 | // 来源单号,源单号,订单号 |
| 18 | OriginalOrderNum string `cname:"来源单号" json:"originalOrderNum" valid:"Required"` | 16 | OriginalOrderNum string `cname:"来源单号" json:"originalOrderNum" valid:"Required"` |
| 17 | + // 分红单号 | ||
| 18 | + DividendsOrderNumber string `cname:"订单号" json:"dividendsOrderNumber"` | ||
| 19 | // 备注 | 19 | // 备注 |
| 20 | - Remarks string `cname:"备注" json:"remarks" valid:"Required"` | 20 | + Remarks string `cname:"备注" json:"remarks"` |
| 21 | // 退货日期 | 21 | // 退货日期 |
| 22 | DividendsReturnedDate string `cname:"退货日期" json:"dividendsReturnedDate" valid:"Required"` | 22 | DividendsReturnedDate string `cname:"退货日期" json:"dividendsReturnedDate" valid:"Required"` |
| 23 | // 退货区域 | 23 | // 退货区域 |
| @@ -37,7 +37,15 @@ type UpdateDividendsReturnedOrderCommand struct { | @@ -37,7 +37,15 @@ type UpdateDividendsReturnedOrderCommand struct { | ||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | func (updateDividendsReturnedOrderCommand *UpdateDividendsReturnedOrderCommand) Valid(validation *validation.Validation) { | 39 | func (updateDividendsReturnedOrderCommand *UpdateDividendsReturnedOrderCommand) Valid(validation *validation.Validation) { |
| 40 | - //validation.SetError("CustomValid", "未实现的自定义认证") | 40 | + if len(updateDividendsReturnedOrderCommand.OrderGoods) <= 0 { |
| 41 | + validation.Error("退货单产品不能为空") | ||
| 42 | + } else { | ||
| 43 | + for i, _ := range updateDividendsReturnedOrderCommand.OrderGoods { | ||
| 44 | + if updateDividendsReturnedOrderCommand.OrderGoods[i].OrderGoodId == "" { | ||
| 45 | + updateDividendsReturnedOrderCommand.OrderGoods[i].OrderGoodId = "0" | ||
| 46 | + } | ||
| 47 | + } | ||
| 48 | + } | ||
| 41 | } | 49 | } |
| 42 | 50 | ||
| 43 | func (updateDividendsReturnedOrderCommand *UpdateDividendsReturnedOrderCommand) ValidateCommand() error { | 51 | func (updateDividendsReturnedOrderCommand *UpdateDividendsReturnedOrderCommand) ValidateCommand() error { |
| @@ -6,6 +6,7 @@ import ( | @@ -6,6 +6,7 @@ import ( | ||
| 6 | "fmt" | 6 | "fmt" |
| 7 | "github.com/linmadan/egglib-go/core/application" | 7 | "github.com/linmadan/egglib-go/core/application" |
| 8 | "github.com/linmadan/egglib-go/utils/tool_funs" | 8 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| 9 | + "github.com/shopspring/decimal" | ||
| 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsReturnedOrder/command" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsReturnedOrder/command" |
| 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsReturnedOrder/query" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsReturnedOrder/query" |
| 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" | 12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" |
| @@ -16,7 +17,6 @@ import ( | @@ -16,7 +17,6 @@ import ( | ||
| 16 | "reflect" | 17 | "reflect" |
| 17 | "regexp" | 18 | "regexp" |
| 18 | "strconv" | 19 | "strconv" |
| 19 | - "strings" | ||
| 20 | "time" | 20 | "time" |
| 21 | ) | 21 | ) |
| 22 | 22 | ||
| @@ -99,7 +99,9 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | @@ -99,7 +99,9 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | ||
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | // 生成分红订单号 | 101 | // 生成分红订单号 |
| 102 | - dividendsReturnedOrderNumber, err := dividendsReturnedOrderDao.GenerateDividendsReturnedOrderNumber() | 102 | + dividendsReturnedOrderNumber, err := dividendsReturnedOrderDao.GenerateDividendsReturnedOrderNumber(map[string]interface{}{ |
| 103 | + "companyId": createDividendsReturnedOrderCommand.CompanyId, | ||
| 104 | + }) | ||
| 103 | if err != nil { | 105 | if err != nil { |
| 104 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 106 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 105 | } | 107 | } |
| @@ -121,7 +123,6 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | @@ -121,7 +123,6 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | ||
| 121 | // 校验分红退货单编号是否唯一 | 123 | // 校验分红退货单编号是否唯一 |
| 122 | numberAvailable, err := dividendsReturnedOrderDao.CheckDividendsReturnedOrderNumberAvailable(map[string]interface{}{ | 124 | numberAvailable, err := dividendsReturnedOrderDao.CheckDividendsReturnedOrderNumberAvailable(map[string]interface{}{ |
| 123 | "companyId": createDividendsReturnedOrderCommand.CompanyId, | 125 | "companyId": createDividendsReturnedOrderCommand.CompanyId, |
| 124 | - "orgId": createDividendsReturnedOrderCommand.OrgId, | ||
| 125 | "dividendsReturnedOrderNumber": dividendsReturnedOrderNumber, | 126 | "dividendsReturnedOrderNumber": dividendsReturnedOrderNumber, |
| 126 | }) | 127 | }) |
| 127 | if err != nil { | 128 | if err != nil { |
| @@ -131,12 +132,64 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | @@ -131,12 +132,64 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | ||
| 131 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红退货单号已存在") | 132 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红退货单号已存在") |
| 132 | } | 133 | } |
| 133 | 134 | ||
| 134 | - // 获取分红退货单产品 | 135 | + // 合约仓储初始化 |
| 136 | + var cooperationContractRepository domain.CooperationContractRepository | ||
| 137 | + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | ||
| 138 | + "transactionContext": transactionContext, | ||
| 139 | + }); err != nil { | ||
| 140 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 141 | + } else { | ||
| 142 | + cooperationContractRepository = value | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + // 查找合约 | ||
| 146 | + cooperationContractsMap := make(map[string]*domain.CooperationContract) | ||
| 147 | + if count, cooperationContracts, err := cooperationContractRepository.Find(map[string]interface{}{ | ||
| 148 | + "offsetLimit": false, | ||
| 149 | + "companyId": createDividendsReturnedOrderCommand.CompanyId, | ||
| 150 | + "orgId": createDividendsReturnedOrderCommand.OrgId, | ||
| 151 | + }); err != nil { | ||
| 152 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 153 | + } else { | ||
| 154 | + if count > 0 { | ||
| 155 | + for _, cooperationContract := range cooperationContracts { | ||
| 156 | + cooperationContractsMap[cooperationContract.CooperationContractNumber] = cooperationContract | ||
| 157 | + } | ||
| 158 | + } | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + // 退货金额 | ||
| 162 | + var dividendsReturnedOrderRefund float64 | ||
| 163 | + | ||
| 164 | + // 新增分红退货单产品 | ||
| 135 | var orderGoods []*domain.OrderGood | 165 | var orderGoods []*domain.OrderGood |
| 136 | for _, orderGood := range createDividendsReturnedOrderCommand.OrderGoods { | 166 | for _, orderGood := range createDividendsReturnedOrderCommand.OrderGoods { |
| 167 | + // 退货产品金额计算 | ||
| 168 | + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Float64() | ||
| 169 | + | ||
| 170 | + // 校验合约激励类型是否正确 | ||
| 171 | + ruleMatchedFlag := false | ||
| 172 | + if orderGood.CooperationContractNumber != "" { | ||
| 173 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 { | ||
| 174 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "退货单产品不能关联金额激励规则") | ||
| 175 | + } | ||
| 176 | + // 校验产品关联合约的激励规则是否匹配订单时间 | ||
| 177 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil { | ||
| 178 | + for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules { | ||
| 179 | + if (orderTime.After(incentivesRule.DividendsIncentivesStageStart) || orderTime.Equal(incentivesRule.DividendsIncentivesStageStart)) && (orderTime.Before(incentivesRule.DividendsIncentivesStageEnd) || orderTime.Equal(incentivesRule.DividendsIncentivesStageEnd)) { | ||
| 180 | + ruleMatchedFlag = true | ||
| 181 | + break | ||
| 182 | + } | ||
| 183 | + } | ||
| 184 | + } | ||
| 185 | + if !ruleMatchedFlag { | ||
| 186 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间无法匹配分红激励规则,请重新选择") | ||
| 187 | + } | ||
| 188 | + } | ||
| 189 | + | ||
| 137 | orderGoods = append(orderGoods, &domain.OrderGood{ | 190 | orderGoods = append(orderGoods, &domain.OrderGood{ |
| 138 | OrderGoodId: 0, | 191 | OrderGoodId: 0, |
| 139 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 192 | + OrderGoodAmount: orderGoodAmount, |
| 140 | OrderGoodName: orderGood.OrderGoodName, | 193 | OrderGoodName: orderGood.OrderGoodName, |
| 141 | OrderGoodPrice: orderGood.OrderGoodPrice, | 194 | OrderGoodPrice: orderGood.OrderGoodPrice, |
| 142 | OrderGoodQuantity: orderGood.OrderGoodQuantity, | 195 | OrderGoodQuantity: orderGood.OrderGoodQuantity, |
| @@ -151,11 +204,13 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | @@ -151,11 +204,13 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) CreateDivide | ||
| 151 | DeletedAt: time.Time{}, | 204 | DeletedAt: time.Time{}, |
| 152 | UpdatedAt: time.Time{}, | 205 | UpdatedAt: time.Time{}, |
| 153 | }) | 206 | }) |
| 207 | + // 计算退货订单金额 | ||
| 208 | + dividendsReturnedOrderRefund, _ = decimal.NewFromFloat(dividendsReturnedOrderRefund).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity))).Float64() | ||
| 154 | } | 209 | } |
| 155 | 210 | ||
| 156 | newDividendsReturnedOrder := &domain.DividendsReturnedOrder{ | 211 | newDividendsReturnedOrder := &domain.DividendsReturnedOrder{ |
| 157 | DividendsReturnedOrderNumber: dividendsReturnedOrderNumber, | 212 | DividendsReturnedOrderNumber: dividendsReturnedOrderNumber, |
| 158 | - DividendsReturnedOrderRefund: createDividendsReturnedOrderCommand.DividendsReturnedOrderRefund, | 213 | + DividendsReturnedOrderRefund: dividendsReturnedOrderRefund, |
| 159 | OriginalOrderNum: createDividendsReturnedOrderCommand.OriginalOrderNum, | 214 | OriginalOrderNum: createDividendsReturnedOrderCommand.OriginalOrderNum, |
| 160 | DividendsOrderNumber: createDividendsReturnedOrderCommand.DividendsOrderNumber, | 215 | DividendsOrderNumber: createDividendsReturnedOrderCommand.DividendsOrderNumber, |
| 161 | DividendsReturnedCustomerName: createDividendsReturnedOrderCommand.DividendsReturnedCustomerName, | 216 | DividendsReturnedCustomerName: createDividendsReturnedOrderCommand.DividendsReturnedCustomerName, |
| @@ -316,6 +371,33 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -316,6 +371,33 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 316 | dividendsReturnedOrderRepository = value | 371 | dividendsReturnedOrderRepository = value |
| 317 | } | 372 | } |
| 318 | 373 | ||
| 374 | + // 合约仓储初始化 | ||
| 375 | + var cooperationContractRepository domain.CooperationContractRepository | ||
| 376 | + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | ||
| 377 | + "transactionContext": transactionContext, | ||
| 378 | + }); err != nil { | ||
| 379 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 380 | + } else { | ||
| 381 | + cooperationContractRepository = value | ||
| 382 | + } | ||
| 383 | + | ||
| 384 | + // 查找合约 | ||
| 385 | + cooperationContractsMap := make(map[string]*domain.CooperationContract) | ||
| 386 | + countContracts, cooperationContracts, err := cooperationContractRepository.Find(map[string]interface{}{ | ||
| 387 | + "offsetLimit": false, | ||
| 388 | + "companyId": importDividendsReturnedOrderCommand.CompanyId, | ||
| 389 | + "orgId": importDividendsReturnedOrderCommand.OrgId, | ||
| 390 | + }) | ||
| 391 | + if err != nil { | ||
| 392 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 393 | + } else { | ||
| 394 | + if countContracts > 0 { | ||
| 395 | + for _, cooperationContract := range cooperationContracts { | ||
| 396 | + cooperationContractsMap[cooperationContract.CooperationContractNumber] = cooperationContract | ||
| 397 | + } | ||
| 398 | + } | ||
| 399 | + } | ||
| 400 | + | ||
| 319 | // 返回信息表头定义 | 401 | // 返回信息表头定义 |
| 320 | var tableHeader = map[string]interface{}{ | 402 | var tableHeader = map[string]interface{}{ |
| 321 | "failReason": "错误详情", | 403 | "failReason": "错误详情", |
| @@ -347,7 +429,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -347,7 +429,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 347 | for i, dividendsReturnedOrder := range importDividendsReturnedOrderCommand.DividendsReturnedOrderData { | 429 | for i, dividendsReturnedOrder := range importDividendsReturnedOrderCommand.DividendsReturnedOrderData { |
| 348 | rowCnt++ | 430 | rowCnt++ |
| 349 | nullCell := make([]interface{}, 0) | 431 | nullCell := make([]interface{}, 0) |
| 350 | - var myRow []string | 432 | + var myRow *domain.FailReturnedInfo |
| 351 | t := reflect.TypeOf(dividendsReturnedOrder) | 433 | t := reflect.TypeOf(dividendsReturnedOrder) |
| 352 | v := reflect.ValueOf(dividendsReturnedOrder) | 434 | v := reflect.ValueOf(dividendsReturnedOrder) |
| 353 | for k := 0; k < t.NumField(); k++ { | 435 | for k := 0; k < t.NumField(); k++ { |
| @@ -361,11 +443,12 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -361,11 +443,12 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 361 | } | 443 | } |
| 362 | } | 444 | } |
| 363 | if nullFlag { | 445 | if nullFlag { |
| 364 | - s := strconv.Itoa(i + 1) | ||
| 365 | - b := strings.Replace(strings.Trim(fmt.Sprint(nullCell), "[]"), " ", ",", -1) | ||
| 366 | - myRow = append(myRow, "第"+s+"行的第"+b+"列必填项为空") // 错误信息 | ||
| 367 | - myRow = append(myRow, s) // 行号 | ||
| 368 | - myRow = append(myRow, fmt.Sprintf("%v", v.Interface())) // 错误行数据 | 446 | + //s := strconv.Itoa(i + 1) |
| 447 | + //b := strings.Replace(strings.Trim(fmt.Sprint(nullCell), "[]"), " ", ",", -1) | ||
| 448 | + myRow = &domain.FailReturnedInfo{ | ||
| 449 | + FailReason: "必填项为空", | ||
| 450 | + ImportDividendsReturnedOrderData: &importDividendsReturnedOrderCommand.DividendsReturnedOrderData[i], | ||
| 451 | + } | ||
| 369 | nullCellError = append(nullCellError, myRow) | 452 | nullCellError = append(nullCellError, myRow) |
| 370 | nullFlag = false | 453 | nullFlag = false |
| 371 | } | 454 | } |
| @@ -384,24 +467,22 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -384,24 +467,22 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 384 | 467 | ||
| 385 | // 单元格类型校验 | 468 | // 单元格类型校验 |
| 386 | typeError := make([]interface{}, 0) | 469 | typeError := make([]interface{}, 0) |
| 387 | - for i, dividendsReturnedOrder := range importDividendsReturnedOrderCommand.DividendsReturnedOrderData { // 行 | ||
| 388 | - var myRow []string | 470 | + for _, dividendsReturnedOrder := range importDividendsReturnedOrderCommand.DividendsReturnedOrderData { // 行 |
| 471 | + var myRow *domain.FailReturnedInfo | ||
| 389 | t := reflect.TypeOf(dividendsReturnedOrder) | 472 | t := reflect.TypeOf(dividendsReturnedOrder) |
| 390 | v := reflect.ValueOf(dividendsReturnedOrder) | 473 | v := reflect.ValueOf(dividendsReturnedOrder) |
| 391 | for k := 0; k < t.NumField(); k++ { // 列 | 474 | for k := 0; k < t.NumField(); k++ { // 列 |
| 392 | - r := strconv.Itoa(i + 1) | ||
| 393 | - col := strconv.Itoa(k + 1) | ||
| 394 | - | ||
| 395 | switch k { | 475 | switch k { |
| 396 | case 3: // 退货日期校验 | 476 | case 3: // 退货日期校验 |
| 397 | { | 477 | { |
| 398 | regexpStr := `(\d{4})/(\d{2})/(\d{2})` | 478 | regexpStr := `(\d{4})/(\d{2})/(\d{2})` |
| 399 | ok := regexp.MustCompile(regexpStr).MatchString(fmt.Sprintf("%v", v.Field(k).Interface())) | 479 | ok := regexp.MustCompile(regexpStr).MatchString(fmt.Sprintf("%v", v.Field(k).Interface())) |
| 400 | if !ok { | 480 | if !ok { |
| 401 | - var tmpRow []string | ||
| 402 | - tmpRow = append(tmpRow, "第"+r+"行第"+col+"列退货日期格式错误,请输入正确的退货日期") // 错误信息 | ||
| 403 | - tmpRow = append(tmpRow, r) // 行号 | ||
| 404 | - tmpRow = append(tmpRow, fmt.Sprintf("%v", v.Interface())) // 错误行数据 | 481 | + var tmpRow *domain.FailReturnedInfo |
| 482 | + tmpRow = &domain.FailReturnedInfo{ | ||
| 483 | + FailReason: "退货日期格式错误,请输入正确的退货日期", | ||
| 484 | + ImportDividendsReturnedOrderData: ÷ndsReturnedOrder, | ||
| 485 | + } | ||
| 405 | myRow = tmpRow | 486 | myRow = tmpRow |
| 406 | } | 487 | } |
| 407 | } | 488 | } |
| @@ -410,10 +491,11 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -410,10 +491,11 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 410 | regexpStr := `(\d{4})/(\d{2})/(\d{2})` | 491 | regexpStr := `(\d{4})/(\d{2})/(\d{2})` |
| 411 | ok := regexp.MustCompile(regexpStr).MatchString(fmt.Sprintf("%v", v.Field(k).Interface())) | 492 | ok := regexp.MustCompile(regexpStr).MatchString(fmt.Sprintf("%v", v.Field(k).Interface())) |
| 412 | if !ok { | 493 | if !ok { |
| 413 | - var tmpRow []string | ||
| 414 | - tmpRow = append(tmpRow, "第"+r+"行第"+col+"列订单日期格式错误,请输入正确的订单日期") // 错误信息 | ||
| 415 | - tmpRow = append(tmpRow, r) // 行号 | ||
| 416 | - tmpRow = append(tmpRow, fmt.Sprintf("%v", v.Interface())) // 错误行数据 | 494 | + var tmpRow *domain.FailReturnedInfo |
| 495 | + tmpRow = &domain.FailReturnedInfo{ | ||
| 496 | + FailReason: "订单日期格式错误,请输入正确的订单日期", | ||
| 497 | + ImportDividendsReturnedOrderData: ÷ndsReturnedOrder, | ||
| 498 | + } | ||
| 417 | myRow = tmpRow | 499 | myRow = tmpRow |
| 418 | } | 500 | } |
| 419 | } | 501 | } |
| @@ -422,18 +504,20 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -422,18 +504,20 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 422 | //参数类型转换 | 504 | //参数类型转换 |
| 423 | orderGoodQuantity, err := strconv.ParseInt(fmt.Sprintf("%v", v.Field(k).Interface()), 10, 64) | 505 | orderGoodQuantity, err := strconv.ParseInt(fmt.Sprintf("%v", v.Field(k).Interface()), 10, 64) |
| 424 | if err != nil { | 506 | if err != nil { |
| 425 | - var tmpRow []string | ||
| 426 | - tmpRow = append(tmpRow, "第"+r+"行第"+col+"列退货数量格式错误,退货数量必须整数") // 错误信息 | ||
| 427 | - tmpRow = append(tmpRow, r) // 行号 | ||
| 428 | - tmpRow = append(tmpRow, fmt.Sprintf("%v", v.Interface())) // 错误行数据 | 507 | + var tmpRow *domain.FailReturnedInfo |
| 508 | + tmpRow = &domain.FailReturnedInfo{ | ||
| 509 | + FailReason: "退货数量格式错误,退货数量必须整数", | ||
| 510 | + ImportDividendsReturnedOrderData: ÷ndsReturnedOrder, | ||
| 511 | + } | ||
| 429 | myRow = tmpRow | 512 | myRow = tmpRow |
| 430 | } | 513 | } |
| 431 | // 正负判断 | 514 | // 正负判断 |
| 432 | if orderGoodQuantity < 0 { | 515 | if orderGoodQuantity < 0 { |
| 433 | - var tmpRow []string | ||
| 434 | - tmpRow = append(tmpRow, "第"+r+"行第"+col+"列退货数量必须大于0,请重新填写") // 错误信息 | ||
| 435 | - tmpRow = append(tmpRow, r) // 行号 | ||
| 436 | - tmpRow = append(tmpRow, fmt.Sprintf("%v", v.Interface())) // 错误行数据 | 516 | + var tmpRow *domain.FailReturnedInfo |
| 517 | + tmpRow = &domain.FailReturnedInfo{ | ||
| 518 | + FailReason: "退货数量必须大于0,请重新填写", | ||
| 519 | + ImportDividendsReturnedOrderData: ÷ndsReturnedOrder, | ||
| 520 | + } | ||
| 437 | myRow = tmpRow | 521 | myRow = tmpRow |
| 438 | } | 522 | } |
| 439 | } | 523 | } |
| @@ -442,19 +526,21 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -442,19 +526,21 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 442 | // 参数类型转换 | 526 | // 参数类型转换 |
| 443 | univalent, typeErr := strconv.ParseFloat(fmt.Sprintf("%v", v.Field(k).Interface()), 64) | 527 | univalent, typeErr := strconv.ParseFloat(fmt.Sprintf("%v", v.Field(k).Interface()), 64) |
| 444 | if typeErr != nil { | 528 | if typeErr != nil { |
| 445 | - var tmpRow []string | ||
| 446 | - tmpRow = append(tmpRow, "第"+r+"行第"+col+"列退货价格格式错误,退货价格必须为数字类型") // 错误信息 | ||
| 447 | - tmpRow = append(tmpRow, r) // 行号 | ||
| 448 | - tmpRow = append(tmpRow, fmt.Sprintf("%v", v.Interface())) // 错误行数据 | 529 | + var tmpRow *domain.FailReturnedInfo |
| 530 | + tmpRow = &domain.FailReturnedInfo{ | ||
| 531 | + FailReason: "退货价格格式错误,退货价格必须为数字类型", | ||
| 532 | + ImportDividendsReturnedOrderData: ÷ndsReturnedOrder, | ||
| 533 | + } | ||
| 449 | myRow = tmpRow | 534 | myRow = tmpRow |
| 450 | } | 535 | } |
| 451 | 536 | ||
| 452 | // 长度校验 | 537 | // 长度校验 |
| 453 | if univalent >= 1e16 { | 538 | if univalent >= 1e16 { |
| 454 | - var tmpRow []string | ||
| 455 | - tmpRow = append(tmpRow, "第"+r+"行第"+col+"列退货价格超过最大限制,退货价格小数点前面不能超过十六位数字,并保留两位小数") // 错误信息 | ||
| 456 | - tmpRow = append(tmpRow, r) // 行号 | ||
| 457 | - tmpRow = append(tmpRow, fmt.Sprintf("%v", v.Interface())) // 错误行数据 | 539 | + var tmpRow *domain.FailReturnedInfo |
| 540 | + tmpRow = &domain.FailReturnedInfo{ | ||
| 541 | + FailReason: "退货价格超过最大限制,退货价格小数点前面不能超过十六位数字,并保留两位小数", | ||
| 542 | + ImportDividendsReturnedOrderData: ÷ndsReturnedOrder, | ||
| 543 | + } | ||
| 458 | myRow = tmpRow | 544 | myRow = tmpRow |
| 459 | } | 545 | } |
| 460 | } | 546 | } |
| @@ -515,7 +601,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -515,7 +601,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 515 | } | 601 | } |
| 516 | 602 | ||
| 517 | // 产品相关:产品名称,退货数量、退货价格 | 603 | // 产品相关:产品名称,退货数量、退货价格 |
| 518 | - quantity, err := strconv.ParseInt(dividendsReturnedOrder.OrderGoodQuantity, 10, 64) | 604 | + quantity, err := strconv.ParseFloat(dividendsReturnedOrder.OrderGoodQuantity, 64) |
| 519 | if err != nil { | 605 | if err != nil { |
| 520 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 606 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
| 521 | } | 607 | } |
| @@ -553,7 +639,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -553,7 +639,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 553 | } | 639 | } |
| 554 | } else { // 聚合同一笔订单产品 | 640 | } else { // 聚合同一笔订单产品 |
| 555 | // 产品相关:产品名称,退货数量、退货价格 | 641 | // 产品相关:产品名称,退货数量、退货价格 |
| 556 | - quantity, err := strconv.ParseInt(dividendsReturnedOrder.OrderGoodQuantity, 10, 64) | 642 | + quantity, err := strconv.ParseFloat(dividendsReturnedOrder.OrderGoodQuantity, 64) |
| 557 | if err != nil { | 643 | if err != nil { |
| 558 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | 644 | return nil, application.ThrowError(application.ARG_ERROR, err.Error()) |
| 559 | } | 645 | } |
| @@ -655,7 +741,9 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -655,7 +741,9 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 655 | // 批量导入创建退货单 | 741 | // 批量导入创建退货单 |
| 656 | for _, dividendsReturnedOrder := range createDividendsReturnedOrderCommands { | 742 | for _, dividendsReturnedOrder := range createDividendsReturnedOrderCommands { |
| 657 | // 生成退货订单号 | 743 | // 生成退货订单号 |
| 658 | - dividendsReturnedOrderNumber, err := dividendsReturnedOrderDao.GenerateDividendsReturnedOrderNumber() | 744 | + dividendsReturnedOrderNumber, err := dividendsReturnedOrderDao.GenerateDividendsReturnedOrderNumber(map[string]interface{}{ |
| 745 | + "companyId": importDividendsReturnedOrderCommand.CompanyId, | ||
| 746 | + }) | ||
| 659 | if err != nil { | 747 | if err != nil { |
| 660 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 748 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 661 | } | 749 | } |
| @@ -663,7 +751,6 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -663,7 +751,6 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 663 | // 校验退货订单编号是否唯一 | 751 | // 校验退货订单编号是否唯一 |
| 664 | numberAvailable, err3 := dividendsReturnedOrderDao.CheckDividendsReturnedOrderNumberAvailable(map[string]interface{}{ | 752 | numberAvailable, err3 := dividendsReturnedOrderDao.CheckDividendsReturnedOrderNumberAvailable(map[string]interface{}{ |
| 665 | "companyId": importDividendsReturnedOrderCommand.CompanyId, | 753 | "companyId": importDividendsReturnedOrderCommand.CompanyId, |
| 666 | - "orgId": importDividendsReturnedOrderCommand.OrgId, | ||
| 667 | "dividendsReturnedOrderNumber": dividendsReturnedOrderNumber, | 754 | "dividendsReturnedOrderNumber": dividendsReturnedOrderNumber, |
| 668 | }) | 755 | }) |
| 669 | if err3 != nil { | 756 | if err3 != nil { |
| @@ -676,10 +763,32 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | @@ -676,10 +763,32 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) ImportDivide | ||
| 676 | // 新增订单产品 | 763 | // 新增订单产品 |
| 677 | var orderGoods []*domain.OrderGood | 764 | var orderGoods []*domain.OrderGood |
| 678 | var dividendsReturnedOrderAmount float64 | 765 | var dividendsReturnedOrderAmount float64 |
| 679 | - for _, orderGood := range dividendsReturnedOrder.OrderGoods { | 766 | + orderGoodErrMap := make(map[int]interface{}, 0) |
| 767 | + for i, orderGood := range dividendsReturnedOrder.OrderGoods { | ||
| 768 | + // 校验共创合约是否合法 | ||
| 769 | + contractNumberExist := false | ||
| 770 | + for _, cooperationContract := range cooperationContracts { | ||
| 771 | + if orderGood.CooperationContractNumber == cooperationContract.CooperationContractNumber { | ||
| 772 | + contractNumberExist = true | ||
| 773 | + break | ||
| 774 | + } | ||
| 775 | + } | ||
| 776 | + if !contractNumberExist { | ||
| 777 | + orderGoodErrMap[dividendsReturnedOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("共创合约编号不存在:%s", err)) | ||
| 778 | + } | ||
| 779 | + | ||
| 780 | + // 计算产品金额 | ||
| 781 | + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Float64() | ||
| 782 | + | ||
| 783 | + // 校验合约激励类型是否正确 | ||
| 784 | + if orderGood.CooperationContractNumber != "" { | ||
| 785 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 { | ||
| 786 | + orderGoodErrMap[dividendsReturnedOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, "退货单产品不能关联金额激励规则") | ||
| 787 | + } | ||
| 788 | + } | ||
| 680 | orderGoods = append(orderGoods, &domain.OrderGood{ | 789 | orderGoods = append(orderGoods, &domain.OrderGood{ |
| 681 | OrderGoodId: 0, | 790 | OrderGoodId: 0, |
| 682 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 791 | + OrderGoodAmount: orderGoodAmount, |
| 683 | OrderGoodName: orderGood.OrderGoodName, | 792 | OrderGoodName: orderGood.OrderGoodName, |
| 684 | OrderGoodPrice: orderGood.OrderGoodPrice, | 793 | OrderGoodPrice: orderGood.OrderGoodPrice, |
| 685 | OrderGoodQuantity: orderGood.OrderGoodQuantity, | 794 | OrderGoodQuantity: orderGood.OrderGoodQuantity, |
| @@ -1011,6 +1120,32 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) UpdateDivide | @@ -1011,6 +1120,32 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) UpdateDivide | ||
| 1011 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateDividendsReturnedOrderCommand.DividendsReturnedOrderId))) | 1120 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateDividendsReturnedOrderCommand.DividendsReturnedOrderId))) |
| 1012 | } | 1121 | } |
| 1013 | 1122 | ||
| 1123 | + // 合约仓储初始化 | ||
| 1124 | + var cooperationContractRepository domain.CooperationContractRepository | ||
| 1125 | + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{ | ||
| 1126 | + "transactionContext": transactionContext, | ||
| 1127 | + }); err != nil { | ||
| 1128 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1129 | + } else { | ||
| 1130 | + cooperationContractRepository = value | ||
| 1131 | + } | ||
| 1132 | + | ||
| 1133 | + // 查找合约 | ||
| 1134 | + cooperationContractsMap := make(map[string]*domain.CooperationContract) | ||
| 1135 | + if count, cooperationContracts, err := cooperationContractRepository.Find(map[string]interface{}{ | ||
| 1136 | + "offsetLimit": false, | ||
| 1137 | + "companyId": updateDividendsReturnedOrderCommand.CompanyId, | ||
| 1138 | + "orgId": updateDividendsReturnedOrderCommand.OrgId, | ||
| 1139 | + }); err != nil { | ||
| 1140 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 1141 | + } else { | ||
| 1142 | + if count > 0 { | ||
| 1143 | + for _, cooperationContract := range cooperationContracts { | ||
| 1144 | + cooperationContractsMap[cooperationContract.CooperationContractNumber] = cooperationContract | ||
| 1145 | + } | ||
| 1146 | + } | ||
| 1147 | + } | ||
| 1148 | + | ||
| 1014 | // 获取订单产品 | 1149 | // 获取订单产品 |
| 1015 | var orderGoods []*domain.OrderGood | 1150 | var orderGoods []*domain.OrderGood |
| 1016 | var dividendsReturnedOrderAmount float64 | 1151 | var dividendsReturnedOrderAmount float64 |
| @@ -1020,9 +1155,33 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) UpdateDivide | @@ -1020,9 +1155,33 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) UpdateDivide | ||
| 1020 | if err3 != nil { | 1155 | if err3 != nil { |
| 1021 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error()) | 1156 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error()) |
| 1022 | } | 1157 | } |
| 1158 | + | ||
| 1159 | + // 退货产品金额计算 | ||
| 1160 | + orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Float64() | ||
| 1161 | + | ||
| 1162 | + // 校验合约激励类型是否正确 | ||
| 1163 | + ruleMatchedFlag := false | ||
| 1164 | + if orderGood.CooperationContractNumber != "" { | ||
| 1165 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 { | ||
| 1166 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "退货单产品不能关联金额激励规则") | ||
| 1167 | + } | ||
| 1168 | + // 校验产品关联合约的激励规则是否匹配订单时间 | ||
| 1169 | + if cooperationContractsMap[orderGood.CooperationContractNumber] != nil { | ||
| 1170 | + for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules { | ||
| 1171 | + if (orderTime.After(incentivesRule.DividendsIncentivesStageStart) || orderTime.Equal(incentivesRule.DividendsIncentivesStageStart)) && (orderTime.Before(incentivesRule.DividendsIncentivesStageEnd) || orderTime.Equal(incentivesRule.DividendsIncentivesStageEnd)) { | ||
| 1172 | + ruleMatchedFlag = true | ||
| 1173 | + break | ||
| 1174 | + } | ||
| 1175 | + } | ||
| 1176 | + } | ||
| 1177 | + if !ruleMatchedFlag { | ||
| 1178 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间无法匹配分红激励规则,请重新选择") | ||
| 1179 | + } | ||
| 1180 | + } | ||
| 1181 | + | ||
| 1023 | orderGoods = append(orderGoods, &domain.OrderGood{ | 1182 | orderGoods = append(orderGoods, &domain.OrderGood{ |
| 1024 | OrderGoodId: orderGoodId, | 1183 | OrderGoodId: orderGoodId, |
| 1025 | - OrderGoodAmount: orderGood.OrderGoodAmount, | 1184 | + OrderGoodAmount: orderGoodAmount, |
| 1026 | OrderGoodName: orderGood.OrderGoodName, | 1185 | OrderGoodName: orderGood.OrderGoodName, |
| 1027 | OrderGoodPrice: orderGood.OrderGoodPrice, | 1186 | OrderGoodPrice: orderGood.OrderGoodPrice, |
| 1028 | OrderGoodQuantity: orderGood.OrderGoodQuantity, | 1187 | OrderGoodQuantity: orderGood.OrderGoodQuantity, |
| @@ -1036,7 +1195,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) UpdateDivide | @@ -1036,7 +1195,7 @@ func (dividendsReturnedOrderService *DividendsReturnedOrderService) UpdateDivide | ||
| 1036 | UpdatedAt: time.Now(), | 1195 | UpdatedAt: time.Now(), |
| 1037 | }) | 1196 | }) |
| 1038 | // 计算分红退货单金额 | 1197 | // 计算分红退货单金额 |
| 1039 | - dividendsReturnedOrderAmount = dividendsReturnedOrderAmount + orderGood.OrderGoodAmount | 1198 | + dividendsReturnedOrderAmount, _ = decimal.NewFromFloat(dividendsReturnedOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodAmount)).Float64() |
| 1040 | } | 1199 | } |
| 1041 | 1200 | ||
| 1042 | if err := dividendsReturnedOrder.Update(tool_funs.SimpleStructToMap(updateDividendsReturnedOrderCommand)); err != nil { | 1201 | if err := dividendsReturnedOrder.Update(tool_funs.SimpleStructToMap(updateDividendsReturnedOrderCommand)); err != nil { |
| @@ -60,3 +60,11 @@ func CreateDividendsEstimateDao(options map[string]interface{}) (*dao.DividendsE | @@ -60,3 +60,11 @@ func CreateDividendsEstimateDao(options map[string]interface{}) (*dao.DividendsE | ||
| 60 | } | 60 | } |
| 61 | return dao.NewDividendsEstimateDao(transactionContext) | 61 | return dao.NewDividendsEstimateDao(transactionContext) |
| 62 | } | 62 | } |
| 63 | + | ||
| 64 | +func CreateCooperationApplicationDao(options map[string]interface{}) (*dao.CooperationApplicationDao, error) { | ||
| 65 | + var transactionContext *pg.TransactionContext | ||
| 66 | + if value, ok := options["transactionContext"]; ok { | ||
| 67 | + transactionContext = value.(*pg.TransactionContext) | ||
| 68 | + } | ||
| 69 | + return dao.NewCooperationApplicationDao(transactionContext) | ||
| 70 | +} |
| @@ -4,7 +4,9 @@ import "os" | @@ -4,7 +4,9 @@ import "os" | ||
| 4 | 4 | ||
| 5 | const SERVICE_NAME = "allied-creation-cooperation" | 5 | const SERVICE_NAME = "allied-creation-cooperation" |
| 6 | 6 | ||
| 7 | -// LOG_LEVEL 日志相关设置 | 7 | +// LOG_TYPE 日志相关设置 |
| 8 | +var LOG_TYPE = "terminal" // file, terminal, es | ||
| 9 | +var LOG_FRAMEWORK = "beego" // beego logrus | ||
| 8 | var LOG_LEVEL = "debug" | 10 | var LOG_LEVEL = "debug" |
| 9 | var LOG_FILE = "app.log" | 11 | var LOG_FILE = "app.log" |
| 10 | var LOG_PREFIX = "[allied-creation-cooperation]" | 12 | var LOG_PREFIX = "[allied-creation-cooperation]" |
| @@ -16,9 +18,15 @@ var USER_MODULE_HOST = "http://127.0.0.1:8081" | @@ -16,9 +18,15 @@ var USER_MODULE_HOST = "http://127.0.0.1:8081" | ||
| 16 | var BASIC_MODULE_HOST = "http://127.0.0.1:8080" | 18 | var BASIC_MODULE_HOST = "http://127.0.0.1:8080" |
| 17 | 19 | ||
| 18 | func init() { | 20 | func init() { |
| 21 | + if os.Getenv("LOG_TYPE") != "" { | ||
| 22 | + LOG_TYPE = os.Getenv("LOG_TYPE") | ||
| 23 | + } | ||
| 19 | if os.Getenv("LOG_LEVEL") != "" { | 24 | if os.Getenv("LOG_LEVEL") != "" { |
| 20 | LOG_LEVEL = os.Getenv("LOG_LEVEL") | 25 | LOG_LEVEL = os.Getenv("LOG_LEVEL") |
| 21 | } | 26 | } |
| 27 | + if os.Getenv("LOG_FRAMEWORK") != "" { | ||
| 28 | + LOG_FRAMEWORK = os.Getenv("LOG_FRAMEWORK") | ||
| 29 | + } | ||
| 22 | if os.Getenv("LOG_FILE") != "" { | 30 | if os.Getenv("LOG_FILE") != "" { |
| 23 | LOG_FILE = os.Getenv("LOG_FILE") | 31 | LOG_FILE = os.Getenv("LOG_FILE") |
| 24 | } | 32 | } |
| @@ -28,4 +36,7 @@ func init() { | @@ -28,4 +36,7 @@ func init() { | ||
| 28 | if os.Getenv("USER_MODULE_HOST") != "" { | 36 | if os.Getenv("USER_MODULE_HOST") != "" { |
| 29 | USER_MODULE_HOST = os.Getenv("USER_MODULE_HOST") | 37 | USER_MODULE_HOST = os.Getenv("USER_MODULE_HOST") |
| 30 | } | 38 | } |
| 39 | + if os.Getenv("BASIC_MODULE_HOST") != "" { | ||
| 40 | + BASIC_MODULE_HOST = os.Getenv("BASIC_MODULE_HOST") | ||
| 41 | + } | ||
| 31 | } | 42 | } |
| @@ -2,13 +2,13 @@ package constant | @@ -2,13 +2,13 @@ package constant | ||
| 2 | 2 | ||
| 3 | import "os" | 3 | import "os" |
| 4 | 4 | ||
| 5 | -// kafka 地址 | ||
| 6 | -var KAFKA_HOSTS = "" | 5 | +// KAFKA_HOSTS kafka 地址 |
| 6 | +var KAFKA_HOSTS = "192.168.0.250:9092,192.168.0.251:9092,192.168.0.252:9092" | ||
| 7 | 7 | ||
| 8 | -// kafka topic log stash | 8 | +// TOPIC_LOG_STASH kafka topic log stash |
| 9 | var TOPIC_LOG_STASH = "go_stash_dev" | 9 | var TOPIC_LOG_STASH = "go_stash_dev" |
| 10 | 10 | ||
| 11 | -// 是否启用日志收集 (本地不启用) | 11 | +// ENABLE_KAFKA_LOG 是否启用日志收集 (本地不启用) |
| 12 | var ENABLE_KAFKA_LOG = false | 12 | var ENABLE_KAFKA_LOG = false |
| 13 | 13 | ||
| 14 | func init() { | 14 | func init() { |
| @@ -19,6 +19,10 @@ func init() { | @@ -19,6 +19,10 @@ func init() { | ||
| 19 | POSTGRESQL_PORT = os.Getenv("TOPIC_LOG_STASH") | 19 | POSTGRESQL_PORT = os.Getenv("TOPIC_LOG_STASH") |
| 20 | } | 20 | } |
| 21 | if os.Getenv("ENABLE_KAFKA_LOG") != "" { | 21 | if os.Getenv("ENABLE_KAFKA_LOG") != "" { |
| 22 | - DISABLE_CREATE_TABLE = true | 22 | + if os.Getenv("ENABLE_KAFKA_LOG") == "true" { |
| 23 | + ENABLE_KAFKA_LOG = true | ||
| 24 | + } else if os.Getenv("ENABLE_KAFKA_LOG") == "false" { | ||
| 25 | + ENABLE_KAFKA_LOG = false | ||
| 26 | + } | ||
| 23 | } | 27 | } |
| 24 | } | 28 | } |
| @@ -26,8 +26,8 @@ type CooperationApplication struct { | @@ -26,8 +26,8 @@ type CooperationApplication struct { | ||
| 26 | CooperationProject *CooperationProject `json:"cooperationProject"` | 26 | CooperationProject *CooperationProject `json:"cooperationProject"` |
| 27 | // 数据所属组织机构 | 27 | // 数据所属组织机构 |
| 28 | Org *Org `json:"org"` | 28 | Org *Org `json:"org"` |
| 29 | - // 是否被取消标志位 | ||
| 30 | - IsCanceled bool `json:"isCanceled"` | 29 | + // 是否被取消标志位 1未取消,2取消 |
| 30 | + IsCanceled int32 `json:"isCanceled"` | ||
| 31 | // 公司 | 31 | // 公司 |
| 32 | Company *Company `json:"company"` | 32 | Company *Company `json:"company"` |
| 33 | // 创建时间 | 33 | // 创建时间 |
| @@ -55,7 +55,7 @@ func (cooperationApplication *CooperationApplication) Identify() interface{} { | @@ -55,7 +55,7 @@ func (cooperationApplication *CooperationApplication) Identify() interface{} { | ||
| 55 | 55 | ||
| 56 | func (cooperationApplication *CooperationApplication) Update(data map[string]interface{}) error { | 56 | func (cooperationApplication *CooperationApplication) Update(data map[string]interface{}) error { |
| 57 | if isCanceled, ok := data["isCanceled"]; ok { | 57 | if isCanceled, ok := data["isCanceled"]; ok { |
| 58 | - cooperationApplication.IsCanceled = isCanceled.(bool) | 58 | + cooperationApplication.IsCanceled = isCanceled.(int32) |
| 59 | } | 59 | } |
| 60 | if cooperationApplicationAttachment, ok := data["cooperationApplicationAttachment"]; ok { | 60 | if cooperationApplicationAttachment, ok := data["cooperationApplicationAttachment"]; ok { |
| 61 | cooperationApplication.CooperationApplicationAttachment = cooperationApplicationAttachment.([]*Attachment) | 61 | cooperationApplication.CooperationApplicationAttachment = cooperationApplicationAttachment.([]*Attachment) |
| @@ -22,7 +22,7 @@ type CooperationProject struct { | @@ -22,7 +22,7 @@ type CooperationProject struct { | ||
| 22 | CooperationMode *CooperationMode `json:"cooperationMode"` | 22 | CooperationMode *CooperationMode `json:"cooperationMode"` |
| 23 | // 共创项目发起部门 | 23 | // 共创项目发起部门 |
| 24 | Department *Department `json:"department"` | 24 | Department *Department `json:"department"` |
| 25 | - // 共创项目承接对象,1员工,2共创用户,3公开,可以多选 | 25 | + // 共创项目承接对象,1员工,2共创用户,4公开,可以多选 |
| 26 | CooperationProjectUndertakerTypes []int32 `json:"cooperationProjectUndertakerTypes"` | 26 | CooperationProjectUndertakerTypes []int32 `json:"cooperationProjectUndertakerTypes"` |
| 27 | // 数据所属组织机构 | 27 | // 数据所属组织机构 |
| 28 | Org *Org `json:"org"` | 28 | Org *Org `json:"org"` |
| @@ -61,20 +61,12 @@ type ImportInfo struct { | @@ -61,20 +61,12 @@ type ImportInfo struct { | ||
| 61 | // FailInfo 返回的失败信息 | 61 | // FailInfo 返回的失败信息 |
| 62 | type FailInfo struct { | 62 | type FailInfo struct { |
| 63 | FailReason string `json:"failReason"` | 63 | FailReason string `json:"failReason"` |
| 64 | - //OriginalOrderNum string `json:"originalOrderNum"` | ||
| 65 | - //DividendsCustomerName string `json:"dividendsCustomerName"` | ||
| 66 | - //OrderGoodName string `json:"orderGoodName"` | ||
| 67 | - //OrderTime string `json:"orderTime"` | ||
| 68 | - //RegionName string `json:"regionName"` | ||
| 69 | - //OrderGoodQuantity string `json:"orderGoodQuantity"` | ||
| 70 | - //OrderGoodPrice string `json:"orderGoodPrice"` | ||
| 71 | - //Expense string `json:"expense"` | ||
| 72 | - //CooperationContractNumber string `json:"cooperationContractNumber"` | ||
| 73 | *command.ImportDividendsOrderData | 64 | *command.ImportDividendsOrderData |
| 74 | } | 65 | } |
| 75 | 66 | ||
| 76 | type DividendsOrderRepository interface { | 67 | type DividendsOrderRepository interface { |
| 77 | Save(dividendsOrder *DividendsOrder) (*DividendsOrder, error) | 68 | Save(dividendsOrder *DividendsOrder) (*DividendsOrder, error) |
| 69 | + SaveMany(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) | ||
| 78 | UpdateMany(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) | 70 | UpdateMany(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) |
| 79 | Remove(dividendsOrder *DividendsOrder) (*DividendsOrder, error) | 71 | Remove(dividendsOrder *DividendsOrder) (*DividendsOrder, error) |
| 80 | BatchRemove(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) | 72 | BatchRemove(dividendsOrders []*DividendsOrder) ([]*DividendsOrder, error) |
| 1 | package domain | 1 | package domain |
| 2 | 2 | ||
| 3 | -import "time" | 3 | +import ( |
| 4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/dividendsReturnedOrder/command" | ||
| 5 | + "time" | ||
| 6 | +) | ||
| 4 | 7 | ||
| 5 | // DividendsReturnedOrder 分红退货单实体 | 8 | // DividendsReturnedOrder 分红退货单实体 |
| 6 | type DividendsReturnedOrder struct { | 9 | type DividendsReturnedOrder struct { |
| @@ -46,8 +49,15 @@ type DividendsReturnedOrder struct { | @@ -46,8 +49,15 @@ type DividendsReturnedOrder struct { | ||
| 46 | OperateTime time.Time `json:"operateTime"` | 49 | OperateTime time.Time `json:"operateTime"` |
| 47 | } | 50 | } |
| 48 | 51 | ||
| 52 | +// FailReturnedInfo 返回的失败信息 | ||
| 53 | +type FailReturnedInfo struct { | ||
| 54 | + FailReason string `json:"failReason"` | ||
| 55 | + *command.ImportDividendsReturnedOrderData | ||
| 56 | +} | ||
| 57 | + | ||
| 49 | type DividendsReturnedOrderRepository interface { | 58 | type DividendsReturnedOrderRepository interface { |
| 50 | Save(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) | 59 | Save(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) |
| 60 | + SaveMany(dividendsReturnedOrders []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) | ||
| 51 | UpdateMany(dividendsReturnedOrder []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) | 61 | UpdateMany(dividendsReturnedOrder []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) |
| 52 | Remove(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) | 62 | Remove(dividendsReturnedOrder *DividendsReturnedOrder) (*DividendsReturnedOrder, error) |
| 53 | BatchRemove(dividendsReturnedOrders []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) | 63 | BatchRemove(dividendsReturnedOrders []*DividendsReturnedOrder) ([]*DividendsReturnedOrder, error) |
| @@ -18,7 +18,7 @@ type OrderGood struct { | @@ -18,7 +18,7 @@ type OrderGood struct { | ||
| 18 | // 订单产品单价 | 18 | // 订单产品单价 |
| 19 | OrderGoodPrice float64 `json:"orderGoodPrice"` | 19 | OrderGoodPrice float64 `json:"orderGoodPrice"` |
| 20 | // 订单产品数量 | 20 | // 订单产品数量 |
| 21 | - OrderGoodQuantity int64 `json:"orderGoodQuantity,string"` | 21 | + OrderGoodQuantity float64 `json:"orderGoodQuantity,string"` |
| 22 | // 关联分红订单号 | 22 | // 关联分红订单号 |
| 23 | DividendsOrderNumber string `json:"dividendsOrderNumber"` | 23 | DividendsOrderNumber string `json:"dividendsOrderNumber"` |
| 24 | // 关联的分红退货单号 | 24 | // 关联的分红退货单号 |
| @@ -66,7 +66,7 @@ func (orderGood *OrderGood) Update(data map[string]interface{}) error { | @@ -66,7 +66,7 @@ func (orderGood *OrderGood) Update(data map[string]interface{}) error { | ||
| 66 | orderGood.OrderGoodPrice = orderGoodPrice.(float64) | 66 | orderGood.OrderGoodPrice = orderGoodPrice.(float64) |
| 67 | } | 67 | } |
| 68 | if orderGoodQuantity, ok := data["orderGoodQuantity"]; ok { | 68 | if orderGoodQuantity, ok := data["orderGoodQuantity"]; ok { |
| 69 | - orderGood.OrderGoodQuantity = orderGoodQuantity.(int64) | 69 | + orderGood.OrderGoodQuantity = orderGoodQuantity.(float64) |
| 70 | } | 70 | } |
| 71 | if cooperationContractNumber, ok := data["cooperationContractNumber"]; ok { | 71 | if cooperationContractNumber, ok := data["cooperationContractNumber"]; ok { |
| 72 | orderGood.CooperationContractNumber = cooperationContractNumber.(string) | 72 | orderGood.CooperationContractNumber = cooperationContractNumber.(string) |
| @@ -31,3 +31,10 @@ type Relevant struct { | @@ -31,3 +31,10 @@ type Relevant struct { | ||
| 31 | // 公司 | 31 | // 公司 |
| 32 | Company *Company `json:"company"` | 32 | Company *Company `json:"company"` |
| 33 | } | 33 | } |
| 34 | + | ||
| 35 | +func (relevant *Relevant) Identify() interface{} { | ||
| 36 | + if relevant.RelevantId == 0 { | ||
| 37 | + return nil | ||
| 38 | + } | ||
| 39 | + return relevant.RelevantId | ||
| 40 | +} |
| 1 | package service | 1 | package service |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "fmt" | ||
| 4 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 5 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
| 7 | + "time" | ||
| 6 | ) | 8 | ) |
| 7 | 9 | ||
| 8 | type DividendsEstimateDetail struct { | 10 | type DividendsEstimateDetail struct { |
| 9 | - DividendsUser *domain.User `json:"dividendsUser"` // 共创参与(分红用户) | ||
| 10 | - DividendsParticipateType int32 `json:"dividendsParticipateType"` // 参与类型 | ||
| 11 | - DividendsStage int32 `json:"dividendsStage"` // 分红阶段 | ||
| 12 | - DividendsAmount float64 `json:"dividendsAmount"` // 分红金额 | 11 | + DividendsUser *domain.User `json:"dividendsUser"` // 共创参与(分红用户) |
| 12 | + DividendsParticipateType int32 `json:"dividendsParticipateType"` // 参与类型 | ||
| 13 | + DividendsStage int32 `json:"dividendsStage"` // 分红阶段 | ||
| 14 | + DividendsAmount float64 `json:"dividendsAmount"` // 分红金额 | ||
| 15 | + OrderOrReturnedOrderNumber string `json:"orderOrReturnedOrderNumber"` // 分红订单号或退货单号 | ||
| 16 | + IsSuccessfully bool `json:"isSuccessfully"` // 是否预算成功 | ||
| 17 | + Reason string `json:"reason"` // 错误原因 | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +// GenerateSpecificDividendsEstimateNumber 批量生成自定义分红预算单号 | ||
| 21 | +func (DividendsEstimateDetail *DividendsEstimateDetail) GenerateSpecificDividendsEstimateNumber(count int64, index int64) (string, error) { | ||
| 22 | + currentTime := time.Now() | ||
| 23 | + if count+index < 1000 { | ||
| 24 | + countStr := fmt.Sprintf("%03d", count+index+1) | ||
| 25 | + timestamp := currentTime.Unix() | ||
| 26 | + timeNow := time.Unix(timestamp, 0) | ||
| 27 | + timeString := timeNow.Format("20060102") | ||
| 28 | + timeString = timeString[2:len(timeString)] | ||
| 29 | + dividendsEstimateNumber := "FH" + timeString + "#" + countStr | ||
| 30 | + return dividendsEstimateNumber, nil | ||
| 31 | + } else { | ||
| 32 | + countStr := fmt.Sprintf("%d", count+index+1) | ||
| 33 | + timestamp := currentTime.Unix() | ||
| 34 | + timeNow := time.Unix(timestamp, 0) | ||
| 35 | + timeString := timeNow.Format("20060102") | ||
| 36 | + timeString = timeString[2:len(timeString)] | ||
| 37 | + dividendsEstimateNumber := "FH" + timeString + "#" + countStr | ||
| 38 | + return dividendsEstimateNumber, nil | ||
| 39 | + } | ||
| 13 | } | 40 | } |
| 14 | 41 | ||
| 15 | type ConfirmDividendsIncentivesEstimateService interface { | 42 | type ConfirmDividendsIncentivesEstimateService interface { |
| @@ -9,4 +9,5 @@ type UserService interface { | @@ -9,4 +9,5 @@ type UserService interface { | ||
| 9 | RelevantFrom(companyId int64, orgId int64, userId int64) (*domain.Relevant, error) // 获取相关人 | 9 | RelevantFrom(companyId int64, orgId int64, userId int64) (*domain.Relevant, error) // 获取相关人 |
| 10 | SalesmanFrom(companyId int64, orgId int64, userId int64) (*domain.Salesman, error) // 获取业务员 | 10 | SalesmanFrom(companyId int64, orgId int64, userId int64) (*domain.Salesman, error) // 获取业务员 |
| 11 | OperatorFrom(companyId int64, orgId int64, userId int64) (*domain.User, error) // 获取操作人 | 11 | OperatorFrom(companyId int64, orgId int64, userId int64) (*domain.User, error) // 获取操作人 |
| 12 | + VisitorFrom(companyId int64, orgId int64, userId int64) (*domain.User, error) // 获取游客 | ||
| 12 | } | 13 | } |
| @@ -37,3 +37,10 @@ type Undertaker struct { | @@ -37,3 +37,10 @@ type Undertaker struct { | ||
| 37 | // 合同附件 | 37 | // 合同附件 |
| 38 | ContractAttachment []*Attachment `json:"contractAttachment"` | 38 | ContractAttachment []*Attachment `json:"contractAttachment"` |
| 39 | } | 39 | } |
| 40 | + | ||
| 41 | +func (undertaker *Undertaker) Identify() interface{} { | ||
| 42 | + if undertaker.UndertakerId == 0 { | ||
| 43 | + return nil | ||
| 44 | + } | ||
| 45 | + return undertaker.UndertakerId | ||
| 46 | +} |
| 1 | +package dao | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | ||
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type CooperationApplicationDao struct { | ||
| 10 | + transactionContext *pgTransaction.TransactionContext | ||
| 11 | +} | ||
| 12 | + | ||
| 13 | +// CheckApplicationExist 判断该申请人是否提交过申请 | ||
| 14 | +func (dao *CooperationApplicationDao) CheckApplicationExist(queryOptions map[string]interface{}) (bool, error) { | ||
| 15 | + tx := dao.transactionContext.PgTx | ||
| 16 | + var cooperationApplicationModels []*models.CooperationApplication | ||
| 17 | + query := tx.Model(&cooperationApplicationModels) | ||
| 18 | + if cooperationProjectNumber, ok := queryOptions["cooperationProjectNumber"]; ok && cooperationProjectNumber != "" { | ||
| 19 | + query = query.Where("cooperation_project_number = ?", cooperationProjectNumber) | ||
| 20 | + } | ||
| 21 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 22 | + query = query.Where(`cooperation_application.company @> '{"companyId":"?"}'`, companyId) | ||
| 23 | + } | ||
| 24 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
| 25 | + query = query.Where(`cooperation_application.org @> '{"orgId":"?"}'`, orgId) | ||
| 26 | + } | ||
| 27 | + if applicantId, ok := queryOptions["applicantId"]; ok && applicantId.(int64) != 0 { | ||
| 28 | + query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userId":"?"}'`, applicantId) | ||
| 29 | + } | ||
| 30 | + if visitorUserBaseId, ok := queryOptions["visitorUserBaseId"]; ok && visitorUserBaseId.(int64) != 0 { | ||
| 31 | + query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userBaseId":"?"}'`, visitorUserBaseId) | ||
| 32 | + } | ||
| 33 | + if applicantBaseId, ok := queryOptions["applicantBaseId"]; ok && applicantBaseId.(int64) != 0 { | ||
| 34 | + query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userBaseId":"?"}'`, applicantBaseId) | ||
| 35 | + } | ||
| 36 | + ok, err := query.Exists() | ||
| 37 | + return ok, err | ||
| 38 | +} | ||
| 39 | + | ||
| 40 | +func NewCooperationApplicationDao(transactionContext *pgTransaction.TransactionContext) (*CooperationApplicationDao, error) { | ||
| 41 | + if transactionContext == nil { | ||
| 42 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
| 43 | + } else { | ||
| 44 | + return &CooperationApplicationDao{ | ||
| 45 | + transactionContext: transactionContext, | ||
| 46 | + }, nil | ||
| 47 | + } | ||
| 48 | +} |
| @@ -2,8 +2,12 @@ package dao | @@ -2,8 +2,12 @@ package dao | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "github.com/go-pg/pg/v10" | ||
| 6 | + "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder" | ||
| 5 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 7 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | ||
| 6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models" | 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models" |
| 10 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/transform" | ||
| 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" |
| 8 | "time" | 12 | "time" |
| 9 | ) | 13 | ) |
| @@ -13,7 +17,7 @@ type CooperationContractDao struct { | @@ -13,7 +17,7 @@ type CooperationContractDao struct { | ||
| 13 | } | 17 | } |
| 14 | 18 | ||
| 15 | // GenerateContractNumber 生成共创合约编号 | 19 | // GenerateContractNumber 生成共创合约编号 |
| 16 | -func (dao *CooperationContractDao) GenerateContractNumber() (string, error) { | 20 | +func (dao *CooperationContractDao) GenerateContractNumber(queryOptions map[string]interface{}) (string, error) { |
| 17 | tx := dao.transactionContext.PgTx | 21 | tx := dao.transactionContext.PgTx |
| 18 | var cooperationContractModels []*models.CooperationContract | 22 | var cooperationContractModels []*models.CooperationContract |
| 19 | query := tx.Model(&cooperationContractModels) | 23 | query := tx.Model(&cooperationContractModels) |
| @@ -22,16 +26,30 @@ func (dao *CooperationContractDao) GenerateContractNumber() (string, error) { | @@ -22,16 +26,30 @@ func (dao *CooperationContractDao) GenerateContractNumber() (string, error) { | ||
| 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) | 26 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) |
| 23 | query.Where("cooperation_contract.created_at >= ?", todayZeroTime) | 27 | query.Where("cooperation_contract.created_at >= ?", todayZeroTime) |
| 24 | query.Where("cooperation_contract.created_at < ?", nextDayZeroTime) | 28 | query.Where("cooperation_contract.created_at < ?", nextDayZeroTime) |
| 29 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 30 | + query = query.Where(`cooperation_contract.company @> '{"companyId":"?"}'`, companyId) | ||
| 31 | + } | ||
| 25 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | 32 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { |
| 26 | return "", err | 33 | return "", err |
| 27 | } else { | 34 | } else { |
| 28 | - countStr := fmt.Sprintf("%03d", count+1) | ||
| 29 | - timestamp := currentTime.Unix() | ||
| 30 | - timeNow := time.Unix(timestamp, 0) | ||
| 31 | - timeString := timeNow.Format("20060102") | ||
| 32 | - timeString = timeString[2:len(timeString)] | ||
| 33 | - contractNumber := "HY" + timeString + "#" + countStr | ||
| 34 | - return contractNumber, nil | 35 | + if count < 1000 { |
| 36 | + countStr := fmt.Sprintf("%03d", count+1) | ||
| 37 | + timestamp := currentTime.Unix() | ||
| 38 | + timeNow := time.Unix(timestamp, 0) | ||
| 39 | + timeString := timeNow.Format("20060102") | ||
| 40 | + timeString = timeString[2:len(timeString)] | ||
| 41 | + contractNumber := "HY" + timeString + "#" + countStr | ||
| 42 | + return contractNumber, nil | ||
| 43 | + } else { | ||
| 44 | + countStr := fmt.Sprintf("%d", count+1) | ||
| 45 | + timestamp := currentTime.Unix() | ||
| 46 | + timeNow := time.Unix(timestamp, 0) | ||
| 47 | + timeString := timeNow.Format("20060102") | ||
| 48 | + timeString = timeString[2:len(timeString)] | ||
| 49 | + dividendsOrderNumber := "HY" + timeString + "#" + countStr | ||
| 50 | + return dividendsOrderNumber, nil | ||
| 51 | + } | ||
| 52 | + | ||
| 35 | } | 53 | } |
| 36 | } | 54 | } |
| 37 | 55 | ||
| @@ -146,6 +164,76 @@ func (dao *CooperationContractDao) SearchCooperationContractByUndertaker(queryOp | @@ -146,6 +164,76 @@ func (dao *CooperationContractDao) SearchCooperationContractByUndertaker(queryOp | ||
| 146 | } | 164 | } |
| 147 | } | 165 | } |
| 148 | 166 | ||
| 167 | +func (dao *CooperationContractDao) Find(queryOptions map[string]interface{}) (int64, []*domain.CooperationContract, error) { | ||
| 168 | + tx := dao.transactionContext.PgTx | ||
| 169 | + var cooperationContractModels []*models.CooperationContract | ||
| 170 | + cooperationContracts := make([]*domain.CooperationContract, 0) | ||
| 171 | + query := sqlbuilder.BuildQuery(tx.Model(&cooperationContractModels), queryOptions) | ||
| 172 | + if cooperationContractNumber, ok := queryOptions["cooperationContractNumber"]; ok && cooperationContractNumber != "" { | ||
| 173 | + query.Where("cooperation_contract_number ilike ?", fmt.Sprintf("%%%s%%", cooperationContractNumber)) | ||
| 174 | + } | ||
| 175 | + if cooperationContractName, ok := queryOptions["cooperationContactName"]; ok && cooperationContractName != "" { | ||
| 176 | + query.Where("cooperation_contract_name like ?", fmt.Sprintf("%%%s%%", cooperationContractName)) | ||
| 177 | + } | ||
| 178 | + if departmentName, ok := queryOptions["departmentName"]; ok && departmentName != "" { | ||
| 179 | + query.Where(`(cooperation_contract.department->>'departmentName')::test LIKE ?`, fmt.Sprintf("%%%s%%", departmentName)) | ||
| 180 | + } | ||
| 181 | + if sponsorName, ok := queryOptions["sponsorName"]; ok && sponsorName != "" { | ||
| 182 | + query.Where(`(cooperation_contract.cooperation_contract_sponsor->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", sponsorName)) | ||
| 183 | + } | ||
| 184 | + if cooperationContractIds, ok := queryOptions["cooperationContractIds"]; ok && len(cooperationContractIds.([]int64)) != 0 { | ||
| 185 | + query.Where("cooperation_contract_id in (?)", pg.In(cooperationContractIds)) | ||
| 186 | + } | ||
| 187 | + if cooperationContractNumbers, ok := queryOptions["cooperationContractNumbers"]; ok && len(cooperationContractNumbers.([]string)) != 0 { | ||
| 188 | + query.Where("cooperation_contract_number in (?)", pg.In(cooperationContractNumbers)) | ||
| 189 | + } | ||
| 190 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 191 | + query.Where("company->>'companyId' = '?'", companyId) | ||
| 192 | + } | ||
| 193 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
| 194 | + query.Where("org->>'orgId' = '?'", orgId) | ||
| 195 | + } | ||
| 196 | + if orgIds, ok := queryOptions["orgIds"]; ok && len(orgIds.([]int64)) > 0 { | ||
| 197 | + newOrgIds := utils.SliceItoa(orgIds.([]int64)) | ||
| 198 | + query.Where("org->>'orgId' in (?)", pg.In(newOrgIds)) | ||
| 199 | + } | ||
| 200 | + if incentivesType, ok := queryOptions["incentivesType"]; ok && incentivesType.(int32) != 0 { | ||
| 201 | + query.Where("incentives_type = ?", incentivesType) | ||
| 202 | + } | ||
| 203 | + offsetLimitFlag := true | ||
| 204 | + if offsetLimit, ok := queryOptions["offsetLimit"]; ok { | ||
| 205 | + offsetLimitFlag = offsetLimit.(bool) | ||
| 206 | + } | ||
| 207 | + if offsetLimitFlag { | ||
| 208 | + query.SetOffsetAndLimit(20) | ||
| 209 | + } | ||
| 210 | + query.SetOrderDirect("cooperation_contract_id", "DESC") | ||
| 211 | + var count int | ||
| 212 | + var err error | ||
| 213 | + if count, err = query.SelectAndCount(); err != nil { | ||
| 214 | + return 0, cooperationContracts, err | ||
| 215 | + } | ||
| 216 | + for _, cooperationContractModel := range cooperationContractModels { | ||
| 217 | + // 获取分红激励规则列表 | ||
| 218 | + var dividendsIncentivesRuleModels []*models.DividendsIncentivesRule | ||
| 219 | + var moneyIncentivesRuleModels []*models.MoneyIncentivesRule | ||
| 220 | + var cooperationContractUndertakerModels []*models.CooperationContractUndertaker | ||
| 221 | + var cooperationContractRelevantModels []*models.CooperationContractRelevant | ||
| 222 | + if cooperationContract, err := transform.TransformToCooperationContractDomainModelFromPgModels( | ||
| 223 | + cooperationContractModel, | ||
| 224 | + &models.CooperationMode{}, | ||
| 225 | + dividendsIncentivesRuleModels, | ||
| 226 | + moneyIncentivesRuleModels, | ||
| 227 | + cooperationContractRelevantModels, | ||
| 228 | + cooperationContractUndertakerModels); err != nil { | ||
| 229 | + return 0, cooperationContracts, err | ||
| 230 | + } else { | ||
| 231 | + cooperationContracts = append(cooperationContracts, cooperationContract) | ||
| 232 | + } | ||
| 233 | + } | ||
| 234 | + return int64(count), cooperationContracts, nil | ||
| 235 | +} | ||
| 236 | + | ||
| 149 | func NewCooperationContractDao(transactionContext *pgTransaction.TransactionContext) (*CooperationContractDao, error) { | 237 | func NewCooperationContractDao(transactionContext *pgTransaction.TransactionContext) (*CooperationContractDao, error) { |
| 150 | if transactionContext == nil { | 238 | if transactionContext == nil { |
| 151 | return nil, fmt.Errorf("transactionContext参数不能为nil") | 239 | return nil, fmt.Errorf("transactionContext参数不能为nil") |
| @@ -13,7 +13,7 @@ type CooperationProjectDao struct { | @@ -13,7 +13,7 @@ type CooperationProjectDao struct { | ||
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | // GenerateProjectNumber 生成共创项目编码 | 15 | // GenerateProjectNumber 生成共创项目编码 |
| 16 | -func (dao *CooperationProjectDao) GenerateProjectNumber() (string, error) { | 16 | +func (dao *CooperationProjectDao) GenerateProjectNumber(queryOptions map[string]interface{}) (string, error) { |
| 17 | tx := dao.transactionContext.PgTx | 17 | tx := dao.transactionContext.PgTx |
| 18 | var cooperationProjectModels []*models.CooperationProject | 18 | var cooperationProjectModels []*models.CooperationProject |
| 19 | query := tx.Model(&cooperationProjectModels) | 19 | query := tx.Model(&cooperationProjectModels) |
| @@ -22,16 +22,29 @@ func (dao *CooperationProjectDao) GenerateProjectNumber() (string, error) { | @@ -22,16 +22,29 @@ func (dao *CooperationProjectDao) GenerateProjectNumber() (string, error) { | ||
| 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) | 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) |
| 23 | query.Where("cooperation_project.created_at >= ?", todayZeroTime) | 23 | query.Where("cooperation_project.created_at >= ?", todayZeroTime) |
| 24 | query.Where("cooperation_project.created_at < ?", nextDayZeroTime) | 24 | query.Where("cooperation_project.created_at < ?", nextDayZeroTime) |
| 25 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 26 | + query = query.Where(`cooperation_project.company @> '{"companyId":"?"}'`, companyId) | ||
| 27 | + } | ||
| 25 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | 28 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { |
| 26 | return "", err | 29 | return "", err |
| 27 | } else { | 30 | } else { |
| 28 | - countStr := fmt.Sprintf("%03d", count+1) | ||
| 29 | - timestamp := currentTime.Unix() | ||
| 30 | - timeNow := time.Unix(timestamp, 0) | ||
| 31 | - timeString := timeNow.Format("20060102") | ||
| 32 | - timeString = timeString[2:len(timeString)] | ||
| 33 | - contractNumber := "XM" + timeString + "#" + countStr | ||
| 34 | - return contractNumber, nil | 31 | + if count < 1000 { |
| 32 | + countStr := fmt.Sprintf("%03d", count+1) | ||
| 33 | + timestamp := currentTime.Unix() | ||
| 34 | + timeNow := time.Unix(timestamp, 0) | ||
| 35 | + timeString := timeNow.Format("20060102") | ||
| 36 | + timeString = timeString[2:len(timeString)] | ||
| 37 | + contractNumber := "XM" + timeString + "#" + countStr | ||
| 38 | + return contractNumber, nil | ||
| 39 | + } else { | ||
| 40 | + countStr := fmt.Sprintf("%d", count+1) | ||
| 41 | + timestamp := currentTime.Unix() | ||
| 42 | + timeNow := time.Unix(timestamp, 0) | ||
| 43 | + timeString := timeNow.Format("20060102") | ||
| 44 | + timeString = timeString[2:len(timeString)] | ||
| 45 | + contractNumber := "XM" + timeString + "#" + countStr | ||
| 46 | + return contractNumber, nil | ||
| 47 | + } | ||
| 35 | } | 48 | } |
| 36 | } | 49 | } |
| 37 | 50 |
| @@ -2,6 +2,7 @@ package dao | @@ -2,6 +2,7 @@ package dao | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "github.com/go-pg/pg/v10" | ||
| 5 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models" | 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" |
| @@ -13,7 +14,7 @@ type CreditAccountDao struct { | @@ -13,7 +14,7 @@ type CreditAccountDao struct { | ||
| 13 | } | 14 | } |
| 14 | 15 | ||
| 15 | // GenerateCreditAccountNumber 生成账期结算单号 | 16 | // GenerateCreditAccountNumber 生成账期结算单号 |
| 16 | -func (dao *CreditAccountDao) GenerateCreditAccountNumber() (string, error) { | 17 | +func (dao *CreditAccountDao) GenerateCreditAccountNumber(queryOptions map[string]interface{}) (string, error) { |
| 17 | tx := dao.transactionContext.PgTx | 18 | tx := dao.transactionContext.PgTx |
| 18 | var creditAccountModels []*models.CreditAccount | 19 | var creditAccountModels []*models.CreditAccount |
| 19 | query := tx.Model(&creditAccountModels) | 20 | query := tx.Model(&creditAccountModels) |
| @@ -22,16 +23,29 @@ func (dao *CreditAccountDao) GenerateCreditAccountNumber() (string, error) { | @@ -22,16 +23,29 @@ func (dao *CreditAccountDao) GenerateCreditAccountNumber() (string, error) { | ||
| 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) | 23 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) |
| 23 | query.Where("credit_account.created_at >= ?", todayZeroTime) | 24 | query.Where("credit_account.created_at >= ?", todayZeroTime) |
| 24 | query.Where("credit_account.created_at < ?", nextDayZeroTime) | 25 | query.Where("credit_account.created_at < ?", nextDayZeroTime) |
| 26 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 27 | + query = query.Where(`credit_account.company @> '{"companyId":"?"}'`, companyId) | ||
| 28 | + } | ||
| 25 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | 29 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { |
| 26 | return "", err | 30 | return "", err |
| 27 | } else { | 31 | } else { |
| 28 | - countStr := fmt.Sprintf("%03d", count+1) | ||
| 29 | - timestamp := currentTime.Unix() | ||
| 30 | - timeNow := time.Unix(timestamp, 0) | ||
| 31 | - timeString := timeNow.Format("20060102") | ||
| 32 | - timeString = timeString[2:len(timeString)] | ||
| 33 | - creditAccountNumber := "JS" + timeString + "#" + countStr | ||
| 34 | - return creditAccountNumber, nil | 32 | + if count < 1000 { |
| 33 | + countStr := fmt.Sprintf("%03d", count+1) | ||
| 34 | + timestamp := currentTime.Unix() | ||
| 35 | + timeNow := time.Unix(timestamp, 0) | ||
| 36 | + timeString := timeNow.Format("20060102") | ||
| 37 | + timeString = timeString[2:len(timeString)] | ||
| 38 | + creditAccountNumber := "JS" + timeString + "#" + countStr | ||
| 39 | + return creditAccountNumber, nil | ||
| 40 | + } else { | ||
| 41 | + countStr := fmt.Sprintf("%d", count+1) | ||
| 42 | + timestamp := currentTime.Unix() | ||
| 43 | + timeNow := time.Unix(timestamp, 0) | ||
| 44 | + timeString := timeNow.Format("20060102") | ||
| 45 | + timeString = timeString[2:len(timeString)] | ||
| 46 | + creditAccountNumber := "JS" + timeString + "#" + countStr | ||
| 47 | + return creditAccountNumber, nil | ||
| 48 | + } | ||
| 35 | } | 49 | } |
| 36 | } | 50 | } |
| 37 | 51 | ||
| @@ -58,7 +72,8 @@ func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interfa | @@ -58,7 +72,8 @@ func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interfa | ||
| 58 | creditAccount := new(models.CreditAccount) | 72 | creditAccount := new(models.CreditAccount) |
| 59 | query := dao.transactionContext.PgTx.Model(creditAccount) | 73 | query := dao.transactionContext.PgTx.Model(creditAccount) |
| 60 | query.ColumnExpr(`sum(settlement_amount) total`) | 74 | query.ColumnExpr(`sum(settlement_amount) total`) |
| 61 | - query.ColumnExpr(`sum((case when payment_status = 1 then actually_paid_amount else 0 end)) paid`) | 75 | + query.ColumnExpr(`sum((case when payment_status = 2 then actually_paid_amount else 0 end)) paid`) |
| 76 | + query.ColumnExpr(`sum((case when payment_status = 1 then settlement_amount else 0 end)) unpaid`) | ||
| 62 | query.ColumnExpr(`sum((case when settlement_time is not null then settlement_amount else 0 end)) accounted `) | 77 | query.ColumnExpr(`sum((case when settlement_time is not null then settlement_amount else 0 end)) accounted `) |
| 63 | if v, ok := queryOptions["beginTime"]; ok && !(v.(time.Time).IsZero()) { | 78 | if v, ok := queryOptions["beginTime"]; ok && !(v.(time.Time).IsZero()) { |
| 64 | query.Where(`created_at>? `, queryOptions["beginTime"]) | 79 | query.Where(`created_at>? `, queryOptions["beginTime"]) |
| @@ -70,6 +85,10 @@ func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interfa | @@ -70,6 +85,10 @@ func (dao *CreditAccountDao) DividendsStatistics(queryOptions map[string]interfa | ||
| 70 | if v, ok := queryOptions["orgId"]; ok && v.(int64) > 0 { | 85 | if v, ok := queryOptions["orgId"]; ok && v.(int64) > 0 { |
| 71 | query.Where(fmt.Sprintf(` org->>'orgId'= '%v'`, v)) | 86 | query.Where(fmt.Sprintf(` org->>'orgId'= '%v'`, v)) |
| 72 | } | 87 | } |
| 88 | + if v, ok := queryOptions["cooperationContractNumbers"]; ok && len(v.([]string)) > 0 { | ||
| 89 | + query.Where("cooperation_contract_number in (?)", pg.In(v)) | ||
| 90 | + } | ||
| 91 | + query.Where("deleted_at is null") | ||
| 73 | err := query.Select(v) | 92 | err := query.Select(v) |
| 74 | return err | 93 | return err |
| 75 | } | 94 | } |
| @@ -84,7 +103,7 @@ func (dao *CreditAccountDao) CooperationUsersDividendsStatistics(queryOptions ma | @@ -84,7 +103,7 @@ func (dao *CreditAccountDao) CooperationUsersDividendsStatistics(queryOptions ma | ||
| 84 | query.ColumnExpr(`sum((case when payment_status = 1 then actually_paid_amount else 0 end)) actually_paid_amount`) | 103 | query.ColumnExpr(`sum((case when payment_status = 1 then actually_paid_amount else 0 end)) actually_paid_amount`) |
| 85 | query.ColumnExpr(`max(participator->>'userId') user_id`) | 104 | query.ColumnExpr(`max(participator->>'userId') user_id`) |
| 86 | query.ColumnExpr(`max(participator#>>'{userInfo,userName}') user_name`) | 105 | query.ColumnExpr(`max(participator#>>'{userInfo,userName}') user_name`) |
| 87 | - if _, ok := queryOptions["beginTime"]; ok { | 106 | + if _, ok := queryOptions["beginTime"]; ok && !queryOptions["beginTime"].(time.Time).IsZero() { |
| 88 | query.Where(`created_at>? `, queryOptions["beginTime"]) | 107 | query.Where(`created_at>? `, queryOptions["beginTime"]) |
| 89 | query.Where(`created_at<? `, queryOptions["endTime"]) | 108 | query.Where(`created_at<? `, queryOptions["endTime"]) |
| 90 | } | 109 | } |
| @@ -103,6 +122,9 @@ func (dao *CreditAccountDao) CooperationUsersDividendsStatistics(queryOptions ma | @@ -103,6 +122,9 @@ func (dao *CreditAccountDao) CooperationUsersDividendsStatistics(queryOptions ma | ||
| 103 | if v, ok := queryOptions["endTime"]; ok && !v.(time.Time).IsZero() { | 122 | if v, ok := queryOptions["endTime"]; ok && !v.(time.Time).IsZero() { |
| 104 | query.Where("created_at < ?", v) | 123 | query.Where("created_at < ?", v) |
| 105 | } | 124 | } |
| 125 | + if v, ok := queryOptions["cooperationContractNumbers"]; ok && len(v.([]string)) > 0 { | ||
| 126 | + query.Where("cooperation_contract_number in (?)", pg.In(v)) | ||
| 127 | + } | ||
| 106 | query.Where("deleted_at is null") | 128 | query.Where("deleted_at is null") |
| 107 | if v, ok := queryOptions["sortByActuallyPaidAmount"]; ok { | 129 | if v, ok := queryOptions["sortByActuallyPaidAmount"]; ok { |
| 108 | vInt := v.(int) | 130 | vInt := v.(int) |
| @@ -13,7 +13,7 @@ type DividendsEstimateDao struct { | @@ -13,7 +13,7 @@ type DividendsEstimateDao struct { | ||
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | // GenerateDividendsEstimateNumber 生成分红预算单号 | 15 | // GenerateDividendsEstimateNumber 生成分红预算单号 |
| 16 | -func (dao *DividendsEstimateDao) GenerateDividendsEstimateNumber() (string, error) { | 16 | +func (dao *DividendsEstimateDao) GenerateDividendsEstimateNumber(queryOptions map[string]interface{}) (string, error) { |
| 17 | tx := dao.transactionContext.PgTx | 17 | tx := dao.transactionContext.PgTx |
| 18 | var dividendsEstimateModels []*models.DividendsEstimate | 18 | var dividendsEstimateModels []*models.DividendsEstimate |
| 19 | query := tx.Model(÷ndsEstimateModels) | 19 | query := tx.Model(÷ndsEstimateModels) |
| @@ -22,16 +22,30 @@ func (dao *DividendsEstimateDao) GenerateDividendsEstimateNumber() (string, erro | @@ -22,16 +22,30 @@ func (dao *DividendsEstimateDao) GenerateDividendsEstimateNumber() (string, erro | ||
| 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) | 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) |
| 23 | query.Where("dividends_estimate.created_at >= ?", todayZeroTime) | 23 | query.Where("dividends_estimate.created_at >= ?", todayZeroTime) |
| 24 | query.Where("dividends_estimate.created_at < ?", nextDayZeroTime) | 24 | query.Where("dividends_estimate.created_at < ?", nextDayZeroTime) |
| 25 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 26 | + query = query.Where(`dividends_estimate.company @> '{"companyId":"?"}'`, companyId) | ||
| 27 | + } | ||
| 25 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | 28 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { |
| 26 | return "", err | 29 | return "", err |
| 27 | } else { | 30 | } else { |
| 28 | - countStr := fmt.Sprintf("%03d", count+1) | ||
| 29 | - timestamp := currentTime.Unix() | ||
| 30 | - timeNow := time.Unix(timestamp, 0) | ||
| 31 | - timeString := timeNow.Format("20060102") | ||
| 32 | - timeString = timeString[2:len(timeString)] | ||
| 33 | - dividendsOrderNumber := "FH" + timeString + "#" + countStr | ||
| 34 | - return dividendsOrderNumber, nil | 31 | + if count < 1000 { |
| 32 | + countStr := fmt.Sprintf("%03d", count+1) | ||
| 33 | + timestamp := currentTime.Unix() | ||
| 34 | + timeNow := time.Unix(timestamp, 0) | ||
| 35 | + timeString := timeNow.Format("20060102") | ||
| 36 | + timeString = timeString[2:len(timeString)] | ||
| 37 | + dividendsOrderNumber := "FH" + timeString + "#" + countStr | ||
| 38 | + return dividendsOrderNumber, nil | ||
| 39 | + } else { | ||
| 40 | + countStr := fmt.Sprintf("%d", count+1) | ||
| 41 | + timestamp := currentTime.Unix() | ||
| 42 | + timeNow := time.Unix(timestamp, 0) | ||
| 43 | + timeString := timeNow.Format("20060102") | ||
| 44 | + timeString = timeString[2:len(timeString)] | ||
| 45 | + dividendsOrderNumber := "FH" + timeString + "#" + countStr | ||
| 46 | + return dividendsOrderNumber, nil | ||
| 47 | + } | ||
| 48 | + | ||
| 35 | } | 49 | } |
| 36 | } | 50 | } |
| 37 | 51 | ||
| @@ -75,6 +89,24 @@ func (dao *DividendsEstimateDao) UserEstimated(queryOptions map[string]interface | @@ -75,6 +89,24 @@ func (dao *DividendsEstimateDao) UserEstimated(queryOptions map[string]interface | ||
| 75 | return ok, err | 89 | return ok, err |
| 76 | } | 90 | } |
| 77 | 91 | ||
| 92 | +// CountDividendsEstimate 统计当前分红预算单总数 | ||
| 93 | +func (dao *DividendsEstimateDao) CountDividendsEstimate(queryOptions map[string]interface{}) (int, error) { | ||
| 94 | + tx := dao.transactionContext.PgTx | ||
| 95 | + var dividendsEstimateModels []*models.DividendsEstimate | ||
| 96 | + query := tx.Model(÷ndsEstimateModels) | ||
| 97 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 98 | + query = query.Where(`dividends_estimate.company @> '{"companyId":"?"}'`, companyId) | ||
| 99 | + } | ||
| 100 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
| 101 | + query = query.Where(`dividends_estimate.org @> '{"orgId":"?"}'`, orgId) | ||
| 102 | + } | ||
| 103 | + if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | ||
| 104 | + return 0, err | ||
| 105 | + } else { | ||
| 106 | + return count, nil | ||
| 107 | + } | ||
| 108 | +} | ||
| 109 | + | ||
| 78 | func NewDividendsEstimateDao(transactionContext *pgTransaction.TransactionContext) (*DividendsEstimateDao, error) { | 110 | func NewDividendsEstimateDao(transactionContext *pgTransaction.TransactionContext) (*DividendsEstimateDao, error) { |
| 79 | if transactionContext == nil { | 111 | if transactionContext == nil { |
| 80 | return nil, fmt.Errorf("transactionContext参数不能为空") | 112 | return nil, fmt.Errorf("transactionContext参数不能为空") |
| @@ -13,7 +13,7 @@ type DividendsOrderDao struct { | @@ -13,7 +13,7 @@ type DividendsOrderDao struct { | ||
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | // GenerateDividendsOrderNumber 生成分红订单号 | 15 | // GenerateDividendsOrderNumber 生成分红订单号 |
| 16 | -func (dao *DividendsOrderDao) GenerateDividendsOrderNumber() (string, error) { | 16 | +func (dao *DividendsOrderDao) GenerateDividendsOrderNumber(queryOptions map[string]interface{}) (string, error) { |
| 17 | tx := dao.transactionContext.PgTx | 17 | tx := dao.transactionContext.PgTx |
| 18 | var dividendsOrderModels []*models.DividendsOrder | 18 | var dividendsOrderModels []*models.DividendsOrder |
| 19 | query := tx.Model(÷ndsOrderModels) | 19 | query := tx.Model(÷ndsOrderModels) |
| @@ -22,16 +22,29 @@ func (dao *DividendsOrderDao) GenerateDividendsOrderNumber() (string, error) { | @@ -22,16 +22,29 @@ func (dao *DividendsOrderDao) GenerateDividendsOrderNumber() (string, error) { | ||
| 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) | 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) |
| 23 | query.Where("dividends_order.created_at >= ?", todayZeroTime) | 23 | query.Where("dividends_order.created_at >= ?", todayZeroTime) |
| 24 | query.Where("dividends_order.created_at < ?", nextDayZeroTime) | 24 | query.Where("dividends_order.created_at < ?", nextDayZeroTime) |
| 25 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 26 | + query = query.Where(`dividends_order.company @> '{"companyId":"?"}'`, companyId) | ||
| 27 | + } | ||
| 25 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | 28 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { |
| 26 | return "", err | 29 | return "", err |
| 27 | } else { | 30 | } else { |
| 28 | - countStr := fmt.Sprintf("%03d", count+1) | ||
| 29 | - timestamp := currentTime.Unix() | ||
| 30 | - timeNow := time.Unix(timestamp, 0) | ||
| 31 | - timeString := timeNow.Format("20060102") | ||
| 32 | - timeString = timeString[2:len(timeString)] | ||
| 33 | - dividendsOrderNumber := "SL" + timeString + "#" + countStr | ||
| 34 | - return dividendsOrderNumber, nil | 31 | + if count < 1000 { |
| 32 | + countStr := fmt.Sprintf("%03d", count+1) | ||
| 33 | + timestamp := currentTime.Unix() | ||
| 34 | + timeNow := time.Unix(timestamp, 0) | ||
| 35 | + timeString := timeNow.Format("20060102") | ||
| 36 | + timeString = timeString[2:len(timeString)] | ||
| 37 | + dividendsOrderNumber := "SL" + timeString + "#" + countStr | ||
| 38 | + return dividendsOrderNumber, nil | ||
| 39 | + } else { | ||
| 40 | + countStr := fmt.Sprintf("%d", count+1) | ||
| 41 | + timestamp := currentTime.Unix() | ||
| 42 | + timeNow := time.Unix(timestamp, 0) | ||
| 43 | + timeString := timeNow.Format("20060102") | ||
| 44 | + timeString = timeString[2:len(timeString)] | ||
| 45 | + dividendsOrderNumber := "SL" + timeString + "#" + countStr | ||
| 46 | + return dividendsOrderNumber, nil | ||
| 47 | + } | ||
| 35 | } | 48 | } |
| 36 | } | 49 | } |
| 37 | 50 | ||
| @@ -78,6 +91,23 @@ func (dao *DividendsOrderDao) CalculateDividendsOrderAmount(queryOptions map[str | @@ -78,6 +91,23 @@ func (dao *DividendsOrderDao) CalculateDividendsOrderAmount(queryOptions map[str | ||
| 78 | return dividendsOrderModel.DividendsOrderAmount, nil | 91 | return dividendsOrderModel.DividendsOrderAmount, nil |
| 79 | } | 92 | } |
| 80 | 93 | ||
| 94 | +// CountDividendsOrder 统计当前订单总数 | ||
| 95 | +func (dao *DividendsOrderDao) CountDividendsOrder(queryOptions map[string]interface{}) (int, error) { | ||
| 96 | + tx := dao.transactionContext.PgTx | ||
| 97 | + var dividendsOrderModels []*models.DividendsOrder | ||
| 98 | + query := tx.Model(÷ndsOrderModels) | ||
| 99 | + currentTime := time.Now() | ||
| 100 | + todayZeroTime := utils.GetZeroTime(currentTime) | ||
| 101 | + nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) | ||
| 102 | + query.Where("dividends_order.created_at >= ?", todayZeroTime) | ||
| 103 | + query.Where("dividends_order.created_at < ?", nextDayZeroTime) | ||
| 104 | + if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | ||
| 105 | + return 0, err | ||
| 106 | + } else { | ||
| 107 | + return count, nil | ||
| 108 | + } | ||
| 109 | +} | ||
| 110 | + | ||
| 81 | func NewDividendsOrderDao(transactionContext *pgTransaction.TransactionContext) (*DividendsOrderDao, error) { | 111 | func NewDividendsOrderDao(transactionContext *pgTransaction.TransactionContext) (*DividendsOrderDao, error) { |
| 82 | if transactionContext == nil { | 112 | if transactionContext == nil { |
| 83 | return nil, fmt.Errorf("transactionContext参数不能为空") | 113 | return nil, fmt.Errorf("transactionContext参数不能为空") |
| @@ -13,7 +13,7 @@ type DividendsReturnedOrderDao struct { | @@ -13,7 +13,7 @@ type DividendsReturnedOrderDao struct { | ||
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | // GenerateDividendsReturnedOrderNumber 生成分红退货单号 | 15 | // GenerateDividendsReturnedOrderNumber 生成分红退货单号 |
| 16 | -func (dao *DividendsReturnedOrderDao) GenerateDividendsReturnedOrderNumber() (string, error) { | 16 | +func (dao *DividendsReturnedOrderDao) GenerateDividendsReturnedOrderNumber(queryOptions map[string]interface{}) (string, error) { |
| 17 | tx := dao.transactionContext.PgTx | 17 | tx := dao.transactionContext.PgTx |
| 18 | var dividendsReturnedOrderModels []*models.DividendsReturnedOrder | 18 | var dividendsReturnedOrderModels []*models.DividendsReturnedOrder |
| 19 | query := tx.Model(÷ndsReturnedOrderModels) | 19 | query := tx.Model(÷ndsReturnedOrderModels) |
| @@ -22,6 +22,9 @@ func (dao *DividendsReturnedOrderDao) GenerateDividendsReturnedOrderNumber() (st | @@ -22,6 +22,9 @@ func (dao *DividendsReturnedOrderDao) GenerateDividendsReturnedOrderNumber() (st | ||
| 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) | 22 | nextDayZeroTime := utils.GetNextDayZeroTime(currentTime) |
| 23 | query.Where("dividends_returned_order.created_at >= ?", todayZeroTime) | 23 | query.Where("dividends_returned_order.created_at >= ?", todayZeroTime) |
| 24 | query.Where("dividends_returned_order.created_at < ?", nextDayZeroTime) | 24 | query.Where("dividends_returned_order.created_at < ?", nextDayZeroTime) |
| 25 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 26 | + query = query.Where(`dividends_returned_order.company @> '{"companyId":"?"}'`, companyId) | ||
| 27 | + } | ||
| 25 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | 28 | if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { |
| 26 | return "", err | 29 | return "", err |
| 27 | } else { | 30 | } else { |
| @@ -30,7 +30,7 @@ func (dao *OrderGoodDao) CooperationGoodsStatistics(queryOptions map[string]inte | @@ -30,7 +30,7 @@ func (dao *OrderGoodDao) CooperationGoodsStatistics(queryOptions map[string]inte | ||
| 30 | queryLimit = fmt.Sprintf("limit %v", queryOptions["limit"]) | 30 | queryLimit = fmt.Sprintf("limit %v", queryOptions["limit"]) |
| 31 | } | 31 | } |
| 32 | sql := fmt.Sprintf(`select order_good_name good_name,sum(order_good_amount) good_amount from order_goods | 32 | sql := fmt.Sprintf(`select order_good_name good_name,sum(order_good_amount) good_amount from order_goods |
| 33 | -where company_id=? and org_id = ? %v | 33 | +where company_id=? and org_id = ? and deleted_at is null %v |
| 34 | GROUP BY order_good_name | 34 | GROUP BY order_good_name |
| 35 | order by good_amount desc | 35 | order by good_amount desc |
| 36 | %v | 36 | %v |
| @@ -49,7 +49,7 @@ func (dao *OrderGoodDao) CooperationCompanyModeStatistics(queryOptions map[strin | @@ -49,7 +49,7 @@ func (dao *OrderGoodDao) CooperationCompanyModeStatistics(queryOptions map[strin | ||
| 49 | var goods []*domain.CooperationModeStatisticsDto | 49 | var goods []*domain.CooperationModeStatisticsDto |
| 50 | sql := fmt.Sprintf(`select count(0) cooperation_people,sum(a.actually_paid_amount) dividends_estimate,b.cooperation_mode_number,sum(good_amount_count) order_amount | 50 | sql := fmt.Sprintf(`select count(0) cooperation_people,sum(a.actually_paid_amount) dividends_estimate,b.cooperation_mode_number,sum(good_amount_count) order_amount |
| 51 | from credit_accounts a inner join cooperation_contracts b on a.cooperation_contract_number = b.cooperation_contract_number | 51 | from credit_accounts a inner join cooperation_contracts b on a.cooperation_contract_number = b.cooperation_contract_number |
| 52 | -where a.company->>'companyId' = '?' and a.org->>'orgId' = '?' and b.status = 1 | 52 | +where a.company->>'companyId' = '?' and a.org->>'orgId' = '?' and a.deleted_at is null and b.status = 1 |
| 53 | group by b.cooperation_mode_number | 53 | group by b.cooperation_mode_number |
| 54 | `) | 54 | `) |
| 55 | _, err := tx.Query(&goods, sql, queryOptions["companyId"], queryOptions["orgId"]) | 55 | _, err := tx.Query(&goods, sql, queryOptions["companyId"], queryOptions["orgId"]) |
| @@ -50,6 +50,8 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst | @@ -50,6 +50,8 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst | ||
| 50 | for _, dividendsEstimate := range dividendsEstimates { | 50 | for _, dividendsEstimate := range dividendsEstimates { |
| 51 | // 根据当前分红预算单的分红订单号或退货单号获取分红预算单 | 51 | // 根据当前分红预算单的分红订单号或退货单号获取分红预算单 |
| 52 | if countRelative, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{ | 52 | if countRelative, dividendsEstimatesRelative, err2 := dividendsEstimateRepository.Find(map[string]interface{}{ |
| 53 | + "companyId": dividendsEstimate.Company.CompanyId, | ||
| 54 | + "orgId": dividendsEstimate.Org.OrgId, | ||
| 53 | "orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum, | 55 | "orderOrReturnedOrderNum": dividendsEstimate.OrderOrReturnedOrderNum, |
| 54 | }); err2 != nil { | 56 | }); err2 != nil { |
| 55 | return nil, err2 | 57 | return nil, err2 |
| @@ -86,6 +88,8 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst | @@ -86,6 +88,8 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst | ||
| 86 | 88 | ||
| 87 | // 获取分红订单 | 89 | // 获取分红订单 |
| 88 | if countDividendsOrder, orders, err4 := dividendsOrderRepository.Find(map[string]interface{}{ | 90 | if countDividendsOrder, orders, err4 := dividendsOrderRepository.Find(map[string]interface{}{ |
| 91 | + "companyId": dividendsEstimates[0].Company.CompanyId, | ||
| 92 | + "orgId": dividendsEstimates[0].Org.OrgId, | ||
| 89 | "dividendsOrderNumbers": orderNums, | 93 | "dividendsOrderNumbers": orderNums, |
| 90 | }); err4 != nil { | 94 | }); err4 != nil { |
| 91 | return nil, err4 | 95 | return nil, err4 |
| @@ -103,6 +107,8 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst | @@ -103,6 +107,8 @@ func (domainService *CancelDividendsEstimateService) CancelEstimate(dividendsEst | ||
| 103 | 107 | ||
| 104 | // 获取分红退货单 | 108 | // 获取分红退货单 |
| 105 | if countDividendsReturnedOrder, returnedOrders, err5 := dividendsReturnedOrderRepository.Find(map[string]interface{}{ | 109 | if countDividendsReturnedOrder, returnedOrders, err5 := dividendsReturnedOrderRepository.Find(map[string]interface{}{ |
| 110 | + "companyId": dividendsEstimates[0].Company.CompanyId, | ||
| 111 | + "orgId": dividendsEstimates[0].Org.OrgId, | ||
| 106 | "dividendsReturnedOrderNumbers": returnedOrderNums, | 112 | "dividendsReturnedOrderNumbers": returnedOrderNums, |
| 107 | }); err5 != nil { | 113 | }); err5 != nil { |
| 108 | return nil, err5 | 114 | return nil, err5 |
| @@ -2,9 +2,9 @@ package domain_service | @@ -2,9 +2,9 @@ package domain_service | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | - "github.com/linmadan/egglib-go/core/application" | ||
| 6 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 7 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 7 | + "github.com/shopspring/decimal" | ||
| 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" | 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" |
| 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/repository" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/repository" |
| @@ -18,48 +18,157 @@ type ConfirmDividendsIncentivesEstimateService struct { | @@ -18,48 +18,157 @@ type ConfirmDividendsIncentivesEstimateService struct { | ||
| 18 | // Confirm 确认业绩分红预算 | 18 | // Confirm 确认业绩分红预算 |
| 19 | func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoods []*domain.OrderGood) ([]*service.DividendsEstimateDetail, error) { | 19 | func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoods []*domain.OrderGood) ([]*service.DividendsEstimateDetail, error) { |
| 20 | var cooperationContractRepository domain.CooperationContractRepository // 共创合约仓储 | 20 | var cooperationContractRepository domain.CooperationContractRepository // 共创合约仓储 |
| 21 | + var cooperationProjectRepository domain.CooperationProjectRepository // 共创项目仓储 | ||
| 21 | var dividendsOrderRepository domain.DividendsOrderRepository // 分红订单仓储 | 22 | var dividendsOrderRepository domain.DividendsOrderRepository // 分红订单仓储 |
| 22 | var dividendsReturnedOrderRepository domain.DividendsReturnedOrderRepository // 分红退货单仓储 | 23 | var dividendsReturnedOrderRepository domain.DividendsReturnedOrderRepository // 分红退货单仓储 |
| 24 | + | ||
| 23 | // 共创合约仓储初始化 | 25 | // 共创合约仓储初始化 |
| 24 | if repo, err := repository.NewCooperationContractRepository(domainService.transactionContext); err != nil { | 26 | if repo, err := repository.NewCooperationContractRepository(domainService.transactionContext); err != nil { |
| 25 | return nil, err | 27 | return nil, err |
| 26 | } else { | 28 | } else { |
| 27 | cooperationContractRepository = repo | 29 | cooperationContractRepository = repo |
| 28 | } | 30 | } |
| 31 | + | ||
| 32 | + // 共创项目仓储初始化 | ||
| 33 | + if repo, err := repository.NewCooperationProjectRepository(domainService.transactionContext); err != nil { | ||
| 34 | + return nil, err | ||
| 35 | + } else { | ||
| 36 | + cooperationProjectRepository = repo | ||
| 37 | + } | ||
| 38 | + | ||
| 29 | // 分红订单仓储初始化 | 39 | // 分红订单仓储初始化 |
| 30 | if repo, err := repository.NewDividendsOrderRepository(domainService.transactionContext); err != nil { | 40 | if repo, err := repository.NewDividendsOrderRepository(domainService.transactionContext); err != nil { |
| 31 | return nil, err | 41 | return nil, err |
| 32 | } else { | 42 | } else { |
| 33 | dividendsOrderRepository = repo | 43 | dividendsOrderRepository = repo |
| 34 | } | 44 | } |
| 45 | + | ||
| 35 | // 分红退货单仓储初始化 | 46 | // 分红退货单仓储初始化 |
| 36 | if repo, err := repository.NewDividendsReturnedOrderRepository(domainService.transactionContext); err != nil { | 47 | if repo, err := repository.NewDividendsReturnedOrderRepository(domainService.transactionContext); err != nil { |
| 37 | return nil, err | 48 | return nil, err |
| 38 | } else { | 49 | } else { |
| 39 | dividendsReturnedOrderRepository = repo | 50 | dividendsReturnedOrderRepository = repo |
| 40 | } | 51 | } |
| 52 | + | ||
| 41 | // 确认业绩分红预算 | 53 | // 确认业绩分红预算 |
| 42 | var dividendsEstimateDetails []*service.DividendsEstimateDetail | 54 | var dividendsEstimateDetails []*service.DividendsEstimateDetail |
| 43 | for _, orderGood := range orderGoods { | 55 | for _, orderGood := range orderGoods { |
| 44 | // 获取合约 | 56 | // 获取合约 |
| 45 | - cooperationContract, err := cooperationContractRepository.FindOne(map[string]interface{}{"cooperationContractNumber": orderGood.CooperationContractNumber}) | 57 | + cooperationContract, err := cooperationContractRepository.FindOne(map[string]interface{}{ |
| 58 | + "cooperationContractNumber": orderGood.CooperationContractNumber, | ||
| 59 | + "companyId": orderGood.CompanyId, | ||
| 60 | + "orgId": orderGood.OrgId, | ||
| 61 | + }) | ||
| 46 | if err != nil { | 62 | if err != nil { |
| 47 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "共创合约不存在") | 63 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 64 | + DividendsUser: nil, | ||
| 65 | + DividendsParticipateType: 0, | ||
| 66 | + DividendsStage: 0, | ||
| 67 | + DividendsAmount: 0, | ||
| 68 | + OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 69 | + IsSuccessfully: false, | ||
| 70 | + Reason: "共创合约错误", | ||
| 71 | + }) | ||
| 72 | + continue | ||
| 73 | + //return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 48 | } | 74 | } |
| 49 | if cooperationContract == nil { | 75 | if cooperationContract == nil { |
| 50 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.CooperationContractNumber)) | 76 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 77 | + DividendsUser: nil, | ||
| 78 | + DividendsParticipateType: 0, | ||
| 79 | + DividendsStage: 0, | ||
| 80 | + DividendsAmount: 0, | ||
| 81 | + OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 82 | + IsSuccessfully: false, | ||
| 83 | + Reason: "共创合约" + orderGood.CooperationContractNumber + "不存在", | ||
| 84 | + }) | ||
| 85 | + continue | ||
| 86 | + //return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("共创合约%s不存在", orderGood.CooperationContractNumber)) | ||
| 51 | } | 87 | } |
| 52 | - if orderGood.DividendsOrderNumber != "" { | 88 | + |
| 89 | + // 获取共创项目 | ||
| 90 | + cooperationProject, err := cooperationProjectRepository.FindOne(map[string]interface{}{ | ||
| 91 | + "cooperationProjectNumber": cooperationContract.CooperationProjectNumber, | ||
| 92 | + "companyId": cooperationContract.Company.CompanyId, | ||
| 93 | + "orgId": cooperationContract.Org.OrgId, | ||
| 94 | + "notPause": true, | ||
| 95 | + }) | ||
| 96 | + if err != nil { | ||
| 97 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | ||
| 98 | + DividendsUser: nil, | ||
| 99 | + DividendsParticipateType: 0, | ||
| 100 | + DividendsStage: 0, | ||
| 101 | + DividendsAmount: 0, | ||
| 102 | + OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 103 | + IsSuccessfully: false, | ||
| 104 | + Reason: "共创项目" + orderGood.CooperationContractNumber + "查询错误", | ||
| 105 | + }) | ||
| 106 | + continue | ||
| 107 | + //return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 108 | + } | ||
| 109 | + if cooperationProject == nil { | ||
| 110 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | ||
| 111 | + DividendsUser: nil, | ||
| 112 | + DividendsParticipateType: 0, | ||
| 113 | + DividendsStage: 0, | ||
| 114 | + DividendsAmount: 0, | ||
| 115 | + OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 116 | + IsSuccessfully: false, | ||
| 117 | + Reason: "共创项目" + orderGood.CooperationContractNumber + "已结束或不存在", | ||
| 118 | + }) | ||
| 119 | + continue | ||
| 120 | + //return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("共创项目%s不存在", cooperationContract.CooperationProjectNumber)) | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + // 校验合约关联的项目是否已结束 | ||
| 124 | + //if cooperationProject.Status == 2 { | ||
| 125 | + // dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | ||
| 126 | + // DividendsUser: nil, | ||
| 127 | + // DividendsParticipateType: 0, | ||
| 128 | + // DividendsStage: 0, | ||
| 129 | + // DividendsAmount: 0, | ||
| 130 | + // OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 131 | + // IsSuccessfully: false, | ||
| 132 | + // Reason: "共创项目" + orderGood.CooperationContractNumber + "已结束", | ||
| 133 | + // }) | ||
| 134 | + // continue | ||
| 135 | + // //return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("共创项目%s已结束", cooperationContract.CooperationProjectNumber)) | ||
| 136 | + //} | ||
| 137 | + | ||
| 138 | + if orderGood.DividendsOrderNumber != "" { // 获取分红订单 | ||
| 53 | // 获取分红订单 | 139 | // 获取分红订单 |
| 54 | dividendsOrder, err2 := dividendsOrderRepository.FindOne(map[string]interface{}{ | 140 | dividendsOrder, err2 := dividendsOrderRepository.FindOne(map[string]interface{}{ |
| 55 | "dividendsOrderNumber": orderGood.DividendsOrderNumber, | 141 | "dividendsOrderNumber": orderGood.DividendsOrderNumber, |
| 142 | + "companyId": orderGood.CompanyId, | ||
| 143 | + "orgId": orderGood.OrgId, | ||
| 56 | }) | 144 | }) |
| 57 | if err2 != nil { | 145 | if err2 != nil { |
| 58 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单不存在") | 146 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 147 | + DividendsUser: nil, | ||
| 148 | + DividendsParticipateType: 0, | ||
| 149 | + DividendsStage: 0, | ||
| 150 | + DividendsAmount: 0, | ||
| 151 | + OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 152 | + IsSuccessfully: false, | ||
| 153 | + Reason: "分红订单" + orderGood.DividendsOrderNumber + "查询错误", | ||
| 154 | + }) | ||
| 155 | + continue | ||
| 156 | + //return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红订单不存在") | ||
| 59 | } | 157 | } |
| 60 | if dividendsOrder == nil { | 158 | if dividendsOrder == nil { |
| 61 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsOrderNumber)) | 159 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 160 | + DividendsUser: nil, | ||
| 161 | + DividendsParticipateType: 0, | ||
| 162 | + DividendsStage: 0, | ||
| 163 | + DividendsAmount: 0, | ||
| 164 | + OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 165 | + IsSuccessfully: false, | ||
| 166 | + Reason: "分红订单" + orderGood.DividendsOrderNumber + "不存在", | ||
| 167 | + }) | ||
| 168 | + continue | ||
| 169 | + //return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("分红订单%s不存在", orderGood.DividendsOrderNumber)) | ||
| 62 | } | 170 | } |
| 171 | + | ||
| 63 | // 匹配分红规则 | 172 | // 匹配分红规则 |
| 64 | var dividendsIncentivesRuleMatched *domain.DividendsIncentivesRule | 173 | var dividendsIncentivesRuleMatched *domain.DividendsIncentivesRule |
| 65 | for _, dividendsIncentivesRule := range cooperationContract.DividendsIncentivesRules { | 174 | for _, dividendsIncentivesRule := range cooperationContract.DividendsIncentivesRules { |
| @@ -69,14 +178,24 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -69,14 +178,24 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 69 | } | 178 | } |
| 70 | } | 179 | } |
| 71 | if dividendsIncentivesRuleMatched == nil { | 180 | if dividendsIncentivesRuleMatched == nil { |
| 72 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, "未匹配到分红规则") | 181 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 182 | + DividendsUser: nil, | ||
| 183 | + DividendsParticipateType: 0, | ||
| 184 | + DividendsStage: 0, | ||
| 185 | + DividendsAmount: 0, | ||
| 186 | + OrderOrReturnedOrderNumber: orderGood.DividendsOrderNumber, | ||
| 187 | + IsSuccessfully: false, | ||
| 188 | + Reason: "未匹配到分红规则", | ||
| 189 | + }) | ||
| 190 | + continue | ||
| 191 | + //return nil, application.ThrowError(application.RES_NO_FIND_ERROR, "未匹配到分红规则") | ||
| 73 | } | 192 | } |
| 74 | 193 | ||
| 75 | // 计算分红 | 194 | // 计算分红 |
| 76 | if dividendsIncentivesRuleMatched != nil { | 195 | if dividendsIncentivesRuleMatched != nil { |
| 77 | for _, undertaker := range cooperationContract.Undertakers { | 196 | for _, undertaker := range cooperationContract.Undertakers { |
| 78 | // 添加承接人分红预算信息详情 | 197 | // 添加承接人分红预算信息详情 |
| 79 | - undertakerDividendsAmount := (orderGood.OrderGoodAmount - orderGood.OrderGoodExpense) * dividendsIncentivesRuleMatched.DividendsIncentivesPercentage | 198 | + undertakerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.DividendsIncentivesPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 80 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 199 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 81 | DividendsUser: &domain.User{ | 200 | DividendsUser: &domain.User{ |
| 82 | UserId: undertaker.UserId, | 201 | UserId: undertaker.UserId, |
| @@ -87,18 +206,20 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -87,18 +206,20 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 87 | Roles: undertaker.Roles, | 206 | Roles: undertaker.Roles, |
| 88 | UserInfo: undertaker.UserInfo, | 207 | UserInfo: undertaker.UserInfo, |
| 89 | UserType: undertaker.UserType, | 208 | UserType: undertaker.UserType, |
| 90 | - UserName: undertaker.UserName, | 209 | + UserName: undertaker.UserInfo.UserName, |
| 91 | UserPhone: undertaker.UserPhone, | 210 | UserPhone: undertaker.UserPhone, |
| 92 | Status: undertaker.Status, | 211 | Status: undertaker.Status, |
| 93 | Company: undertaker.Company, | 212 | Company: undertaker.Company, |
| 94 | }, | 213 | }, |
| 95 | - DividendsParticipateType: domain.UNDERTAKER, | ||
| 96 | - DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 97 | - DividendsAmount: undertakerDividendsAmount, | 214 | + DividendsParticipateType: domain.UNDERTAKER, |
| 215 | + DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 216 | + DividendsAmount: undertakerDividendsAmount, | ||
| 217 | + OrderOrReturnedOrderNumber: dividendsOrder.DividendsOrderNumber, | ||
| 218 | + IsSuccessfully: true, | ||
| 98 | }) | 219 | }) |
| 99 | // 添加推荐人分红预算信息详情 | 220 | // 添加推荐人分红预算信息详情 |
| 100 | if undertaker.Referrer != nil { | 221 | if undertaker.Referrer != nil { |
| 101 | - referrerDividendsAmount := (orderGood.OrderGoodAmount - orderGood.OrderGoodExpense) * dividendsIncentivesRuleMatched.ReferrerPercentage | 222 | + referrerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 102 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 223 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 103 | DividendsUser: &domain.User{ | 224 | DividendsUser: &domain.User{ |
| 104 | UserId: undertaker.Referrer.UserId, | 225 | UserId: undertaker.Referrer.UserId, |
| @@ -113,14 +234,16 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -113,14 +234,16 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 113 | UserPhone: undertaker.Referrer.UserPhone, | 234 | UserPhone: undertaker.Referrer.UserPhone, |
| 114 | Company: undertaker.Referrer.Company, | 235 | Company: undertaker.Referrer.Company, |
| 115 | }, | 236 | }, |
| 116 | - DividendsParticipateType: domain.REFERRER, | ||
| 117 | - DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 118 | - DividendsAmount: referrerDividendsAmount, | 237 | + DividendsParticipateType: domain.REFERRER, |
| 238 | + DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 239 | + DividendsAmount: referrerDividendsAmount, | ||
| 240 | + OrderOrReturnedOrderNumber: dividendsOrder.DividendsOrderNumber, | ||
| 241 | + IsSuccessfully: true, | ||
| 119 | }) | 242 | }) |
| 120 | } | 243 | } |
| 121 | // 添加关联业务员分红预算信息详情 | 244 | // 添加关联业务员分红预算信息详情 |
| 122 | if undertaker.Salesman != nil { | 245 | if undertaker.Salesman != nil { |
| 123 | - salesmanDividendsAmount := (orderGood.OrderGoodAmount - orderGood.OrderGoodExpense) * dividendsIncentivesRuleMatched.SalesmanPercentage | 246 | + salesmanDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 124 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 247 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 125 | DividendsUser: &domain.User{ | 248 | DividendsUser: &domain.User{ |
| 126 | UserId: undertaker.Salesman.UserId, | 249 | UserId: undertaker.Salesman.UserId, |
| @@ -131,26 +254,50 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -131,26 +254,50 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 131 | Roles: undertaker.Salesman.Roles, | 254 | Roles: undertaker.Salesman.Roles, |
| 132 | UserInfo: undertaker.Salesman.UserInfo, | 255 | UserInfo: undertaker.Salesman.UserInfo, |
| 133 | UserType: undertaker.Salesman.UserType, | 256 | UserType: undertaker.Salesman.UserType, |
| 134 | - UserName: undertaker.Salesman.UserName, | 257 | + UserName: undertaker.Salesman.UserInfo.UserName, |
| 135 | UserPhone: undertaker.Salesman.UserPhone, | 258 | UserPhone: undertaker.Salesman.UserPhone, |
| 136 | Company: undertaker.Salesman.Company, | 259 | Company: undertaker.Salesman.Company, |
| 137 | }, | 260 | }, |
| 138 | - DividendsParticipateType: domain.SALESMAN, | ||
| 139 | - DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 140 | - DividendsAmount: salesmanDividendsAmount, | 261 | + DividendsParticipateType: domain.SALESMAN, |
| 262 | + DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 263 | + DividendsAmount: salesmanDividendsAmount, | ||
| 264 | + OrderOrReturnedOrderNumber: dividendsOrder.DividendsOrderNumber, | ||
| 265 | + IsSuccessfully: true, | ||
| 141 | }) | 266 | }) |
| 142 | } | 267 | } |
| 143 | } | 268 | } |
| 144 | } | 269 | } |
| 145 | - } else if orderGood.DividendsReturnedOrderNumber != "" { // 获取分红退货单 | 270 | + } else if orderGood.DividendsReturnedOrderNumber != "" { // 获取退货单 |
| 146 | dividendsReturnedOrder, err3 := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{ | 271 | dividendsReturnedOrder, err3 := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{ |
| 147 | "dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber, | 272 | "dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber, |
| 273 | + "companyId": orderGood.CompanyId, | ||
| 274 | + "orgId": orderGood.OrgId, | ||
| 148 | }) | 275 | }) |
| 149 | if err3 != nil { | 276 | if err3 != nil { |
| 150 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红退货单不存在") | 277 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 278 | + DividendsUser: nil, | ||
| 279 | + DividendsParticipateType: 0, | ||
| 280 | + DividendsStage: 0, | ||
| 281 | + DividendsAmount: 0, | ||
| 282 | + OrderOrReturnedOrderNumber: orderGood.DividendsReturnedOrderNumber, | ||
| 283 | + IsSuccessfully: false, | ||
| 284 | + Reason: "退货单" + orderGood.DividendsReturnedOrderNumber + "不存在", | ||
| 285 | + }) | ||
| 286 | + continue | ||
| 287 | + //return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "分红退货单不存在") | ||
| 151 | } | 288 | } |
| 152 | if dividendsReturnedOrder == nil { | 289 | if dividendsReturnedOrder == nil { |
| 153 | - return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsReturnedOrderNumber)) | 290 | + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 291 | + DividendsUser: nil, | ||
| 292 | + DividendsParticipateType: 0, | ||
| 293 | + DividendsStage: 0, | ||
| 294 | + DividendsAmount: 0, | ||
| 295 | + OrderOrReturnedOrderNumber: orderGood.DividendsReturnedOrderNumber, | ||
| 296 | + IsSuccessfully: false, | ||
| 297 | + Reason: "退货单" + orderGood.DividendsReturnedOrderNumber + "不存在", | ||
| 298 | + }) | ||
| 299 | + continue | ||
| 300 | + //return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsReturnedOrderNumber)) | ||
| 154 | } | 301 | } |
| 155 | // 匹配分红规则 | 302 | // 匹配分红规则 |
| 156 | var dividendsIncentivesRuleMatched *domain.DividendsIncentivesRule | 303 | var dividendsIncentivesRuleMatched *domain.DividendsIncentivesRule |
| @@ -163,7 +310,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -163,7 +310,7 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 163 | // 计算分红 | 310 | // 计算分红 |
| 164 | for _, undertaker := range cooperationContract.Undertakers { | 311 | for _, undertaker := range cooperationContract.Undertakers { |
| 165 | // 添加承接人分红退货预算信息详情 | 312 | // 添加承接人分红退货预算信息详情 |
| 166 | - undertakerDividendsAmount := -orderGood.OrderGoodAmount * dividendsIncentivesRuleMatched.DividendsIncentivesPercentage | 313 | + undertakerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.DividendsIncentivesPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 167 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 314 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 168 | DividendsUser: &domain.User{ | 315 | DividendsUser: &domain.User{ |
| 169 | UserId: undertaker.UserId, | 316 | UserId: undertaker.UserId, |
| @@ -174,18 +321,20 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -174,18 +321,20 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 174 | Roles: undertaker.Roles, | 321 | Roles: undertaker.Roles, |
| 175 | UserInfo: undertaker.UserInfo, | 322 | UserInfo: undertaker.UserInfo, |
| 176 | UserType: undertaker.UserType, | 323 | UserType: undertaker.UserType, |
| 177 | - UserName: undertaker.UserName, | 324 | + UserName: undertaker.UserInfo.UserName, |
| 178 | UserPhone: undertaker.UserPhone, | 325 | UserPhone: undertaker.UserPhone, |
| 179 | Status: undertaker.Status, | 326 | Status: undertaker.Status, |
| 180 | Company: undertaker.Company, | 327 | Company: undertaker.Company, |
| 181 | }, | 328 | }, |
| 182 | - DividendsParticipateType: domain.UNDERTAKER, | ||
| 183 | - DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 184 | - DividendsAmount: undertakerDividendsAmount, | 329 | + DividendsParticipateType: domain.UNDERTAKER, |
| 330 | + DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 331 | + DividendsAmount: -undertakerDividendsAmount, | ||
| 332 | + OrderOrReturnedOrderNumber: dividendsReturnedOrder.DividendsOrderNumber, | ||
| 333 | + IsSuccessfully: true, | ||
| 185 | }) | 334 | }) |
| 186 | // 添加推荐人分红退货预算信息详情 | 335 | // 添加推荐人分红退货预算信息详情 |
| 187 | if undertaker.Referrer != nil { | 336 | if undertaker.Referrer != nil { |
| 188 | - referrerDividendsAmount := -orderGood.OrderGoodAmount * dividendsIncentivesRuleMatched.ReferrerPercentage | 337 | + referrerDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 189 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 338 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 190 | DividendsUser: &domain.User{ | 339 | DividendsUser: &domain.User{ |
| 191 | UserId: undertaker.Referrer.UserId, | 340 | UserId: undertaker.Referrer.UserId, |
| @@ -196,18 +345,20 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -196,18 +345,20 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 196 | Roles: undertaker.Referrer.Roles, | 345 | Roles: undertaker.Referrer.Roles, |
| 197 | UserInfo: undertaker.Referrer.UserInfo, | 346 | UserInfo: undertaker.Referrer.UserInfo, |
| 198 | UserType: undertaker.Referrer.UserType, | 347 | UserType: undertaker.Referrer.UserType, |
| 199 | - UserName: undertaker.Referrer.UserName, | 348 | + UserName: undertaker.Referrer.UserInfo.UserName, |
| 200 | UserPhone: undertaker.Referrer.UserPhone, | 349 | UserPhone: undertaker.Referrer.UserPhone, |
| 201 | Company: undertaker.Referrer.Company, | 350 | Company: undertaker.Referrer.Company, |
| 202 | }, | 351 | }, |
| 203 | - DividendsParticipateType: domain.REFERRER, | ||
| 204 | - DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 205 | - DividendsAmount: referrerDividendsAmount, | 352 | + DividendsParticipateType: domain.REFERRER, |
| 353 | + DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 354 | + DividendsAmount: -referrerDividendsAmount, | ||
| 355 | + OrderOrReturnedOrderNumber: dividendsReturnedOrder.DividendsOrderNumber, | ||
| 356 | + IsSuccessfully: true, | ||
| 206 | }) | 357 | }) |
| 207 | } | 358 | } |
| 208 | // 添加关联业务员分红退货预算信息详情 | 359 | // 添加关联业务员分红退货预算信息详情 |
| 209 | if undertaker.Salesman != nil { | 360 | if undertaker.Salesman != nil { |
| 210 | - salesmanDividendsAmount := -orderGood.OrderGoodAmount * dividendsIncentivesRuleMatched.SalesmanPercentage | 361 | + salesmanDividendsAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodAmount).Mul(decimal.NewFromFloat(dividendsIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 211 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 362 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 212 | DividendsUser: &domain.User{ | 363 | DividendsUser: &domain.User{ |
| 213 | UserId: undertaker.Salesman.UserId, | 364 | UserId: undertaker.Salesman.UserId, |
| @@ -218,13 +369,15 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | @@ -218,13 +369,15 @@ func (domainService *ConfirmDividendsIncentivesEstimateService) Confirm(orderGoo | ||
| 218 | Roles: undertaker.Salesman.Roles, | 369 | Roles: undertaker.Salesman.Roles, |
| 219 | UserInfo: undertaker.Salesman.UserInfo, | 370 | UserInfo: undertaker.Salesman.UserInfo, |
| 220 | UserType: undertaker.Salesman.UserType, | 371 | UserType: undertaker.Salesman.UserType, |
| 221 | - UserName: undertaker.Salesman.UserName, | 372 | + UserName: undertaker.Salesman.UserInfo.UserName, |
| 222 | UserPhone: undertaker.Salesman.UserPhone, | 373 | UserPhone: undertaker.Salesman.UserPhone, |
| 223 | Company: undertaker.Salesman.Company, | 374 | Company: undertaker.Salesman.Company, |
| 224 | }, | 375 | }, |
| 225 | - DividendsParticipateType: domain.SALESMAN, | ||
| 226 | - DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 227 | - DividendsAmount: salesmanDividendsAmount, | 376 | + DividendsParticipateType: domain.SALESMAN, |
| 377 | + DividendsStage: dividendsIncentivesRuleMatched.DividendsIncentivesStage, | ||
| 378 | + DividendsAmount: -salesmanDividendsAmount, | ||
| 379 | + OrderOrReturnedOrderNumber: dividendsReturnedOrder.DividendsOrderNumber, | ||
| 380 | + IsSuccessfully: true, | ||
| 228 | }) | 381 | }) |
| 229 | } | 382 | } |
| 230 | } | 383 | } |
| @@ -4,6 +4,7 @@ import ( | @@ -4,6 +4,7 @@ import ( | ||
| 4 | "fmt" | 4 | "fmt" |
| 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| 7 | + "github.com/shopspring/decimal" | ||
| 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
| 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" | 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" |
| @@ -16,16 +17,8 @@ type ConfirmMoneyIncentivesEstimateService struct { | @@ -16,16 +17,8 @@ type ConfirmMoneyIncentivesEstimateService struct { | ||
| 16 | } | 17 | } |
| 17 | 18 | ||
| 18 | func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *domain.CooperationContract, stage int32, undertakerUIDs []int64) ([]*service.DividendsEstimateDetail, error) { | 19 | func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *domain.CooperationContract, stage int32, undertakerUIDs []int64) ([]*service.DividendsEstimateDetail, error) { |
| 19 | - //var dividendsEstimateRepository domain.DividendsEstimateRepository // 分红预算单仓储 | ||
| 20 | var dividendsEstimateDao *dao.DividendsEstimateDao // 分红预算DAO | 20 | var dividendsEstimateDao *dao.DividendsEstimateDao // 分红预算DAO |
| 21 | 21 | ||
| 22 | - // 分红预算单仓储初始化 | ||
| 23 | - //if repo, err := repository.NewDividendsEstimateRepository(domainService.transactionContext); err != nil { | ||
| 24 | - // return nil, err | ||
| 25 | - //} else { | ||
| 26 | - // dividendsEstimateRepository = repo | ||
| 27 | - //} | ||
| 28 | - | ||
| 29 | // 分红预算DAO初始化 | 22 | // 分红预算DAO初始化 |
| 30 | if estimateDao, err := dao.NewDividendsEstimateDao(domainService.transactionContext); err != nil { | 23 | if estimateDao, err := dao.NewDividendsEstimateDao(domainService.transactionContext); err != nil { |
| 31 | return nil, err | 24 | return nil, err |
| @@ -68,7 +61,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | @@ -68,7 +61,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | ||
| 68 | if undertakerEstimated { | 61 | if undertakerEstimated { |
| 69 | return nil, fmt.Errorf("用户 " + undertaker.UserName + " 已分红") | 62 | return nil, fmt.Errorf("用户 " + undertaker.UserName + " 已分红") |
| 70 | } else { | 63 | } else { |
| 71 | - undertakerDividendsAmount := moneyIncentivesRuleMatched.MoneyIncentivesAmount * (1 - (moneyIncentivesRuleMatched.SalesmanPercentage+moneyIncentivesRuleMatched.ReferrerPercentage)/100) | 64 | + undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(1).Sub(decimal.NewFromFloat(moneyIncentivesRuleMatched.SalesmanPercentage).Add(decimal.NewFromFloat(moneyIncentivesRuleMatched.ReferrerPercentage))).Div(decimal.NewFromFloat(100))).Float64() |
| 72 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 65 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 73 | DividendsUser: &domain.User{ | 66 | DividendsUser: &domain.User{ |
| 74 | UserId: undertaker.UserId, | 67 | UserId: undertaker.UserId, |
| @@ -91,7 +84,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | @@ -91,7 +84,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | ||
| 91 | } | 84 | } |
| 92 | 85 | ||
| 93 | // 判断业务员在当前阶段是否已经分红 | 86 | // 判断业务员在当前阶段是否已经分红 |
| 94 | - if undertaker.Salesman.UserId != 0 { | 87 | + if undertaker.Salesman != nil { |
| 95 | salesmanEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{ | 88 | salesmanEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{ |
| 96 | "undertakerUid": undertaker.Salesman.UserId, | 89 | "undertakerUid": undertaker.Salesman.UserId, |
| 97 | "companyId": contract.Company.CompanyId, | 90 | "companyId": contract.Company.CompanyId, |
| @@ -103,7 +96,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | @@ -103,7 +96,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | ||
| 103 | if salesmanEstimated { | 96 | if salesmanEstimated { |
| 104 | return nil, fmt.Errorf("业务员 " + undertaker.Salesman.UserName + " 已分红") | 97 | return nil, fmt.Errorf("业务员 " + undertaker.Salesman.UserName + " 已分红") |
| 105 | } else { | 98 | } else { |
| 106 | - undertakerDividendsAmount := moneyIncentivesRuleMatched.MoneyIncentivesAmount * (moneyIncentivesRuleMatched.SalesmanPercentage / 100) | 99 | + undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(moneyIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 107 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 100 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 108 | DividendsUser: &domain.User{ | 101 | DividendsUser: &domain.User{ |
| 109 | UserId: undertaker.Salesman.UserId, | 102 | UserId: undertaker.Salesman.UserId, |
| @@ -127,7 +120,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | @@ -127,7 +120,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | ||
| 127 | } | 120 | } |
| 128 | 121 | ||
| 129 | // 判断关联业务员在当前阶段是否已经分红 | 122 | // 判断关联业务员在当前阶段是否已经分红 |
| 130 | - if undertaker.Referrer.UserId != 0 { | 123 | + if undertaker.Referrer != nil { |
| 131 | referrerEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{ | 124 | referrerEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{ |
| 132 | "undertakerUid": undertaker.Referrer.UserId, | 125 | "undertakerUid": undertaker.Referrer.UserId, |
| 133 | "companyId": contract.Company.CompanyId, | 126 | "companyId": contract.Company.CompanyId, |
| @@ -139,7 +132,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | @@ -139,7 +132,7 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do | ||
| 139 | if referrerEstimated { | 132 | if referrerEstimated { |
| 140 | return nil, fmt.Errorf("推荐人 " + undertaker.Salesman.UserName + " 已分红") | 133 | return nil, fmt.Errorf("推荐人 " + undertaker.Salesman.UserName + " 已分红") |
| 141 | } else { | 134 | } else { |
| 142 | - undertakerDividendsAmount := moneyIncentivesRuleMatched.MoneyIncentivesAmount * (moneyIncentivesRuleMatched.ReferrerPercentage / 100) | 135 | + undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(moneyIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64() |
| 143 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ | 136 | dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ |
| 144 | DividendsUser: &domain.User{ | 137 | DividendsUser: &domain.User{ |
| 145 | UserId: undertaker.Referrer.UserId, | 138 | UserId: undertaker.Referrer.UserId, |
| @@ -317,6 +317,7 @@ func (ptr *CooperationStatisticsService) CompanyPaymentHistoryStatistics(queryOp | @@ -317,6 +317,7 @@ func (ptr *CooperationStatisticsService) CompanyPaymentHistoryStatistics(queryOp | ||
| 317 | Limit int `json:"limit" valid:"Required"` | 317 | Limit int `json:"limit" valid:"Required"` |
| 318 | Offset int `json:"offset"` | 318 | Offset int `json:"offset"` |
| 319 | OrgId int64 `json:"orgId" valid:"Required"` | 319 | OrgId int64 `json:"orgId" valid:"Required"` |
| 320 | + UserId int64 `json:"userId" valid:"Required"` | ||
| 320 | SortByActuallyPaidAmount int `json:"sortByActuallyPaidAmount" valid:"Required"` | 321 | SortByActuallyPaidAmount int `json:"sortByActuallyPaidAmount" valid:"Required"` |
| 321 | BeginTime time.Time `json:"beginTime"` | 322 | BeginTime time.Time `json:"beginTime"` |
| 322 | EndTime time.Time `json:"endTime"` | 323 | EndTime time.Time `json:"endTime"` |
| @@ -326,13 +327,23 @@ func (ptr *CooperationStatisticsService) CompanyPaymentHistoryStatistics(queryOp | @@ -326,13 +327,23 @@ func (ptr *CooperationStatisticsService) CompanyPaymentHistoryStatistics(queryOp | ||
| 326 | } | 327 | } |
| 327 | queryOptions = tool_funs.SimpleStructToMap(&request) | 328 | queryOptions = tool_funs.SimpleStructToMap(&request) |
| 328 | 329 | ||
| 330 | + // 按关联相关人过滤 | ||
| 331 | + var retMap = make([]interface{}, 0) | ||
| 332 | + contractNumbers, err := ptr.getRelevantContracts(map[string]interface{}{"userId": request.UserId}) | ||
| 333 | + if len(contractNumbers) == 0 { | ||
| 334 | + return retMap, nil | ||
| 335 | + } | ||
| 336 | + if err != nil { | ||
| 337 | + return retMap, err | ||
| 338 | + } | ||
| 339 | + queryOptions["cooperationContractNumbers"] = contractNumbers | ||
| 340 | + | ||
| 329 | var responses []usersStatisticsResponse | 341 | var responses []usersStatisticsResponse |
| 330 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) | 342 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) |
| 331 | if err := creditAccountDao.CooperationUsersDividendsStatistics(queryOptions, &responses); err != nil { | 343 | if err := creditAccountDao.CooperationUsersDividendsStatistics(queryOptions, &responses); err != nil { |
| 332 | return nil, err | 344 | return nil, err |
| 333 | } | 345 | } |
| 334 | 346 | ||
| 335 | - var retMap = make([]interface{}, 0) | ||
| 336 | for i := range responses { | 347 | for i := range responses { |
| 337 | retMap = append(retMap, map[string]interface{}{ | 348 | retMap = append(retMap, map[string]interface{}{ |
| 338 | "paymentAmount": responses[i].ActuallyPaidAmount, | 349 | "paymentAmount": responses[i].ActuallyPaidAmount, |
| @@ -353,22 +364,76 @@ func (ptr *CooperationStatisticsService) PaymentHistoryHistogramStatistics(query | @@ -353,22 +364,76 @@ func (ptr *CooperationStatisticsService) PaymentHistoryHistogramStatistics(query | ||
| 353 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) | 364 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) |
| 354 | 365 | ||
| 355 | var request = struct { | 366 | var request = struct { |
| 356 | - OrgId int64 `json:"orgId"` | ||
| 357 | - UserBaseId int64 `json:"userBaseId"` | 367 | + OrgId int64 `json:"orgId"` |
| 368 | + UserId int64 `json:"userId"` | ||
| 369 | + UserBaseId int64 `json:"userBaseId"` | ||
| 370 | + BeginTime time.Time `json:"beginTime"` | ||
| 371 | + EndTime time.Time `json:"endTime"` | ||
| 358 | }{} | 372 | }{} |
| 359 | if err := LoadQueryObject(queryOptions, &request); err != nil { | 373 | if err := LoadQueryObject(queryOptions, &request); err != nil { |
| 360 | return nil, err | 374 | return nil, err |
| 361 | } | 375 | } |
| 362 | queryOptions = tool_funs.SimpleStructToMap(&request) | 376 | queryOptions = tool_funs.SimpleStructToMap(&request) |
| 363 | 377 | ||
| 378 | + // 按关联相关人过滤 | ||
| 379 | + var contractNumbers []string | ||
| 380 | + var err error | ||
| 381 | + if request.UserId > 0 { | ||
| 382 | + var retMap = make([]interface{}, 0) | ||
| 383 | + contractNumbers, err = ptr.getRelevantContracts(map[string]interface{}{"userId": request.UserId}) | ||
| 384 | + if len(contractNumbers) == 0 { | ||
| 385 | + return retMap, nil | ||
| 386 | + } | ||
| 387 | + if err != nil { | ||
| 388 | + return retMap, err | ||
| 389 | + } | ||
| 390 | + queryOptions["cooperationContractNumbers"] = contractNumbers | ||
| 391 | + } | ||
| 392 | + | ||
| 364 | var dividends = &CreditAccountStatisticsResponse{} | 393 | var dividends = &CreditAccountStatisticsResponse{} |
| 394 | + var xAxisData []string | ||
| 395 | + var values []float64 | ||
| 396 | + var queryItems []queryItem | ||
| 397 | + if !request.BeginTime.IsZero() && request.BeginTime.AddDate(0, 3, 0).Before(request.EndTime) { | ||
| 398 | + queryItems, xAxisData = histogramStatisticsByYear() | ||
| 399 | + } else { | ||
| 400 | + queryItems, xAxisData = histogramStatisticsByMonth() | ||
| 401 | + } | ||
| 402 | + for i := range queryItems { | ||
| 403 | + item := queryItems[i] | ||
| 404 | + if len(contractNumbers) == 0 && request.UserId > 0 { //没有相关的合约 查看分红预算单为空 | ||
| 405 | + continue | ||
| 406 | + } | ||
| 407 | + queryOptions["beginTime"] = item.BeginTime | ||
| 408 | + queryOptions["endTime"] = item.EndTime | ||
| 409 | + if err := creditAccountDao.DividendsStatistics(queryOptions, dividends); err != nil { | ||
| 410 | + return nil, err | ||
| 411 | + } | ||
| 412 | + values = append(values, dividends.Paid) | ||
| 413 | + } | ||
| 414 | + return map[string]interface{}{ | ||
| 415 | + "xAxis": map[string]interface{}{ | ||
| 416 | + "data": xAxisData, | ||
| 417 | + }, | ||
| 418 | + "source": map[string]interface{}{ | ||
| 419 | + "value": values, | ||
| 420 | + }, | ||
| 421 | + }, nil | ||
| 422 | +} | ||
| 423 | + | ||
| 424 | +type queryItem struct { | ||
| 425 | + BeginTime time.Time | ||
| 426 | + EndTime time.Time | ||
| 427 | +} | ||
| 428 | + | ||
| 429 | +func histogramStatisticsByMonth() ([]queryItem, []string) { | ||
| 430 | + ret := make([]queryItem, 0) | ||
| 365 | year, month := time.Now().Year(), time.Now().Month() | 431 | year, month := time.Now().Year(), time.Now().Month() |
| 366 | var beginTime = time.Date(year, month, 1, 0, 0, 0, 0, time.Local) | 432 | var beginTime = time.Date(year, month, 1, 0, 0, 0, 0, time.Local) |
| 367 | var endTime time.Time | 433 | var endTime time.Time |
| 368 | var increaseDay = 5 | 434 | var increaseDay = 5 |
| 369 | var monthEnd = time.Date(year, month+1, 1, 0, 0, 0, 0, time.Local).Add(-time.Second) | 435 | var monthEnd = time.Date(year, month+1, 1, 0, 0, 0, 0, time.Local).Add(-time.Second) |
| 370 | var xAxisData []string | 436 | var xAxisData []string |
| 371 | - var values []float64 | ||
| 372 | for { | 437 | for { |
| 373 | if beginTime.AddDate(0, 0, increaseDay).After(monthEnd) { | 438 | if beginTime.AddDate(0, 0, increaseDay).After(monthEnd) { |
| 374 | endTime = monthEnd | 439 | endTime = monthEnd |
| @@ -376,25 +441,30 @@ func (ptr *CooperationStatisticsService) PaymentHistoryHistogramStatistics(query | @@ -376,25 +441,30 @@ func (ptr *CooperationStatisticsService) PaymentHistoryHistogramStatistics(query | ||
| 376 | } else { | 441 | } else { |
| 377 | endTime = beginTime.AddDate(0, 0, increaseDay).Add(-time.Second) | 442 | endTime = beginTime.AddDate(0, 0, increaseDay).Add(-time.Second) |
| 378 | } | 443 | } |
| 379 | - xAxisData = append(xAxisData, endTime.Format("01-02")) | ||
| 380 | - queryOptions["beginTime"] = beginTime | ||
| 381 | - queryOptions["endTime"] = beginTime.AddDate(0, 0, increaseDay) | ||
| 382 | - if err := creditAccountDao.DividendsStatistics(queryOptions, dividends); err != nil { | ||
| 383 | - return nil, err | 444 | + item := queryItem{ |
| 445 | + BeginTime: beginTime, | ||
| 446 | + EndTime: beginTime.AddDate(0, 0, increaseDay).Add(-time.Second), | ||
| 384 | } | 447 | } |
| 385 | - dividends.Accounting = dividends.Total - dividends.Accounted | ||
| 386 | - values = append(values, dividends.Paid) | 448 | + xAxisData = append(xAxisData, item.EndTime.Format("01-02")) |
| 387 | beginTime = endTime | 449 | beginTime = endTime |
| 388 | if endTime == monthEnd { | 450 | if endTime == monthEnd { |
| 389 | break | 451 | break |
| 390 | } | 452 | } |
| 453 | + ret = append(ret, item) | ||
| 391 | } | 454 | } |
| 392 | - return map[string]interface{}{ | ||
| 393 | - "xAxis": map[string]interface{}{ | ||
| 394 | - "data": xAxisData, | ||
| 395 | - }, | ||
| 396 | - "source": map[string]interface{}{ | ||
| 397 | - "value": values, | ||
| 398 | - }, | ||
| 399 | - }, nil | 455 | + return ret, xAxisData |
| 456 | +} | ||
| 457 | + | ||
| 458 | +func histogramStatisticsByYear() ([]queryItem, []string) { | ||
| 459 | + ret := make([]queryItem, 0) | ||
| 460 | + var xAxisData = []string{"3月", "6月", "9月", "12月"} | ||
| 461 | + year, _ := time.Now().Year(), time.Now().Month() | ||
| 462 | + var increase = 3 | ||
| 463 | + for i := 0; i < 4; i++ { | ||
| 464 | + ret = append(ret, queryItem{ | ||
| 465 | + BeginTime: time.Date(year, time.Month(1+i*increase), 1, 0, 0, 0, 0, time.Local), | ||
| 466 | + EndTime: time.Date(year, time.Month(1+(i+1)*increase), 1, 0, 0, 0, 0, time.Local), | ||
| 467 | + }) | ||
| 468 | + } | ||
| 469 | + return ret, xAxisData | ||
| 400 | } | 470 | } |
| @@ -52,21 +52,15 @@ func (ptr *CooperationStatisticsService) cooperationCompanyStatistics(userBaseId | @@ -52,21 +52,15 @@ func (ptr *CooperationStatisticsService) cooperationCompanyStatistics(userBaseId | ||
| 52 | 52 | ||
| 53 | // 2.相关合约统计 | 53 | // 2.相关合约统计 |
| 54 | cooperationContractRelevantRepository, _ := repository.NewCooperationContractRelevantRepository(ptr.transactionContext) | 54 | cooperationContractRelevantRepository, _ := repository.NewCooperationContractRelevantRepository(ptr.transactionContext) |
| 55 | - cooperationContractCount, _, err := cooperationContractRelevantRepository.Find(map[string]interface{}{"userBaseId": userBaseId, | 55 | + cooperationContractCount, _, err := cooperationContractRelevantRepository.Find(map[string]interface{}{"userBaseId": userBaseId, "orgId": orgId, |
| 56 | "limit": 1}) | 56 | "limit": 1}) |
| 57 | if err != nil { | 57 | if err != nil { |
| 58 | return nil, err | 58 | return nil, err |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | // 3.个人分红统计 | 61 | // 3.个人分红统计 |
| 62 | - type response struct { | ||
| 63 | - Total float64 `json:"total"` | ||
| 64 | - Accounting float64 `json:"accounting"` | ||
| 65 | - Accounted float64 `json:"accounted"` | ||
| 66 | - Paid float64 `json:"paid"` | ||
| 67 | - } | ||
| 68 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) | 62 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) |
| 69 | - var allDividends = &response{} | 63 | + var allDividends = &CreditAccountStatisticsResponse{} |
| 70 | if err := creditAccountDao.DividendsStatistics(map[string]interface{}{"userBaseId": userBaseId, "orgId": orgId}, allDividends); err != nil { | 64 | if err := creditAccountDao.DividendsStatistics(map[string]interface{}{"userBaseId": userBaseId, "orgId": orgId}, allDividends); err != nil { |
| 71 | return nil, err | 65 | return nil, err |
| 72 | } | 66 | } |
| @@ -76,7 +70,7 @@ func (ptr *CooperationStatisticsService) cooperationCompanyStatistics(userBaseId | @@ -76,7 +70,7 @@ func (ptr *CooperationStatisticsService) cooperationCompanyStatistics(userBaseId | ||
| 76 | OrgId: orgId, | 70 | OrgId: orgId, |
| 77 | CooperationProjectCount: cooperationProjectCount, | 71 | CooperationProjectCount: cooperationProjectCount, |
| 78 | CooperationContractCount: cooperationContractCount, | 72 | CooperationContractCount: cooperationContractCount, |
| 79 | - DividendsIncome: utils.Round(allDividends.Total, 2), | 73 | + DividendsIncome: utils.Round(allDividends.Accounted, 2), |
| 80 | } | 74 | } |
| 81 | return ret, nil | 75 | return ret, nil |
| 82 | } | 76 | } |
| @@ -105,7 +99,7 @@ func (ptr *CooperationStatisticsService) PersonCooperationContractStatistics(que | @@ -105,7 +99,7 @@ func (ptr *CooperationStatisticsService) PersonCooperationContractStatistics(que | ||
| 105 | } | 99 | } |
| 106 | queryOptions = tool_funs.SimpleStructToMap(&request) | 100 | queryOptions = tool_funs.SimpleStructToMap(&request) |
| 107 | 101 | ||
| 108 | - cooperationContractUndertaker, _ := repository.NewCooperationContractUndertakerRepository(ptr.transactionContext) | 102 | + cooperationContractUndertaker, _ := repository.NewCooperationContractRelevantRepository(ptr.transactionContext) |
| 109 | _, contractUndertakers, err := cooperationContractUndertaker.Find(queryOptions) | 103 | _, contractUndertakers, err := cooperationContractUndertaker.Find(queryOptions) |
| 110 | if err != nil { | 104 | if err != nil { |
| 111 | return nil, nil | 105 | return nil, nil |
| 1 | package domain_service | 1 | package domain_service |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | - "encoding/json" | ||
| 5 | "fmt" | 4 | "fmt" |
| 6 | "github.com/go-pg/pg/v10" | 5 | "github.com/go-pg/pg/v10" |
| 7 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | 6 | pgTransaction "github.com/linmadan/egglib-go/transaction/pg" |
| @@ -48,6 +47,8 @@ const ( | @@ -48,6 +47,8 @@ const ( | ||
| 48 | CreditAccountStatistics = "CreditAccountStatistics" | 47 | CreditAccountStatistics = "CreditAccountStatistics" |
| 49 | // 公司/个人 - 支付历史统计直方图 | 48 | // 公司/个人 - 支付历史统计直方图 |
| 50 | PaymentHistoryHistogramStatistics = "PaymentHistoryHistogramStatistics" | 49 | PaymentHistoryHistogramStatistics = "PaymentHistoryHistogramStatistics" |
| 50 | + // 用户相关的项目合约编号列表查询 | ||
| 51 | + RelevantCooperationContractNumbers = "RelevantCooperationContractNumbers" | ||
| 51 | ) | 52 | ) |
| 52 | 53 | ||
| 53 | // CooperationStatisticsService 共创统计服务 | 54 | // CooperationStatisticsService 共创统计服务 |
| @@ -77,6 +78,7 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | @@ -77,6 +78,7 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | ||
| 77 | //企业 | 78 | //企业 |
| 78 | CompanyId int64 `json:"companyId"` | 79 | CompanyId int64 `json:"companyId"` |
| 79 | OrgId int64 `json:"orgId"` | 80 | OrgId int64 `json:"orgId"` |
| 81 | + UserId int64 `json:"userId"` | ||
| 80 | //个人 | 82 | //个人 |
| 81 | UserBaseId int64 `json:"userBaseId"` | 83 | UserBaseId int64 `json:"userBaseId"` |
| 82 | Offset int `json:"offset"` | 84 | Offset int `json:"offset"` |
| @@ -90,11 +92,11 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | @@ -90,11 +92,11 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | ||
| 90 | // 1.根据个人、企业查询合约列表 | 92 | // 1.根据个人、企业查询合约列表 |
| 91 | var contracts []*domain.CooperationContract | 93 | var contracts []*domain.CooperationContract |
| 92 | var err error | 94 | var err error |
| 93 | - if _, ok := queryOptions["userBaseId"]; ok { | ||
| 94 | - contracts, err = ptr.getUserContracts(queryOptions) | ||
| 95 | - } else if v, ok := queryOptions["orgId"]; ok { | ||
| 96 | - queryOptions["orgId"], _ = (v.(json.Number)).Int64() | ||
| 97 | - contracts, err = ptr.getCompanyContracts(queryOptions) | 95 | + if request.UserBaseId > 0 { |
| 96 | + contracts, err = ptr.getUserContracts(request.UserBaseId, queryOptions) | ||
| 97 | + } else if request.OrgId > 0 { | ||
| 98 | + queryOptions["orgId"] = request.OrgId | ||
| 99 | + contracts, err = ptr.getCompanyContracts(request.UserId, queryOptions) | ||
| 98 | } | 100 | } |
| 99 | if err != nil { | 101 | if err != nil { |
| 100 | return nil, err | 102 | return nil, err |
| @@ -131,32 +133,59 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | @@ -131,32 +133,59 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | ||
| 131 | // getUserContracts 获取用户的合约列表 | 133 | // getUserContracts 获取用户的合约列表 |
| 132 | // | 134 | // |
| 133 | // p1 p1_desc | 135 | // p1 p1_desc |
| 134 | -func (ptr *CooperationStatisticsService) getUserContracts(queryOptions map[string]interface{}) ([]*domain.CooperationContract, error) { | ||
| 135 | - undertakerRepository, _ := repository.NewCooperationContractUndertakerRepository(ptr.transactionContext) | ||
| 136 | - _, undertakers, err := undertakerRepository.Find(queryOptions) | ||
| 137 | - var numbers []string | ||
| 138 | - for i := range undertakers { | ||
| 139 | - numbers = append(numbers, undertakers[i].CooperationContractNumber) | 136 | +func (ptr *CooperationStatisticsService) getUserContracts(userBaseId int64, queryOptions map[string]interface{}) ([]*domain.CooperationContract, error) { |
| 137 | + var contracts = make([]*domain.CooperationContract, 0) | ||
| 138 | + if userBaseId == 0 { | ||
| 139 | + return contracts, nil | ||
| 140 | } | 140 | } |
| 141 | - if len(numbers) == 0 { | ||
| 142 | - return []*domain.CooperationContract{}, nil | 141 | + contractNumbers, err := ptr.getRelevantContracts(map[string]interface{}{"userBaseId": userBaseId}) |
| 142 | + if len(contractNumbers) == 0 { | ||
| 143 | + return contracts, nil | ||
| 143 | } | 144 | } |
| 144 | - queryOptions["inCooperationContractNumber"] = numbers | ||
| 145 | - contractRepository, _ := repository.NewCooperationContractRepository(ptr.transactionContext) | ||
| 146 | - _, contracts, err := contractRepository.Find(queryOptions) | 145 | + if err != nil { |
| 146 | + return contracts, err | ||
| 147 | + } | ||
| 148 | + queryOptions["cooperationContractNumbers"] = contractNumbers | ||
| 149 | + contractRepository, _ := dao.NewCooperationContractDao(ptr.transactionContext) | ||
| 150 | + _, contracts, err = contractRepository.Find(queryOptions) | ||
| 147 | return contracts, err | 151 | return contracts, err |
| 148 | } | 152 | } |
| 149 | 153 | ||
| 150 | // getCompanyContracts 获取组织合约列表 | 154 | // getCompanyContracts 获取组织合约列表 |
| 151 | // | 155 | // |
| 152 | // p1 p1_desc | 156 | // p1 p1_desc |
| 153 | -func (ptr *CooperationStatisticsService) getCompanyContracts(queryOptions map[string]interface{}) ([]*domain.CooperationContract, error) { | ||
| 154 | - contractRepository, _ := repository.NewCooperationContractRepository(ptr.transactionContext) | ||
| 155 | - // TODO: 参数查询条件 | ||
| 156 | - _, contracts, err := contractRepository.Find(queryOptions) | 157 | +func (ptr *CooperationStatisticsService) getCompanyContracts(userId int64, queryOptions map[string]interface{}) ([]*domain.CooperationContract, error) { |
| 158 | + var contracts = make([]*domain.CooperationContract, 0) | ||
| 159 | + if userId == 0 { | ||
| 160 | + return contracts, nil | ||
| 161 | + } | ||
| 162 | + contractNumbers, err := ptr.getRelevantContracts(map[string]interface{}{"userId": userId}) | ||
| 163 | + if len(contractNumbers) == 0 { | ||
| 164 | + return contracts, nil | ||
| 165 | + } | ||
| 166 | + if err != nil { | ||
| 167 | + return contracts, err | ||
| 168 | + } | ||
| 169 | + queryOptions["cooperationContractNumbers"] = contractNumbers | ||
| 170 | + contractRepository, _ := dao.NewCooperationContractDao(ptr.transactionContext) | ||
| 171 | + _, contracts, err = contractRepository.Find(queryOptions) | ||
| 157 | return contracts, err | 172 | return contracts, err |
| 158 | } | 173 | } |
| 159 | 174 | ||
| 175 | +//getRelevantContracts 获取相关人的合约 | ||
| 176 | +func (ptr *CooperationStatisticsService) getRelevantContracts(queryOptions map[string]interface{}) ([]string, error) { | ||
| 177 | + undertakerRepository, _ := repository.NewCooperationContractRelevantRepository(ptr.transactionContext) | ||
| 178 | + _, undertakers, err := undertakerRepository.Find(queryOptions) | ||
| 179 | + var numbers []string | ||
| 180 | + for i := range undertakers { | ||
| 181 | + numbers = append(numbers, undertakers[i].CooperationContractNumber) | ||
| 182 | + } | ||
| 183 | + if len(numbers) == 0 { | ||
| 184 | + return []string{}, nil | ||
| 185 | + } | ||
| 186 | + return numbers, err | ||
| 187 | +} | ||
| 188 | + | ||
| 160 | // getContractsDividendsEstimate 合约分红预算 | 189 | // getContractsDividendsEstimate 合约分红预算 |
| 161 | func (ptr *CooperationStatisticsService) getContractsDividendsEstimate(numbers []string) (map[string]*domain.DividendsEstimate, error) { | 190 | func (ptr *CooperationStatisticsService) getContractsDividendsEstimate(numbers []string) (map[string]*domain.DividendsEstimate, error) { |
| 162 | var estimates []*domain.DividendsEstimate | 191 | var estimates []*domain.DividendsEstimate |
| @@ -320,6 +349,7 @@ func (ptr *CooperationStatisticsService) DividendsStatistics(queryOptions map[st | @@ -320,6 +349,7 @@ func (ptr *CooperationStatisticsService) DividendsStatistics(queryOptions map[st | ||
| 320 | //企业 | 349 | //企业 |
| 321 | CompanyId int64 `json:"companyId"` | 350 | CompanyId int64 `json:"companyId"` |
| 322 | OrgId int64 `json:"orgId"` | 351 | OrgId int64 `json:"orgId"` |
| 352 | + UserId int64 `json:"userId"` | ||
| 323 | //个人 | 353 | //个人 |
| 324 | UserBaseId int64 `json:"userBaseId"` | 354 | UserBaseId int64 `json:"userBaseId"` |
| 325 | }{} | 355 | }{} |
| @@ -335,27 +365,45 @@ func (ptr *CooperationStatisticsService) DividendsStatistics(queryOptions map[st | @@ -335,27 +365,45 @@ func (ptr *CooperationStatisticsService) DividendsStatistics(queryOptions map[st | ||
| 335 | Paid float64 `json:"paid"` | 365 | Paid float64 `json:"paid"` |
| 336 | } | 366 | } |
| 337 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) | 367 | creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext) |
| 338 | - | ||
| 339 | - var allDividends = &response{} | ||
| 340 | - if err := creditAccountDao.DividendsStatistics(queryOptions, allDividends); err != nil { | ||
| 341 | - return nil, err | 368 | + var contractNumbers []string |
| 369 | + var err error | ||
| 370 | + if request.OrgId > 0 && request.UserId > 0 { | ||
| 371 | + contractNumbers, err = ptr.getRelevantContracts(map[string]interface{}{"orgId": request.OrgId, "userId": request.UserId}) | ||
| 372 | + if err != nil { | ||
| 373 | + return struct{}{}, err | ||
| 374 | + } | ||
| 375 | + } else if request.UserBaseId > 0 { | ||
| 376 | + contractNumbers, err = ptr.getRelevantContracts(map[string]interface{}{"orgId": request.OrgId, "userBaseId": request.UserBaseId}) | ||
| 377 | + if err != nil { | ||
| 378 | + return struct{}{}, err | ||
| 379 | + } | ||
| 342 | } | 380 | } |
| 343 | - allDividends.Accounting = allDividends.Total - allDividends.Accounted | ||
| 344 | 381 | ||
| 345 | - var annualDividends = &response{} | ||
| 346 | - queryOptions["beginTime"] = time.Date(time.Now().Year(), 1, 1, 0, 0, 0, 0, time.Local) | ||
| 347 | - queryOptions["endTime"] = time.Date(time.Now().Year(), 1, 1, 0, 0, 0, 0, time.Local).AddDate(1, 0, 0) | ||
| 348 | - if err := creditAccountDao.DividendsStatistics(queryOptions, annualDividends); err != nil { | ||
| 349 | - return nil, err | ||
| 350 | - } | ||
| 351 | - annualDividends.Accounting = annualDividends.Total - annualDividends.Accounted | 382 | + queryOptions["cooperationContractNumbers"] = contractNumbers |
| 352 | 383 | ||
| 353 | - var quarterDividends = &response{} | ||
| 354 | - queryOptions["beginTime"], queryOptions["endTime"] = quarterBeginEnd() | ||
| 355 | - if err := creditAccountDao.DividendsStatistics(queryOptions, quarterDividends); err != nil { | ||
| 356 | - return nil, err | 384 | + var allDividends = &CreditAccountStatisticsResponse{} |
| 385 | + var annualDividends = &CreditAccountStatisticsResponse{} | ||
| 386 | + var quarterDividends = &CreditAccountStatisticsResponse{} | ||
| 387 | + | ||
| 388 | + if len(contractNumbers) > 0 { | ||
| 389 | + if err := creditAccountDao.DividendsStatistics(queryOptions, allDividends); err != nil { | ||
| 390 | + return nil, err | ||
| 391 | + } | ||
| 392 | + allDividends.Accounting = allDividends.Total - allDividends.Accounted | ||
| 393 | + | ||
| 394 | + queryOptions["beginTime"] = time.Date(time.Now().Year(), 1, 1, 0, 0, 0, 0, time.Local) | ||
| 395 | + queryOptions["endTime"] = time.Date(time.Now().Year(), 1, 1, 0, 0, 0, 0, time.Local).AddDate(1, 0, 0) | ||
| 396 | + if err := creditAccountDao.DividendsStatistics(queryOptions, annualDividends); err != nil { | ||
| 397 | + return nil, err | ||
| 398 | + } | ||
| 399 | + annualDividends.Accounting = annualDividends.Total - annualDividends.Accounted | ||
| 400 | + | ||
| 401 | + queryOptions["beginTime"], queryOptions["endTime"] = quarterBeginEnd() | ||
| 402 | + if err := creditAccountDao.DividendsStatistics(queryOptions, quarterDividends); err != nil { | ||
| 403 | + return nil, err | ||
| 404 | + } | ||
| 405 | + quarterDividends.Accounting = quarterDividends.Total - quarterDividends.Accounted | ||
| 357 | } | 406 | } |
| 358 | - quarterDividends.Accounting = quarterDividends.Total - quarterDividends.Accounted | ||
| 359 | 407 | ||
| 360 | ret := map[string]interface{}{ | 408 | ret := map[string]interface{}{ |
| 361 | "allDividends": allDividends, | 409 | "allDividends": allDividends, |
| @@ -393,8 +441,10 @@ func quarterBeginEnd() (time.Time, time.Time) { | @@ -393,8 +441,10 @@ func quarterBeginEnd() (time.Time, time.Time) { | ||
| 393 | func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions map[string]interface{}) (interface{}, error) { | 441 | func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions map[string]interface{}) (interface{}, error) { |
| 394 | // 参数验证 | 442 | // 参数验证 |
| 395 | var request = struct { | 443 | var request = struct { |
| 396 | - CompanyId int64 `json:"companyId"` | ||
| 397 | - OrgId int64 `json:"orgId"` | 444 | + CompanyId int64 `json:"companyId"` |
| 445 | + OrgId int64 `json:"orgId"` | ||
| 446 | + UserId int64 `json:"userId"` | ||
| 447 | + | ||
| 398 | UserBaseId int64 `json:"userBaseId"` | 448 | UserBaseId int64 `json:"userBaseId"` |
| 399 | DividendsAccountStatus int32 `json:"dividendsAccountStatus"` // 分红结算状态 | 449 | DividendsAccountStatus int32 `json:"dividendsAccountStatus"` // 分红结算状态 |
| 400 | Offset int64 `json:"offset"` | 450 | Offset int64 `json:"offset"` |
| @@ -405,10 +455,18 @@ func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions m | @@ -405,10 +455,18 @@ func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions m | ||
| 405 | } | 455 | } |
| 406 | queryOptions = tool_funs.SimpleStructToMap(&request) | 456 | queryOptions = tool_funs.SimpleStructToMap(&request) |
| 407 | 457 | ||
| 408 | - dividendsEstimateRepository, _ := repository.NewDividendsEstimateRepository(ptr.transactionContext) | ||
| 409 | - _, estimates, err := dividendsEstimateRepository.Find(queryOptions) | ||
| 410 | - if err != nil { | ||
| 411 | - return nil, err | 458 | + var contractNumbers []string |
| 459 | + var err error | ||
| 460 | + if request.OrgId > 0 && request.UserId > 0 { | ||
| 461 | + contractNumbers, err = ptr.getRelevantContracts(map[string]interface{}{"orgId": request.OrgId, "userId": request.UserId}) | ||
| 462 | + if err != nil { | ||
| 463 | + return struct{}{}, err | ||
| 464 | + } | ||
| 465 | + } else if request.UserBaseId > 0 { | ||
| 466 | + contractNumbers, err = ptr.getRelevantContracts(map[string]interface{}{"orgId": request.OrgId, "userBaseId": request.UserBaseId}) | ||
| 467 | + if err != nil { | ||
| 468 | + return struct{}{}, err | ||
| 469 | + } | ||
| 412 | } | 470 | } |
| 413 | type response struct { | 471 | type response struct { |
| 414 | // 承接人分红预算记录ID | 472 | // 承接人分红预算记录ID |
| @@ -429,6 +487,18 @@ func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions m | @@ -429,6 +487,18 @@ func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions m | ||
| 429 | CustomerName string `json:"customerName"` | 487 | CustomerName string `json:"customerName"` |
| 430 | } | 488 | } |
| 431 | var results = make([]response, 0) | 489 | var results = make([]response, 0) |
| 490 | + if len(contractNumbers) == 0 { | ||
| 491 | + return results, nil | ||
| 492 | + } | ||
| 493 | + | ||
| 494 | + queryOptions["cooperationContractNumbers"] = contractNumbers | ||
| 495 | + | ||
| 496 | + dividendsEstimateRepository, _ := repository.NewDividendsEstimateRepository(ptr.transactionContext) | ||
| 497 | + _, estimates, err := dividendsEstimateRepository.Find(queryOptions) | ||
| 498 | + if err != nil { | ||
| 499 | + return nil, err | ||
| 500 | + } | ||
| 501 | + | ||
| 432 | dividendsOrderRepository, _ := repository.NewDividendsOrderRepository(ptr.transactionContext) | 502 | dividendsOrderRepository, _ := repository.NewDividendsOrderRepository(ptr.transactionContext) |
| 433 | dividendsReturnedOrderRepository, _ := repository.NewDividendsReturnedOrderRepository(ptr.transactionContext) | 503 | dividendsReturnedOrderRepository, _ := repository.NewDividendsReturnedOrderRepository(ptr.transactionContext) |
| 434 | for i := range estimates { | 504 | for i := range estimates { |
| @@ -441,8 +511,11 @@ func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions m | @@ -441,8 +511,11 @@ func (ptr *CooperationStatisticsService) SearchDividendsEstimates(queryOptions m | ||
| 441 | DividendsType: item.DividendsType, | 511 | DividendsType: item.DividendsType, |
| 442 | DividendsUser: item.DividendsUser, | 512 | DividendsUser: item.DividendsUser, |
| 443 | } | 513 | } |
| 514 | + // TODO:优化查询 统一查询到map里面 | ||
| 444 | if item.DividendsType == 1 { | 515 | if item.DividendsType == 1 { |
| 445 | - order, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderNumber": item.OrderOrReturnedOrderNum}) | 516 | + order, err := dividendsOrderRepository.FindOne(map[string]interface{}{ |
| 517 | + "dividendsOrderNumber": item.OrderOrReturnedOrderNum, | ||
| 518 | + }) | ||
| 446 | if err != nil { | 519 | if err != nil { |
| 447 | return nil, err | 520 | return nil, err |
| 448 | } | 521 | } |
| @@ -469,6 +542,8 @@ func (ptr *CooperationStatisticsService) CreditAccountStatistics(queryOptions ma | @@ -469,6 +542,8 @@ func (ptr *CooperationStatisticsService) CreditAccountStatistics(queryOptions ma | ||
| 469 | UserBaseId int64 `json:"userBaseId"` | 542 | UserBaseId int64 `json:"userBaseId"` |
| 470 | BeginTime time.Time `json:"beginTime"` | 543 | BeginTime time.Time `json:"beginTime"` |
| 471 | EndTime time.Time `json:"endTime"` | 544 | EndTime time.Time `json:"endTime"` |
| 545 | + // 合约编号列表 | ||
| 546 | + CooperationContractNumbers []string `json:"cooperationContractNumbers"` | ||
| 472 | }{} | 547 | }{} |
| 473 | if err := LoadQueryObject(queryOptions, &request); err != nil { | 548 | if err := LoadQueryObject(queryOptions, &request); err != nil { |
| 474 | return nil, err | 549 | return nil, err |
| @@ -490,4 +565,26 @@ type CreditAccountStatisticsResponse struct { | @@ -490,4 +565,26 @@ type CreditAccountStatisticsResponse struct { | ||
| 490 | Accounting float64 `json:"accounting"` | 565 | Accounting float64 `json:"accounting"` |
| 491 | Accounted float64 `json:"accounted"` | 566 | Accounted float64 `json:"accounted"` |
| 492 | Paid float64 `json:"paid"` | 567 | Paid float64 `json:"paid"` |
| 568 | + Unpaid float64 `json:"unpaid"` | ||
| 569 | +} | ||
| 570 | + | ||
| 571 | +//getRelevantContracts 获取相关人的合约 | ||
| 572 | +func (ptr *CooperationStatisticsService) RelevantCooperationContractNumbers(queryOptions map[string]interface{}) (interface{}, error) { | ||
| 573 | + var request = struct { | ||
| 574 | + //企业 | ||
| 575 | + CompanyId int64 `json:"companyId" valid:"Required"` | ||
| 576 | + OrgId int64 `json:"orgId" valid:"Required"` | ||
| 577 | + UserId int64 `json:"userId" valid:"Required"` | ||
| 578 | + //个人 | ||
| 579 | + //UserBaseId int64 `json:"userBaseId"` | ||
| 580 | + //Offset int `json:"offset"` | ||
| 581 | + //Limit int `json:"limit"` | ||
| 582 | + }{} | ||
| 583 | + if err := LoadQueryObject(queryOptions, &request); err != nil { | ||
| 584 | + return nil, err | ||
| 585 | + } | ||
| 586 | + queryOptions = tool_funs.SimpleStructToMap(&request) | ||
| 587 | + | ||
| 588 | + contractNumbers, err := ptr.getRelevantContracts(queryOptions) | ||
| 589 | + return contractNumbers, err | ||
| 493 | } | 590 | } |
| @@ -172,6 +172,33 @@ func (service *UserService) OperatorFrom(companyId int64, orgId int64, userId in | @@ -172,6 +172,33 @@ func (service *UserService) OperatorFrom(companyId int64, orgId int64, userId in | ||
| 172 | } | 172 | } |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | +// VisitorFrom 获取游客 | ||
| 176 | +func (service *UserService) VisitorFrom(companyId int64, orgId int64, userBaseId int64) (*domain.User, error) { | ||
| 177 | + var returnData *domain.User | ||
| 178 | + if userAdaptor, err := adaptor.NewUserAdaptor(); err != nil { | ||
| 179 | + return nil, err | ||
| 180 | + } else { | ||
| 181 | + if visitor, err := userAdaptor.ToParticipator(companyId, orgId, userBaseId, "Visitor"); err != nil { | ||
| 182 | + return nil, err | ||
| 183 | + } else { | ||
| 184 | + if visitor != nil { | ||
| 185 | + log.Logger.Debug("游客", map[string]interface{}{ | ||
| 186 | + "visitor interface": visitor, | ||
| 187 | + }) | ||
| 188 | + visitorJson, err1 := json.Marshal(visitor) | ||
| 189 | + if err1 != nil { | ||
| 190 | + return nil, err | ||
| 191 | + } | ||
| 192 | + err2 := json.Unmarshal(visitorJson, &returnData) | ||
| 193 | + if err2 != nil { | ||
| 194 | + return nil, err2 | ||
| 195 | + } | ||
| 196 | + } | ||
| 197 | + return returnData, nil | ||
| 198 | + } | ||
| 199 | + } | ||
| 200 | +} | ||
| 201 | + | ||
| 175 | func NewUserService() (*UserService, error) { | 202 | func NewUserService() (*UserService, error) { |
| 176 | return &UserService{}, nil | 203 | return &UserService{}, nil |
| 177 | } | 204 | } |
| @@ -17,6 +17,8 @@ type ContractUndertakerFeedback struct { | @@ -17,6 +17,8 @@ type ContractUndertakerFeedback struct { | ||
| 17 | CooperationContractNumber string `comment:"共创合约编号"` | 17 | CooperationContractNumber string `comment:"共创合约编号"` |
| 18 | // 项目合约名称 | 18 | // 项目合约名称 |
| 19 | CooperationContractName string `comment:"项目合约名称"` | 19 | CooperationContractName string `comment:"项目合约名称"` |
| 20 | + // 模式名称 | ||
| 21 | + CooperationModeName string `comment:"模式名称"` | ||
| 20 | // 共创合约承接人 | 22 | // 共创合约承接人 |
| 21 | ContractUndertaker *domain.Undertaker `comment:"共创合约承接人"` | 23 | ContractUndertaker *domain.Undertaker `comment:"共创合约承接人"` |
| 22 | // 数据所属组织机构 | 24 | // 数据所属组织机构 |
| @@ -29,8 +29,8 @@ type CooperationApplication struct { | @@ -29,8 +29,8 @@ type CooperationApplication struct { | ||
| 29 | CooperationProjectNumber string `comment:"共创项目编号"` | 29 | CooperationProjectNumber string `comment:"共创项目编号"` |
| 30 | // 数据所属组织机构 | 30 | // 数据所属组织机构 |
| 31 | Org *domain.Org `comment:"数据所属组织机构"` | 31 | Org *domain.Org `comment:"数据所属组织机构"` |
| 32 | - // 是否被取消标志位 | ||
| 33 | - IsCanceled bool `comment:"是否被取消标志位"` | 32 | + // 是否被取消标志位 1正常,2取消 |
| 33 | + IsCanceled int32 `comment:"是否被取消标志位" pg:",default:1"` | ||
| 34 | // 公司 | 34 | // 公司 |
| 35 | Company *domain.Company `comment:"公司"` | 35 | Company *domain.Company `comment:"公司"` |
| 36 | // 创建时间 | 36 | // 创建时间 |
| @@ -25,7 +25,7 @@ type CooperationContractByUndertaker struct { | @@ -25,7 +25,7 @@ type CooperationContractByUndertaker struct { | ||
| 25 | Department *domain.Department `comment:"共创合约发起部门"` | 25 | Department *domain.Department `comment:"共创合约发起部门"` |
| 26 | // 组织机构 | 26 | // 组织机构 |
| 27 | Org *domain.Org `comment:"组织机构"` | 27 | Org *domain.Org `comment:"组织机构"` |
| 28 | - // 共创合约状态 | 28 | + // 共创合约状态 1正常,2关闭 |
| 29 | ContractStatus int32 `comment:"共创合约状态"` | 29 | ContractStatus int32 `comment:"共创合约状态"` |
| 30 | // 共创模式名称 | 30 | // 共创模式名称 |
| 31 | CooperationModeName string `comment:"共创合约名称"` | 31 | CooperationModeName string `comment:"共创合约名称"` |
| @@ -10,7 +10,7 @@ type DividendsOrder struct { | @@ -10,7 +10,7 @@ type DividendsOrder struct { | ||
| 10 | // 分红订单ID | 10 | // 分红订单ID |
| 11 | DividendsOrderId int64 `comment:"分红订单ID" pg:",pk"` | 11 | DividendsOrderId int64 `comment:"分红订单ID" pg:",pk"` |
| 12 | // 分红订单号 | 12 | // 分红订单号 |
| 13 | - DividendsOrderNumber string `comment:"分红订单号"` | 13 | + DividendsOrderNumber string `comment:"分红订单号" pg:",unique"` |
| 14 | // 分红订单原单号 | 14 | // 分红订单原单号 |
| 15 | DividendsOriginalOrderNum string `comment:"分红订单原单号"` | 15 | DividendsOriginalOrderNum string `comment:"分红订单原单号"` |
| 16 | // 分红订单金额 | 16 | // 分红订单金额 |
| @@ -13,7 +13,7 @@ type OrderGood struct { | @@ -13,7 +13,7 @@ type OrderGood struct { | ||
| 13 | // 订单产品单价 | 13 | // 订单产品单价 |
| 14 | OrderGoodPrice float64 `comment:"订单产品单价"` | 14 | OrderGoodPrice float64 `comment:"订单产品单价"` |
| 15 | // 订单产品数量 | 15 | // 订单产品数量 |
| 16 | - OrderGoodQuantity int64 `comment:"订单产品数量"` | 16 | + OrderGoodQuantity float64 `comment:"订单产品数量"` |
| 17 | // 关联分红订单号 | 17 | // 关联分红订单号 |
| 18 | DividendsOrderNumber string `comment:"关联分红订单号"` | 18 | DividendsOrderNumber string `comment:"关联分红订单号"` |
| 19 | // 关联的分红退货单号 | 19 | // 关联的分红退货单号 |
-
请 注册 或 登录 后发表评论