合并分支 'test' 到 'master'
Test 查看合并请求 !62
正在显示
39 个修改的文件
包含
482 行增加
和
140 行删除
| @@ -11,5 +11,25 @@ ENV GO111MODULE on | @@ -11,5 +11,25 @@ ENV GO111MODULE on | ||
| 11 | ENV GOPROXY https://goproxy.cn,direct | 11 | ENV GOPROXY https://goproxy.cn,direct |
| 12 | RUN ["go","mod","tidy"] | 12 | RUN ["go","mod","tidy"] |
| 13 | RUN ["go","build"] | 13 | RUN ["go","build"] |
| 14 | -EXPOSE 8082 | ||
| 15 | -ENTRYPOINT ["./partner"] | ||
| 14 | +EXPOSE 8082 443 | ||
| 15 | +ENTRYPOINT ["./partner"] | ||
| 16 | + | ||
| 17 | +############################# | ||
| 18 | +## STEP 1 build executable binary | ||
| 19 | +############################# | ||
| 20 | +#FROM golang:alpine AS builder | ||
| 21 | +# | ||
| 22 | +#RUN mkdir /app | ||
| 23 | +#WORKDIR /app | ||
| 24 | +#COPY . /app | ||
| 25 | +#RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"] | ||
| 26 | +##RUN GO111MODULE="on" GOPROXY="https://goproxy.cn" GOFLAGS="-mod=vendor" CGO_ENABLED=0 GOOS=linux go build -o partner | ||
| 27 | +#RUN GO111MODULE="on" GOPROXY="https://goproxy.cn" CGO_ENABLED=0 GOOS=linux go build -o partner | ||
| 28 | +# | ||
| 29 | +############################# | ||
| 30 | +## STEP 2 build a small image | ||
| 31 | +############################ | ||
| 32 | +#FROM scratch as final | ||
| 33 | +#COPY --from=builder /app/partner /app/partner | ||
| 34 | +#COPY --from=builder /app/conf/ /app/conf | ||
| 35 | +#ENTRYPOINT ["./app/partner"] |
| @@ -2,6 +2,12 @@ appname = partner | @@ -2,6 +2,12 @@ appname = partner | ||
| 2 | runmode = "${RUN_MODE||dev}" | 2 | runmode = "${RUN_MODE||dev}" |
| 3 | httpport = "${HTTP_PORT||8082}" | 3 | httpport = "${HTTP_PORT||8082}" |
| 4 | 4 | ||
| 5 | +#开启https | ||
| 6 | +EnableHTTPS = true | ||
| 7 | +HTTPSPort = "443" | ||
| 8 | +HTTPSCertFile = "conf/fjmaimaimai.com_pem.crt" | ||
| 9 | +HTTPSKeyFile = "conf/fjmaimaimai.com_rsa.key" | ||
| 10 | + | ||
| 5 | #开启监控 | 11 | #开启监控 |
| 6 | EnableAdmin = false | 12 | EnableAdmin = false |
| 7 | #开启JSON请求 | 13 | #开启JSON请求 |
conf/fjmaimaimai.com_pem.crt
0 → 100644
| 1 | +-----BEGIN CERTIFICATE----- | ||
| 2 | +MIIGWjCCBUKgAwIBAgIQBKNf6ftifrIH+BeJ7V4uqjANBgkqhkiG9w0BAQsFADBf | ||
| 3 | +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 | ||
| 4 | +d3cuZGlnaWNlcnQuY29tMR4wHAYDVQQDExVHZW9UcnVzdCBDTiBSU0EgQ0EgRzEw | ||
| 5 | +HhcNMjEwMTA2MDAwMDAwWhcNMjIwMjA2MjM1OTU5WjCBgzELMAkGA1UEBhMCQ04x | ||
| 6 | +EjAQBgNVBAgMCeemj+W7uuecgTESMBAGA1UEBwwJ56aP5bee5biCMTAwLgYDVQQK | ||
| 7 | +DCfnpo/lu7rkubDkubDkubDkv6Hmga/np5HmioDmnInpmZDlhazlj7gxGjAYBgNV | ||
| 8 | +BAMMESouZmptYWltYWltYWkuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB | ||
| 9 | +CgKCAQEAv1KDwfoVuXyMSNUvLapWLpyWdQd8Dy4l5Wmdiydof4+ijqCfgPgMOZGS | ||
| 10 | +7ucvis1ZUZLYDKbZq8xODVEWlXf/n6sMXkq0B+eltlYqyPOZyaBUkg2qqz/iKljb | ||
| 11 | +1pGE5q7gfQ5nQoEW8J/DZUlKs+7jg9O0y2S0jVj3s7QlFy6Alw9BE/7ChOxqfegN | ||
| 12 | +Ua0UL8W6rFqK32eyvZUeecvtKoZwJ3YD2ayXJIN70OivjkcWLskmf6+CjalitqQs | ||
| 13 | +JZ7xD6/WtrpunTCpOVNqhR81sCOT+xxDwNppDqiMNo3lFL6TeQSWT19RBllkiWdW | ||
| 14 | +XXfWS7CsIrqp8i/7fjt66VmVqZnPDwIDAQABo4IC6zCCAucwHwYDVR0jBBgwFoAU | ||
| 15 | +kZ9eMRWuEJ+tYMH3wcyqSDQvDCYwHQYDVR0OBBYEFEhZyphSt/IUiLKJLr78T+7j | ||
| 16 | +l7tmMC0GA1UdEQQmMCSCESouZmptYWltYWltYWkuY29tgg9mam1haW1haW1haS5j | ||
| 17 | +b20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD | ||
| 18 | +AjB1BgNVHR8EbjBsMDSgMqAwhi5odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vR2Vv | ||
| 19 | +VHJ1c3RDTlJTQUNBRzEuY3JsMDSgMqAwhi5odHRwOi8vY3JsNC5kaWdpY2VydC5j | ||
| 20 | +b20vR2VvVHJ1c3RDTlJTQUNBRzEuY3JsMEsGA1UdIAREMEIwNgYJYIZIAYb9bAEB | ||
| 21 | +MCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZn | ||
| 22 | +gQwBAgIwbwYIKwYBBQUHAQEEYzBhMCEGCCsGAQUFBzABhhVodHRwOi8vb2NzcC5k | ||
| 23 | +Y29jc3AuY24wPAYIKwYBBQUHMAKGMGh0dHA6Ly9jcmwuZGlnaWNlcnQtY24uY29t | ||
| 24 | +L0dlb1RydXN0Q05SU0FDQUcxLmNydDAMBgNVHRMBAf8EAjAAMIIBAgYKKwYBBAHW | ||
| 25 | +eQIEAgSB8wSB8ADuAHUAKXm+8J45OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4QA | ||
| 26 | +AAF21tCFyQAABAMARjBEAiAPHS8Wp3c0J7d5By9NQM3/tyf7/B0H7JZLJ+IlcoCG | ||
| 27 | +IwIgR1+Mj5Q6nhWdqV5s9WLgSUvhpJJxvFrJOzV6zkfXZEwAdQAiRUUHWVUkVpY/ | ||
| 28 | +oS/x922G4CMmY63AS39dxoNcbuIPAgAAAXbW0IYsAAAEAwBGMEQCIBbGUD0dLyIT | ||
| 29 | +O+KzBtFPQjiRUbcjGZsbY0gWmVzZfBPrAiAa2X20smzJK42hcMenaVrUgxC/y/j0 | ||
| 30 | +bYYfKRrfwEsoWDANBgkqhkiG9w0BAQsFAAOCAQEAU4aHqNW/qgzRUwBv3C9E70r/ | ||
| 31 | +/LMy3asBePsBARZlzd3tXrr446lsX3HKmAH4AtLACjwPv3ejsEJueeQxrwMxalW+ | ||
| 32 | +2ZerAJhzYqD0OovwcB2b6cDB5zWAuyllFo6ILI3KSQjzFmi4Vn993pN2b2OEUkwC | ||
| 33 | +REYvMVf2BzHjVFuCiXtUWgOucsCb4ES+yWjCrw93VafyhhGCbXVXd55GNbZFE+kw | ||
| 34 | +JArAwYPKwabuFYFfeSVWcRvaV+Kbo88ytPo5ZpShSOBFCPQ1JQ/BxWEmzHXQIzcz | ||
| 35 | +uqELYfxmxI3q6plbgHtL1rY2B8YTWcxXF98fIfg5OKYssOV4LGcoOWPf0PUPrg== | ||
| 36 | +-----END CERTIFICATE----- |
conf/fjmaimaimai.com_rsa.key
0 → 100644
| 1 | +-----BEGIN RSA PRIVATE KEY----- | ||
| 2 | +MIIEpQIBAAKCAQEAv1KDwfoVuXyMSNUvLapWLpyWdQd8Dy4l5Wmdiydof4+ijqCf | ||
| 3 | +gPgMOZGS7ucvis1ZUZLYDKbZq8xODVEWlXf/n6sMXkq0B+eltlYqyPOZyaBUkg2q | ||
| 4 | +qz/iKljb1pGE5q7gfQ5nQoEW8J/DZUlKs+7jg9O0y2S0jVj3s7QlFy6Alw9BE/7C | ||
| 5 | +hOxqfegNUa0UL8W6rFqK32eyvZUeecvtKoZwJ3YD2ayXJIN70OivjkcWLskmf6+C | ||
| 6 | +jalitqQsJZ7xD6/WtrpunTCpOVNqhR81sCOT+xxDwNppDqiMNo3lFL6TeQSWT19R | ||
| 7 | +BllkiWdWXXfWS7CsIrqp8i/7fjt66VmVqZnPDwIDAQABAoIBAHN3mF980Jm2ym+2 | ||
| 8 | +ghe8YvEUvlV5I+2Be4uel1+BdDbweDo+RKWwjqg77ILU8kOCNbLevhe8p0hhMIYm | ||
| 9 | +90tUNemmcPuDeG4A52lJTd8j7h/a7M+NAgECuDu4j01LW/thdcjj5XwkrrSgp2u8 | ||
| 10 | +tSItPhC0t7u9Vp6sICrLwUrhXOhNV+qdm94VhabJFGkdR9iUYw7W7w54Z1p+Nfw8 | ||
| 11 | +PJdDJfwu0lr8DFB2Zw+Ota8Xg+PX71x4mWS1g+h/6xz2ivptFcKPcwd60EjB+ROi | ||
| 12 | +IQC8pnUmbF0H0epoVisB3SWEMzuShmAZrckBW+0ILDUUmNzcZxcWrmzIpomCdkOv | ||
| 13 | +Trtrd/ECgYEA6v37SfsSKohPncHIYfV3FE7Xt7WH09TFymAY8FXIY+K6xvX9wtWB | ||
| 14 | +h+3quFWuh0VTp15m6xAF1UN6HOG0uRKwUGFqwYBy4I+88KCUO3BJzbWn2TOjt4xE | ||
| 15 | +8KVwGmZafqxPjwLagCN3RBLNYF4S+jhygBIlSzHkuVkwZPGbVet7NWkCgYEA0G0b | ||
| 16 | +uDPJl37gEfvhMebdTWUq+FuAVx7h7UjZQM6BNoE3cDdZHUY7pMTqqD2UDbp6O6dC | ||
| 17 | +0b8Hhs8kx90DewdixSzli67jNVeTRFY3DZ85Ac/BmGyuusNm6Uwbsz4RYsyUSrRD | ||
| 18 | +bukC/L1vFjB5k/UgGh0kKnBT74mO/kqASWUIebcCgYEAiShtP6UX2VNuhPnSZ7rK | ||
| 19 | +IkRSjJucB/ws5g5o//5R1FtGAVMbJllQHXK0iZsZH0NLrGjhUVoszWlxIOJshYlu | ||
| 20 | +97ukgATlCEVdVmWjn33O1g6tRY1qhXuN0Zf+cqpDL6SLW0GjHx+UQVtoHFNMaFgC | ||
| 21 | +HNZ6hgU9JyHzqTeMHv4vD+ECgYEAhk2oTPvh7OLuk+gQZk1zUMnd9IdRndHilzoX | ||
| 22 | +9DCdBnghNwgTPk/hYv0YkCyN2ILO/N18qxdDTFTySG9cLMzHknKpv2aENf0mgiRj | ||
| 23 | ++T0eSNKM1yFBPktnZvGJ7+gQ3+8fpzudMDyplh6jFFNMJFERzIH2qfoTvAiRwb5U | ||
| 24 | +B/c4jOUCgYEAiQOXabnrnOvkfhl/RhH/WVeLs6O3c5yei0THysGc+9CqE8txnWPN | ||
| 25 | +A4XI8Tu8G2ScBN+v9oPFWlLAZxbxh1m6RM6VwP4q+Y8fmdQ+d6gH/IKTdBjH7bOt | ||
| 26 | +4SHS+t8Z6PSu8K1BsF3pGRS7OWPlivSJzRyP2YIgE/xtwsEqiODdRKM= | ||
| 27 | +-----END RSA PRIVATE KEY----- |
| @@ -10,6 +10,9 @@ spec: | @@ -10,6 +10,9 @@ spec: | ||
| 10 | - name: "http" | 10 | - name: "http" |
| 11 | port: 80 | 11 | port: 80 |
| 12 | targetPort: 8082 | 12 | targetPort: 8082 |
| 13 | + - name: "https" | ||
| 14 | + port: 443 | ||
| 15 | + targetPort: 443 | ||
| 13 | selector: | 16 | selector: |
| 14 | k8s-app: mmmpartner | 17 | k8s-app: mmmpartner |
| 15 | --- | 18 | --- |
| @@ -48,9 +51,10 @@ spec: | @@ -48,9 +51,10 @@ spec: | ||
| 48 | imagePullPolicy: Always | 51 | imagePullPolicy: Always |
| 49 | ports: | 52 | ports: |
| 50 | - containerPort: 8082 | 53 | - containerPort: 8082 |
| 51 | - volumeMounts: | ||
| 52 | - - mountPath: /opt/logs | ||
| 53 | - name: accesslogs | 54 | + - containerPort: 443 |
| 55 | +# volumeMounts: | ||
| 56 | +# - mountPath: /opt/logs | ||
| 57 | +# name: accesslogs | ||
| 54 | env: | 58 | env: |
| 55 | - name: HTTP_PORT | 59 | - name: HTTP_PORT |
| 56 | value: "8082" | 60 | value: "8082" |
| @@ -97,6 +101,6 @@ spec: | @@ -97,6 +101,6 @@ spec: | ||
| 97 | key: redis.port | 101 | key: redis.port |
| 98 | - name: REDIS_AUTH | 102 | - name: REDIS_AUTH |
| 99 | value: "" | 103 | value: "" |
| 100 | - volumes: | ||
| 101 | - - name: accesslogs | ||
| 102 | - emptyDir: {} | ||
| 104 | +# volumes: | ||
| 105 | +# - name: accesslogs | ||
| 106 | +# emptyDir: {} |
| @@ -10,6 +10,9 @@ spec: | @@ -10,6 +10,9 @@ spec: | ||
| 10 | - name: "http" | 10 | - name: "http" |
| 11 | port: 80 | 11 | port: 80 |
| 12 | targetPort: 8082 | 12 | targetPort: 8082 |
| 13 | + - name: "https" | ||
| 14 | + port: 443 | ||
| 15 | + targetPort: 443 | ||
| 13 | selector: | 16 | selector: |
| 14 | k8s-app: mmmpartner | 17 | k8s-app: mmmpartner |
| 15 | --- | 18 | --- |
| @@ -48,6 +51,7 @@ spec: | @@ -48,6 +51,7 @@ spec: | ||
| 48 | imagePullPolicy: Always | 51 | imagePullPolicy: Always |
| 49 | ports: | 52 | ports: |
| 50 | - containerPort: 8082 | 53 | - containerPort: 8082 |
| 54 | + - containerPort: 443 | ||
| 51 | volumeMounts: | 55 | volumeMounts: |
| 52 | - mountPath: /opt/logs | 56 | - mountPath: /opt/logs |
| 53 | name: accesslogs | 57 | name: accesslogs |
| @@ -10,6 +10,9 @@ spec: | @@ -10,6 +10,9 @@ spec: | ||
| 10 | - name: "http" | 10 | - name: "http" |
| 11 | port: 80 | 11 | port: 80 |
| 12 | targetPort: 8082 | 12 | targetPort: 8082 |
| 13 | + - name: "https" | ||
| 14 | + port: 443 | ||
| 15 | + targetPort: 443 | ||
| 13 | selector: | 16 | selector: |
| 14 | k8s-app: mmmpartner | 17 | k8s-app: mmmpartner |
| 15 | --- | 18 | --- |
| @@ -48,9 +51,10 @@ spec: | @@ -48,9 +51,10 @@ spec: | ||
| 48 | imagePullPolicy: Always | 51 | imagePullPolicy: Always |
| 49 | ports: | 52 | ports: |
| 50 | - containerPort: 8082 | 53 | - containerPort: 8082 |
| 51 | - volumeMounts: | ||
| 52 | - - mountPath: /opt/logs | ||
| 53 | - name: accesslogs | 54 | + - containerPort: 443 |
| 55 | +# volumeMounts: | ||
| 56 | +# - mountPath: /opt/logs | ||
| 57 | +# name: accesslogs | ||
| 54 | env: | 58 | env: |
| 55 | - name: HTTP_PORT | 59 | - name: HTTP_PORT |
| 56 | value: "8082" | 60 | value: "8082" |
| @@ -97,6 +101,6 @@ spec: | @@ -97,6 +101,6 @@ spec: | ||
| 97 | key: redis.port | 101 | key: redis.port |
| 98 | - name: REDIS_AUTH | 102 | - name: REDIS_AUTH |
| 99 | value: "" | 103 | value: "" |
| 100 | - volumes: | ||
| 101 | - - name: accesslogs | ||
| 102 | - emptyDir: {} | ||
| 104 | +# volumes: | ||
| 105 | +# - name: accesslogs | ||
| 106 | +# emptyDir: {} |
document/partner/project.yaml
0 → 100644
partner
0 → 100755
不能预览此文件类型
| @@ -381,7 +381,7 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | @@ -381,7 +381,7 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | ||
| 381 | 381 | ||
| 382 | // 通过密码或校验码登录的普通用户或通过校验码登录的游客,注册一个账号到配置的公司去 | 382 | // 通过密码或校验码登录的普通用户或通过校验码登录的游客,注册一个账号到配置的公司去 |
| 383 | if request.GrantType == protocol.LoginBySmsCode || request.GrantType == protocol.LoginByPassword { | 383 | if request.GrantType == protocol.LoginBySmsCode || request.GrantType == protocol.LoginByPassword { |
| 384 | - userErr := loginSvr.RegistryUser(request.Phone) | 384 | + userErr := loginSvr.RegistryGuest(request.Phone) |
| 385 | if userErr != nil { | 385 | if userErr != nil { |
| 386 | log.Error(userErr) | 386 | log.Error(userErr) |
| 387 | } | 387 | } |
| @@ -403,25 +403,30 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | @@ -403,25 +403,30 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | ||
| 403 | return | 403 | return |
| 404 | } | 404 | } |
| 405 | 405 | ||
| 406 | - manageLoginErr := loginSvr.ManagerLogin(request.Phone, request.Password) | ||
| 407 | - fmt.Print("用户登录:", manageLoginErr, "\n") | ||
| 408 | - partnerLoginErr := loginSvr.PartnerLogin(request.Phone, request.Password) | ||
| 409 | - fmt.Print("合伙人登录:", partnerLoginErr, "\n") | 406 | + //manageLoginErr := loginSvr.ManagerLogin(request.Phone, request.Password) |
| 407 | + //fmt.Print("用户登录:", manageLoginErr, "\n") | ||
| 408 | + //partnerLoginErr := loginSvr.PartnerLogin(request.Phone, request.Password) | ||
| 409 | + //fmt.Print("合伙人登录:", partnerLoginErr, "\n") | ||
| 410 | + // | ||
| 411 | + //if manageLoginErr != nil && partnerLoginErr != nil { | ||
| 412 | + // //if len(loginSvr.PartnerInfo) == 0 { // 不存在有效用户 | ||
| 413 | + // // err = protocol.NewErrWithMessage(10008) | ||
| 414 | + // // return | ||
| 415 | + // //} | ||
| 416 | + // err = protocol.NewCustomMessage(1, "密码输入有误!") | ||
| 417 | + // return | ||
| 418 | + //} else if manageLoginErr != nil && partnerLoginErr == nil { | ||
| 419 | + // if len(loginSvr.PartnerInfo) == 1 && len(loginSvr.NormalUsers) == 0 { | ||
| 420 | + // if loginSvr.PartnerInfo[0].CompanyId == int64(constant.DEFAULT_GUEST_COMPANY) { | ||
| 421 | + // err = protocol.NewCustomMessage(1, "密码输入有误!") | ||
| 422 | + // return | ||
| 423 | + // } | ||
| 424 | + // } | ||
| 425 | + //} | ||
| 410 | 426 | ||
| 411 | - if manageLoginErr != nil && partnerLoginErr != nil { | ||
| 412 | - if len(loginSvr.PartnerInfo) == 0 { // 不存在有效用户 | ||
| 413 | - err = protocol.NewErrWithMessage(10008) | ||
| 414 | - return | ||
| 415 | - } | 427 | + if loginSvr.ManagerLogin(request.Phone, request.Password) != nil && loginSvr.PartnerLogin(request.Phone, request.Password) != nil { |
| 416 | err = protocol.NewCustomMessage(1, "密码输入有误!") | 428 | err = protocol.NewCustomMessage(1, "密码输入有误!") |
| 417 | return | 429 | return |
| 418 | - } else if manageLoginErr != nil && partnerLoginErr == nil { | ||
| 419 | - if len(loginSvr.PartnerInfo) == 1 && len(loginSvr.NormalUsers) == 0 { | ||
| 420 | - if loginSvr.PartnerInfo[0].CompanyId == int64(constant.DEFAULT_GUEST_COMPANY) { | ||
| 421 | - err = protocol.NewCustomMessage(1, "密码输入有误!") | ||
| 422 | - return | ||
| 423 | - } | ||
| 424 | - } | ||
| 425 | } | 430 | } |
| 426 | break | 431 | break |
| 427 | case protocol.LoginBySmsCode: | 432 | case protocol.LoginBySmsCode: |
| @@ -146,7 +146,13 @@ func getJoinWays(transactionContext *transaction.TransactionContext) (joinWays [ | @@ -146,7 +146,13 @@ func getJoinWays(transactionContext *transaction.TransactionContext) (joinWays [ | ||
| 146 | return | 146 | return |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | -// 获取公司统计 | 149 | +/** |
| 150 | + * @Author SteveChan | ||
| 151 | + * @Description //TODO 获取公司统计,增加销售日期限制 | ||
| 152 | + * @Date 02:45 2021/2/3 | ||
| 153 | + * @Param | ||
| 154 | + * @return | ||
| 155 | + **/ | ||
| 150 | func getStatistics(userId int64, transactionContext *transaction.TransactionContext) (interface{}, error) { | 156 | func getStatistics(userId int64, transactionContext *transaction.TransactionContext) (interface{}, error) { |
| 151 | var ( | 157 | var ( |
| 152 | UsersRepository, _ = factory.CreateUsersRepository(transactionContext) | 158 | UsersRepository, _ = factory.CreateUsersRepository(transactionContext) |
| @@ -174,19 +180,19 @@ func getStatistics(userId int64, transactionContext *transaction.TransactionCont | @@ -174,19 +180,19 @@ func getStatistics(userId int64, transactionContext *transaction.TransactionCont | ||
| 174 | if count, e := PartnerInfoDao.PartnerStatic(map[string]interface{}{"inPartnerIds": partnerIds, "inPartnerCategory": domain.App}); e == nil { | 180 | if count, e := PartnerInfoDao.PartnerStatic(map[string]interface{}{"inPartnerIds": partnerIds, "inPartnerCategory": domain.App}); e == nil { |
| 175 | Statistics["appCount"] = count | 181 | Statistics["appCount"] = count |
| 176 | } | 182 | } |
| 177 | - if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.Career}); e == nil { | 183 | + if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.Career, EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 178 | Statistics["careerOrdersMoney"] = bonus.TotalOrderAmount | 184 | Statistics["careerOrdersMoney"] = bonus.TotalOrderAmount |
| 179 | Statistics["careerDividend"] = bonus.Bonus | 185 | Statistics["careerDividend"] = bonus.Bonus |
| 180 | } | 186 | } |
| 181 | - if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.Business}); e == nil { | 187 | + if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.Business, EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 182 | Statistics["businessOrdersMoney"] = bonus.TotalOrderAmount | 188 | Statistics["businessOrdersMoney"] = bonus.TotalOrderAmount |
| 183 | Statistics["businessDividend"] = bonus.Bonus | 189 | Statistics["businessDividend"] = bonus.Bonus |
| 184 | } | 190 | } |
| 185 | - if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.Develop}); e == nil { | 191 | + if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.Develop, EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 186 | Statistics["developOrdersMoney"] = bonus.TotalOrderAmount | 192 | Statistics["developOrdersMoney"] = bonus.TotalOrderAmount |
| 187 | Statistics["developDividend"] = bonus.Bonus | 193 | Statistics["developDividend"] = bonus.Bonus |
| 188 | } | 194 | } |
| 189 | - if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.App}); e == nil { | 195 | + if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: partnerIds, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: domain.App, EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 190 | Statistics["appOrdersMoney"] = bonus.TotalOrderAmount | 196 | Statistics["appOrdersMoney"] = bonus.TotalOrderAmount |
| 191 | Statistics["appDividend"] = bonus.Bonus | 197 | Statistics["appDividend"] = bonus.Bonus |
| 192 | } | 198 | } |
| @@ -261,6 +267,10 @@ func newQueryOption(request *protocolx.PartnersRequest) map[string]interface{} { | @@ -261,6 +267,10 @@ func newQueryOption(request *protocolx.PartnersRequest) map[string]interface{} { | ||
| 261 | queryOption["startTime"] = request.StartTime / 1000 | 267 | queryOption["startTime"] = request.StartTime / 1000 |
| 262 | } | 268 | } |
| 263 | if request.EndTime > 0 { | 269 | if request.EndTime > 0 { |
| 270 | + currentDayEnd := utils.GetDayEnd().Unix() * 1000 | ||
| 271 | + if request.EndTime >= currentDayEnd { | ||
| 272 | + request.EndTime = currentDayEnd | ||
| 273 | + } | ||
| 264 | queryOption["endTime"] = request.EndTime / 1000 | 274 | queryOption["endTime"] = request.EndTime / 1000 |
| 265 | } | 275 | } |
| 266 | queryOption["limit"] = request.PageSize | 276 | queryOption["limit"] = request.PageSize |
| @@ -9,6 +9,7 @@ import ( | @@ -9,6 +9,7 @@ import ( | ||
| 9 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" | 9 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" |
| 10 | protocolx "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol/company" | 10 | protocolx "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol/company" |
| 11 | userx "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol/user" | 11 | userx "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol/user" |
| 12 | + "time" | ||
| 12 | ) | 13 | ) |
| 13 | 14 | ||
| 14 | func PartnersV2(header *protocol.RequestHeader, request *protocolx.PartnersRequest) (rsp *protocolx.PartnersResponse, err error) { | 15 | func PartnersV2(header *protocol.RequestHeader, request *protocolx.PartnersRequest) (rsp *protocolx.PartnersResponse, err error) { |
| @@ -27,6 +28,9 @@ func PartnersV2(header *protocol.RequestHeader, request *protocolx.PartnersReque | @@ -27,6 +28,9 @@ func PartnersV2(header *protocol.RequestHeader, request *protocolx.PartnersReque | ||
| 27 | log.Error(err) | 28 | log.Error(err) |
| 28 | return | 29 | return |
| 29 | } | 30 | } |
| 31 | + if request.PageIndex == 0 { | ||
| 32 | + rsp.Timestamp = time.Now().Unix() * 1000 | ||
| 33 | + } | ||
| 30 | if rsp.Partners == nil { | 34 | if rsp.Partners == nil { |
| 31 | rsp.Partners = []struct{}{} | 35 | rsp.Partners = []struct{}{} |
| 32 | } | 36 | } |
| @@ -106,6 +110,10 @@ func newQueryOptionV2(request *protocolx.PartnersRequest) map[string]interface{} | @@ -106,6 +110,10 @@ func newQueryOptionV2(request *protocolx.PartnersRequest) map[string]interface{} | ||
| 106 | queryOption["startTime"] = request.StartTime / 1000 | 110 | queryOption["startTime"] = request.StartTime / 1000 |
| 107 | } | 111 | } |
| 108 | if request.EndTime > 0 { | 112 | if request.EndTime > 0 { |
| 113 | + currentDayEnd := utils.GetDayEnd().Unix() * 1000 | ||
| 114 | + if request.EndTime >= currentDayEnd { | ||
| 115 | + request.EndTime = currentDayEnd | ||
| 116 | + } | ||
| 109 | queryOption["endTime"] = request.EndTime / 1000 | 117 | queryOption["endTime"] = request.EndTime / 1000 |
| 110 | } | 118 | } |
| 111 | if request.Keyword != "" { | 119 | if request.Keyword != "" { |
| 1 | package dividend | 1 | package dividend |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "fmt" | ||
| 4 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/application/factory" | 5 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/application/factory" |
| 5 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" | 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" | 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" |
| @@ -24,13 +25,53 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | @@ -24,13 +25,53 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | ||
| 24 | }() | 25 | }() |
| 25 | 26 | ||
| 26 | // 事业分红统计-查询订单 | 27 | // 事业分红统计-查询订单 |
| 27 | - _, orderAll, e := OrderBaseResponsitory.Find(utils.ObjectJsonToMap(domain.OrderQueryOption{PartnerId: request.PartnerId, EndTime: time.Now(), SortByCreateTime: domain.DESC, OrderTypes: domain.UserOrderTypes(domain.Career)})) | 28 | + _, orderAll, e := OrderBaseResponsitory.Find(utils.ObjectJsonToMap(domain.OrderQueryOption{PartnerId: request.PartnerId, EndTime: utils.GetDayEnd(), SortBySalesTime: domain.DESC, OrderTypes: domain.UserOrderTypes(domain.Career)})) |
| 28 | if e != nil { | 29 | if e != nil { |
| 29 | log.Error(e) | 30 | log.Error(e) |
| 30 | } | 31 | } |
| 32 | + | ||
| 33 | + //获取营销年 | ||
| 34 | + t := time.Now() | ||
| 35 | + var last time.Time | ||
| 36 | + var first time.Time | ||
| 37 | + boundDate := time.Date(t.Year(), time.March, 31, 23, 59, 59, 0, time.Local) // 营销年界限 | ||
| 38 | + fmt.Println("营销年界限:", boundDate) | ||
| 39 | + if t.Before(boundDate) || t.Equal(boundDate) { | ||
| 40 | + first = time.Date(t.Year()-1, time.April, 1, 0, 0, 0, 0, time.Local) | ||
| 41 | + last = time.Date(t.Year(), time.March, 31, 23, 59, 59, 0, time.Local) | ||
| 42 | + } else if t.After(boundDate) { | ||
| 43 | + first = time.Date(t.Year(), time.April, 1, 0, 0, 0, 0, time.Local) | ||
| 44 | + last = time.Date(t.Year()+1, time.March, 31, 23, 59, 59, 0, time.Local) | ||
| 45 | + } | ||
| 46 | + fmt.Println("当前营销年起始:", first, last) | ||
| 47 | + //last := time.Date(t.Year(), time.December, 31, 23, 59, 59, 0, time.Local) | ||
| 48 | + | ||
| 49 | + //first := time.Date(t.Year(), time.January, 1, 0, 0, 0, 0, time.Local) | ||
| 50 | + //last := first.AddDate(1, 0, 0) | ||
| 51 | + | ||
| 52 | + //last := time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), time.Local) | ||
| 53 | + //last := utils.GetDayEnd() | ||
| 54 | + | ||
| 55 | + // 请求开始时间和结束时间都为0时,默认从营销年开始统计 | ||
| 56 | + if request.StartTime == 0 && request.EndTime == 0 { | ||
| 57 | + request.StartTime = first.Unix() * 1000 | ||
| 58 | + request.EndTime = last.Unix() * 1000 | ||
| 59 | + } else if request.StartTime > 0 && request.EndTime > 0 { // 判断结束时间是否超过今天,超过今天的结束时间到今天为止 | ||
| 60 | + currentDayEnd := utils.GetDayEnd().Unix() * 1000 | ||
| 61 | + if request.EndTime >= currentDayEnd { | ||
| 62 | + request.EndTime = currentDayEnd | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + //if request.EndTime > last.Unix()*1000 { | ||
| 67 | + // request.EndTime = last.Unix() * 1000 | ||
| 68 | + //} | ||
| 69 | + fmt.Print("StartTime: ", request.StartTime, "\n") | ||
| 70 | + fmt.Print("EndTime: ", request.EndTime, "\n") | ||
| 71 | + | ||
| 31 | var orderBetween []*domain.OrderBase | 72 | var orderBetween []*domain.OrderBase |
| 32 | for i := range orderAll { | 73 | for i := range orderAll { |
| 33 | - if orderAll[i].CreateTime.Unix() >= (request.StartTime/1000) && orderAll[i].CreateTime.Unix() < (request.EndTime/1000) { | 74 | + if orderAll[i].SaleDate.Unix() >= (request.StartTime/1000) && orderAll[i].SaleDate.Unix() < (request.EndTime/1000) { |
| 34 | orderBetween = append(orderBetween, orderAll[i]) | 75 | orderBetween = append(orderBetween, orderAll[i]) |
| 35 | } | 76 | } |
| 36 | } | 77 | } |
| @@ -60,6 +101,8 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | @@ -60,6 +101,8 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | ||
| 60 | Quarters: bonusQuarters, | 101 | Quarters: bonusQuarters, |
| 61 | } | 102 | } |
| 62 | 103 | ||
| 104 | + rsp.Timestamp = time.Now().Unix() * 1000 | ||
| 105 | + | ||
| 63 | err = transactionContext.CommitTransaction() | 106 | err = transactionContext.CommitTransaction() |
| 64 | return | 107 | return |
| 65 | } | 108 | } |
| @@ -82,7 +125,7 @@ func QuartersBonusStatics(orders []*domain.OrderBase, action int) (bonus []proto | @@ -82,7 +125,7 @@ func QuartersBonusStatics(orders []*domain.OrderBase, action int) (bonus []proto | ||
| 82 | bonus = make([]protocol.Bonus, 4) | 125 | bonus = make([]protocol.Bonus, 4) |
| 83 | for i := range orders { | 126 | for i := range orders { |
| 84 | o := orders[i] | 127 | o := orders[i] |
| 85 | - quarter := quarter(o.CreateTime) | 128 | + quarter := quarter(o.SaleDate) |
| 86 | static := o.OrderBonusStatic() | 129 | static := o.OrderBonusStatic() |
| 87 | bonus[quarter].Receivable = utils.Decimal(bonus[quarter].Receivable + static.OrderTotalReceivable()) | 130 | bonus[quarter].Receivable = utils.Decimal(bonus[quarter].Receivable + static.OrderTotalReceivable()) |
| 88 | bonus[quarter].Received = utils.Decimal(bonus[quarter].Received + static.OrderBonusReceive()) | 131 | bonus[quarter].Received = utils.Decimal(bonus[quarter].Received + static.OrderBonusReceive()) |
| @@ -123,18 +166,23 @@ func OrderList(header *protocol.RequestHeader, request *protocol.DividendOrdersR | @@ -123,18 +166,23 @@ func OrderList(header *protocol.RequestHeader, request *protocol.DividendOrdersR | ||
| 123 | }() | 166 | }() |
| 124 | rsp = &protocol.DividendOrdersResponse{List: make([]*protocol.DividendOrderListItem, 0)} | 167 | rsp = &protocol.DividendOrdersResponse{List: make([]*protocol.DividendOrderListItem, 0)} |
| 125 | 168 | ||
| 169 | + // 判断时间是否超过今天 | ||
| 170 | + currentDayEnd := utils.GetDayEnd().Unix() * 1000 | ||
| 171 | + if request.EndTime >= currentDayEnd { | ||
| 172 | + request.EndTime = currentDayEnd | ||
| 173 | + } | ||
| 174 | + | ||
| 126 | count, orders, err = OrderDao.DividendOrders(&domain.DividendOrdersQueryOption{ | 175 | count, orders, err = OrderDao.DividendOrders(&domain.DividendOrdersQueryOption{ |
| 127 | - OrderTypes: domain.UserOrderTypes(domain.Career), | ||
| 128 | - PartnerId: request.PartnerId, | ||
| 129 | - DetailAction: request.DetailAction, | ||
| 130 | - DividendAction: request.DividendAction, | ||
| 131 | - StartTime: request.StartTime, | ||
| 132 | - EndTime: request.EndTime, | ||
| 133 | - Offset: request.PageIndex * request.PageSize, | ||
| 134 | - Limit: request.PageSize, | ||
| 135 | - //SortByUpdateTime: domain.DESC, | ||
| 136 | - SortByCreateTime: domain.DESC, | ||
| 137 | - JoinWays: request.JoinWays, | 176 | + OrderTypes: domain.UserOrderTypes(domain.Career), |
| 177 | + PartnerId: request.PartnerId, | ||
| 178 | + DetailAction: request.DetailAction, | ||
| 179 | + DividendAction: request.DividendAction, | ||
| 180 | + StartTime: request.StartTime, | ||
| 181 | + EndTime: request.EndTime, | ||
| 182 | + Offset: request.PageIndex * request.PageSize, | ||
| 183 | + Limit: request.PageSize, | ||
| 184 | + SortBySalesTime: domain.DESC, | ||
| 185 | + JoinWays: request.JoinWays, | ||
| 138 | }) | 186 | }) |
| 139 | if err != nil { | 187 | if err != nil { |
| 140 | return | 188 | return |
| @@ -38,6 +38,7 @@ func Detail(header *protocol.RequestHeader, request *protocol.OrderDetailRequest | @@ -38,6 +38,7 @@ func Detail(header *protocol.RequestHeader, request *protocol.OrderDetailRequest | ||
| 38 | OrderStatus: orderStatus(order), | 38 | OrderStatus: orderStatus(order), |
| 39 | CreateTime: order.CreateTime.Unix() * 1000, | 39 | CreateTime: order.CreateTime.Unix() * 1000, |
| 40 | UpdateTime: order.UpdateTime.Unix() * 1000, | 40 | UpdateTime: order.UpdateTime.Unix() * 1000, |
| 41 | + SalesTime: order.SaleDate.Unix() * 1000, | ||
| 41 | OrderDistrict: map[string]interface{}{"id": order.RegionInfo.RegionId, "name": order.RegionInfo.RegionName}, | 42 | OrderDistrict: map[string]interface{}{"id": order.RegionInfo.RegionId, "name": order.RegionInfo.RegionName}, |
| 42 | Customer: protocol.Customer{Uname: order.Buyer.BuyerName, Phone: order.Buyer.ContactInfo}, | 43 | Customer: protocol.Customer{Uname: order.Buyer.BuyerName, Phone: order.Buyer.ContactInfo}, |
| 43 | Products: orderProducts(order), | 44 | Products: orderProducts(order), |
| @@ -119,6 +120,13 @@ func orderTotalStatic(order *domain.OrderBase) interface{} { | @@ -119,6 +120,13 @@ func orderTotalStatic(order *domain.OrderBase) interface{} { | ||
| 119 | return item | 120 | return item |
| 120 | } | 121 | } |
| 121 | 122 | ||
| 123 | +/** | ||
| 124 | + * @Author SteveChan | ||
| 125 | + * @Description // 订单统计 | ||
| 126 | + * @Date 18:14 2021/1/28 | ||
| 127 | + * @Param | ||
| 128 | + * @return | ||
| 129 | + **/ | ||
| 122 | // 订单统计 | 130 | // 订单统计 |
| 123 | func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatisticsRequest) (rsp *protocol.OrderStatisticsResponse, err error) { | 131 | func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatisticsRequest) (rsp *protocol.OrderStatisticsResponse, err error) { |
| 124 | var ( | 132 | var ( |
| @@ -126,15 +134,18 @@ func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatistic | @@ -126,15 +134,18 @@ func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatistic | ||
| 126 | OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) | 134 | OrderDao, _ = factory.CreateOrderBaseDao(transactionContext) |
| 127 | BusinessBonusRepository, _ = factory.CreateBusinessBonusRepository(transactionContext) | 135 | BusinessBonusRepository, _ = factory.CreateBusinessBonusRepository(transactionContext) |
| 128 | ) | 136 | ) |
| 137 | + | ||
| 129 | if err = transactionContext.StartTransaction(); err != nil { | 138 | if err = transactionContext.StartTransaction(); err != nil { |
| 130 | return nil, err | 139 | return nil, err |
| 131 | } | 140 | } |
| 141 | + | ||
| 132 | defer func() { | 142 | defer func() { |
| 133 | transactionContext.RollbackTransaction() | 143 | transactionContext.RollbackTransaction() |
| 134 | }() | 144 | }() |
| 145 | + | ||
| 135 | rsp = &protocol.OrderStatisticsResponse{Statistics: &protocol.OrderStatics{}} | 146 | rsp = &protocol.OrderStatisticsResponse{Statistics: &protocol.OrderStatics{}} |
| 136 | 147 | ||
| 137 | - // 当天订单/累计订单 | 148 | + // 今日新增实发订单 |
| 138 | if rsp.Statistics.TodayRealQuantity, rsp.Statistics.TodayRealMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | 149 | if rsp.Statistics.TodayRealQuantity, rsp.Statistics.TodayRealMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ |
| 139 | BeginTime: utils.GetDayBegin().Unix() * 1000, | 150 | BeginTime: utils.GetDayBegin().Unix() * 1000, |
| 140 | EndTime: utils.GetDayEnd().Unix() * 1000, | 151 | EndTime: utils.GetDayEnd().Unix() * 1000, |
| @@ -143,19 +154,23 @@ func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatistic | @@ -143,19 +154,23 @@ func Statistics(header *protocol.RequestHeader, request *protocol.OrderStatistic | ||
| 143 | }); err != nil { | 154 | }); err != nil { |
| 144 | return | 155 | return |
| 145 | } | 156 | } |
| 157 | + | ||
| 158 | + // 累计实发订单 | ||
| 146 | if rsp.Statistics.CumulativeQuantity, rsp.Statistics.CumulativeMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | 159 | if rsp.Statistics.CumulativeQuantity, rsp.Statistics.CumulativeMoney, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ |
| 147 | - EndTime: time.Now().Unix() * 1000, | 160 | + //EndTime: time.Now().Unix() * 1000, |
| 161 | + EndTime: utils.GetDayEnd().Unix() * 1000, // 累计到今天最后一刻 | ||
| 148 | OrderTypes: domain.UserOrderTypes(domain.Career), | 162 | OrderTypes: domain.UserOrderTypes(domain.Career), |
| 149 | PartnerId: header.UserId, | 163 | PartnerId: header.UserId, |
| 150 | }); err != nil { | 164 | }); err != nil { |
| 151 | return | 165 | return |
| 152 | } | 166 | } |
| 167 | + | ||
| 153 | rsp.Statistics.TodayRealMoney = utils.Decimal(rsp.Statistics.TodayRealMoney) | 168 | rsp.Statistics.TodayRealMoney = utils.Decimal(rsp.Statistics.TodayRealMoney) |
| 154 | rsp.Statistics.CumulativeMoney = utils.Decimal(rsp.Statistics.CumulativeMoney) | 169 | rsp.Statistics.CumulativeMoney = utils.Decimal(rsp.Statistics.CumulativeMoney) |
| 155 | 170 | ||
| 156 | //事业分红/业务分红 | 171 | //事业分红/业务分红 |
| 157 | var careerBonus, businessBonus, total float64 //,developBonus,appBonus | 172 | var careerBonus, businessBonus, total float64 //,developBonus,appBonus |
| 158 | - if bonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: header.UserId, OrderTypes: domain.UserOrderTypes(domain.Career)}); e == nil { | 173 | + if bonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: header.UserId, OrderTypes: domain.UserOrderTypes(domain.Career), EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 159 | careerBonus = bonus.Bonus | 174 | careerBonus = bonus.Bonus |
| 160 | total += careerBonus | 175 | total += careerBonus |
| 161 | } | 176 | } |
| @@ -195,20 +210,39 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r | @@ -195,20 +210,39 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r | ||
| 195 | 210 | ||
| 196 | // 查询订单列表 | 211 | // 查询订单列表 |
| 197 | queryOption := &domain.OrderQueryOption{ | 212 | queryOption := &domain.OrderQueryOption{ |
| 198 | - Limit: request.PageSize, | ||
| 199 | - Offset: request.PageSize * request.PageIndex, | 213 | + Limit: request.PageSize, |
| 214 | + Offset: request.PageSize * request.PageIndex, | ||
| 200 | //SortByUpdateTime: domain.DESC, | 215 | //SortByUpdateTime: domain.DESC, |
| 201 | - SortByCreateTime: domain.DESC, | 216 | + //SortByCreateTime: domain.DESC, |
| 217 | + SortBySalesTime: domain.DESC, | ||
| 202 | PartnerId: request.PartnerId, | 218 | PartnerId: request.PartnerId, |
| 203 | PartnerCategoryId: request.JoinWay, | 219 | PartnerCategoryId: request.JoinWay, |
| 204 | OrderType: request.OrderType, | 220 | OrderType: request.OrderType, |
| 205 | OrderTypes: request.OrderTypes, | 221 | OrderTypes: request.OrderTypes, |
| 206 | } | 222 | } |
| 207 | - if request.StartTime > 0 { | 223 | + // 当月累计实发订单 |
| 224 | + d := time.Now() | ||
| 225 | + if request.StartTime > 0 { // 开始时间处理 | ||
| 208 | queryOption.BeginTime = time.Unix(request.StartTime/1000, 0) | 226 | queryOption.BeginTime = time.Unix(request.StartTime/1000, 0) |
| 227 | + } else { // 开始时间为0,默认从这个月初开始 | ||
| 228 | + queryOption.BeginTime = utils.GetFirstDateOfMonth(d) | ||
| 209 | } | 229 | } |
| 210 | - if request.EndTime > 0 { | 230 | + |
| 231 | + if request.EndTime > 0 { // 结束时间处理,判断时间是否超过今天 | ||
| 232 | + currentDayEnd := utils.GetDayEnd().Unix() * 1000 | ||
| 233 | + if request.EndTime >= currentDayEnd { | ||
| 234 | + request.EndTime = currentDayEnd | ||
| 235 | + } | ||
| 211 | queryOption.EndTime = time.Unix(request.EndTime/1000, 0) | 236 | queryOption.EndTime = time.Unix(request.EndTime/1000, 0) |
| 237 | + } else { // 请求结束时间为0,默认到今天结束 | ||
| 238 | + //queryOption.EndTime = utils.GetNextMonthFirstDay(d) | ||
| 239 | + queryOption.EndTime = utils.GetDayEnd() | ||
| 240 | + } | ||
| 241 | + | ||
| 242 | + // 今日新增实发订单 | ||
| 243 | + if request.IsToday { | ||
| 244 | + queryOption.BeginTime = utils.GetZeroTime(d) | ||
| 245 | + queryOption.EndTime = utils.GetNextDayZeroTime(d) | ||
| 212 | } | 246 | } |
| 213 | total, orders, _ = OrderRepository.Find(utils.ObjectJsonToMap(queryOption)) | 247 | total, orders, _ = OrderRepository.Find(utils.ObjectJsonToMap(queryOption)) |
| 214 | if len(orders) != 0 { | 248 | if len(orders) != 0 { |
| @@ -222,19 +256,21 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r | @@ -222,19 +256,21 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r | ||
| 222 | } | 256 | } |
| 223 | } | 257 | } |
| 224 | 258 | ||
| 225 | - // 【特殊处理1】 查询第0页时,需要查询累计实发订单数 | 259 | + // 【特殊处理1】 查询第0页时,需要查询累计实发订单数,并下发时间戳 |
| 226 | if request.PageIndex == 0 { | 260 | if request.PageIndex == 0 { |
| 227 | var ( | 261 | var ( |
| 228 | cumulativeQuantity int | 262 | cumulativeQuantity int |
| 229 | ) | 263 | ) |
| 230 | cumulativeQuantity, _, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | 264 | cumulativeQuantity, _, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ |
| 231 | - EndTime: time.Now().Unix() * 1000, | 265 | + EndTime: utils.GetDayEnd().Unix() * 1000, |
| 232 | OrderTypes: domain.UserOrderTypes(domain.Career), | 266 | OrderTypes: domain.UserOrderTypes(domain.Career), |
| 233 | PartnerId: request.PartnerId, | 267 | PartnerId: request.PartnerId, |
| 234 | PartnerCategoryId: request.JoinWay, | 268 | PartnerCategoryId: request.JoinWay, |
| 235 | }) | 269 | }) |
| 236 | rsp.Total = cumulativeQuantity | 270 | rsp.Total = cumulativeQuantity |
| 271 | + rsp.Timestamp = time.Now().Unix() * 1000 | ||
| 237 | } | 272 | } |
| 273 | + | ||
| 238 | //【特殊处理2】 今天累计数量特殊处理 当前查询时间段内所有订单总数(复用rsp.Total字段) | 274 | //【特殊处理2】 今天累计数量特殊处理 当前查询时间段内所有订单总数(复用rsp.Total字段) |
| 239 | if request.StartTime > 0 && request.EndTime > 0 { | 275 | if request.StartTime > 0 && request.EndTime > 0 { |
| 240 | zero := time.Time(xtime.XTime(time.Now()).DayBefore(0)).Unix() | 276 | zero := time.Time(xtime.XTime(time.Now()).DayBefore(0)).Unix() |
| @@ -243,23 +279,39 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r | @@ -243,23 +279,39 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r | ||
| 243 | } | 279 | } |
| 244 | } | 280 | } |
| 245 | 281 | ||
| 282 | + // 【特殊处理3】今日新增实发订单统计 | ||
| 283 | + if request.IsToday { | ||
| 284 | + var ( | ||
| 285 | + todayQuantity int | ||
| 286 | + ) | ||
| 287 | + todayQuantity, _, err = OrderDao.OrderStatics(&domain.OrderStaticQuery{ | ||
| 288 | + BeginTime: queryOption.BeginTime.Unix() * 1000, | ||
| 289 | + EndTime: queryOption.EndTime.Unix() * 1000, | ||
| 290 | + OrderTypes: domain.UserOrderTypes(domain.Career), | ||
| 291 | + PartnerId: request.PartnerId, | ||
| 292 | + PartnerCategoryId: request.JoinWay, | ||
| 293 | + }) | ||
| 294 | + rsp.Total = todayQuantity | ||
| 295 | + } | ||
| 296 | + | ||
| 246 | err = transactionContext.CommitTransaction() | 297 | err = transactionContext.CommitTransaction() |
| 247 | return | 298 | return |
| 248 | } | 299 | } |
| 249 | func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem { | 300 | func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem { |
| 250 | bonusStatic := order.OrderBonusStatic() | 301 | bonusStatic := order.OrderBonusStatic() |
| 251 | return &protocol.OrderListItem{ | 302 | return &protocol.OrderListItem{ |
| 252 | - Id: order.Id, | ||
| 253 | - OrderType: order.OrderType, | ||
| 254 | - OrderNo: order.OrderCode, | ||
| 255 | - DeliveryNo: order.DeliveryCode, | ||
| 256 | - OrderDistrict: map[string]interface{}{ | ||
| 257 | - "id": order.RegionInfo.RegionId, | 303 | + Id: order.Id, |
| 304 | + OrderType: order.OrderType, | ||
| 305 | + OrderNo: order.OrderCode, | ||
| 306 | + DeliveryNo: order.DeliveryCode, | ||
| 307 | + OrderDistrict: map[string]interface{}{ | ||
| 308 | + "id": order.RegionInfo.RegionId, | ||
| 258 | "name": order.RegionInfo.RegionName, | 309 | "name": order.RegionInfo.RegionName, |
| 259 | }, | 310 | }, |
| 260 | - OrderAmount: order.PlanOrderAmount, | ||
| 261 | - UpdateTime: order.UpdateTime.Unix() * 1000, | ||
| 262 | - MyDividend: bonusStatic.OrderTotalReceivable(), | ||
| 263 | - IsRead: order.IsRead(), | 311 | + OrderAmount: order.PlanOrderAmount, |
| 312 | + UpdateTime: order.UpdateTime.Unix() * 1000, | ||
| 313 | + SalesTime: order.SaleDate.Unix() * 1000, | ||
| 314 | + MyDividend: bonusStatic.OrderTotalReceivable(), | ||
| 315 | + IsRead: order.IsRead(), | ||
| 264 | } | 316 | } |
| 265 | } | 317 | } |
| @@ -6,7 +6,6 @@ import ( | @@ -6,7 +6,6 @@ import ( | ||
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" | 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" |
| 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" | 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" |
| 8 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" | 8 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" |
| 9 | - "time" | ||
| 10 | ) | 9 | ) |
| 11 | 10 | ||
| 12 | // 订单统计 | 11 | // 订单统计 |
| @@ -25,7 +24,7 @@ func StatisticsV2(header *protocol.RequestHeader, request *protocol.OrderStatist | @@ -25,7 +24,7 @@ func StatisticsV2(header *protocol.RequestHeader, request *protocol.OrderStatist | ||
| 25 | 24 | ||
| 26 | //事业分红/业务分红 | 25 | //事业分红/业务分红 |
| 27 | var total float64 | 26 | var total float64 |
| 28 | - if bonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: request.PartnerId, OrderTypes: domain.UserOrderTypes(domain.Career)}); e == nil { | 27 | + if bonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: request.PartnerId, OrderTypes: domain.UserOrderTypes(domain.Career), EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 29 | total += bonus.Bonus | 28 | total += bonus.Bonus |
| 30 | } | 29 | } |
| 31 | calcOrderStatic := func(catId int, total float64) protocol.OrderStatic { | 30 | calcOrderStatic := func(catId int, total float64) protocol.OrderStatic { |
| @@ -37,12 +36,12 @@ func StatisticsV2(header *protocol.RequestHeader, request *protocol.OrderStatist | @@ -37,12 +36,12 @@ func StatisticsV2(header *protocol.RequestHeader, request *protocol.OrderStatist | ||
| 37 | PartnerCategoryId: catId, | 36 | PartnerCategoryId: catId, |
| 38 | }) | 37 | }) |
| 39 | cumulativeQuantity, cumulativeMoney, _ := OrderDao.OrderStatics(&domain.OrderStaticQuery{ | 38 | cumulativeQuantity, cumulativeMoney, _ := OrderDao.OrderStatics(&domain.OrderStaticQuery{ |
| 40 | - EndTime: time.Now().Unix() * 1000, | 39 | + EndTime: utils.GetDayEnd().Unix() * 1000, |
| 41 | OrderTypes: domain.UserOrderTypes(domain.Career), | 40 | OrderTypes: domain.UserOrderTypes(domain.Career), |
| 42 | PartnerId: request.PartnerId, | 41 | PartnerId: request.PartnerId, |
| 43 | PartnerCategoryId: catId, | 42 | PartnerCategoryId: catId, |
| 44 | }) | 43 | }) |
| 45 | - bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: request.PartnerId, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: catId}) | 44 | + bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: request.PartnerId, OrderTypes: domain.UserOrderTypes(domain.Career), PartnerCategoryId: catId, EndTime: utils.GetDayEnd().Unix() * 1000}) |
| 46 | var percent float64 = 0 | 45 | var percent float64 = 0 |
| 47 | if bonus.Bonus != 0 { | 46 | if bonus.Bonus != 0 { |
| 48 | percent = utils.DecimalToNumber(bonus.Bonus * 100 / total) | 47 | percent = utils.DecimalToNumber(bonus.Bonus * 100 / total) |
| @@ -66,12 +66,12 @@ func getDetail(userId int64, transactionContext *transaction.TransactionContext) | @@ -66,12 +66,12 @@ func getDetail(userId int64, transactionContext *transaction.TransactionContext) | ||
| 66 | } | 66 | } |
| 67 | } | 67 | } |
| 68 | p.CooperateTime = partner.CooperateTime.Unix() * 1000 | 68 | p.CooperateTime = partner.CooperateTime.Unix() * 1000 |
| 69 | - if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: userId, OrderTypes: domain.UserOrderTypes(domain.Career)}); e == nil { | 69 | + if bonus, e := OrderBaseDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: userId, OrderTypes: domain.UserOrderTypes(domain.Career), EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 70 | p.CareerOrdersCount = int(bonus.Total) | 70 | p.CareerOrdersCount = int(bonus.Total) |
| 71 | p.CareerOrdersMoney = utils.Decimal(bonus.TotalOrderAmount) | 71 | p.CareerOrdersMoney = utils.Decimal(bonus.TotalOrderAmount) |
| 72 | p.CareerDividend = utils.Decimal(bonus.Bonus) | 72 | p.CareerDividend = utils.Decimal(bonus.Bonus) |
| 73 | } | 73 | } |
| 74 | - if businessBonus, e := BusinessBonusDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: userId, IsDisable: 1}); e == nil { | 74 | + if businessBonus, e := BusinessBonusDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: userId, IsDisable: 1, EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 75 | p.BusinessOrdersCount = int(businessBonus.Total) | 75 | p.BusinessOrdersCount = int(businessBonus.Total) |
| 76 | p.BusinessOrdersMoney = utils.Decimal(businessBonus.TotalOrderAmount) | 76 | p.BusinessOrdersMoney = utils.Decimal(businessBonus.TotalOrderAmount) |
| 77 | p.BusinessDividend = utils.Decimal(businessBonus.Bonus) | 77 | p.BusinessDividend = utils.Decimal(businessBonus.Bonus) |
| @@ -8,7 +8,7 @@ import ( | @@ -8,7 +8,7 @@ import ( | ||
| 8 | const SERVICE_NAME = "partner" | 8 | const SERVICE_NAME = "partner" |
| 9 | 9 | ||
| 10 | var LOG_LEVEL = "debug" | 10 | var LOG_LEVEL = "debug" |
| 11 | -var LOG_File = "app.log" | 11 | +var LOG_File = "logs/app.log" |
| 12 | var LOG_PREFIX = "[partner_dev]" | 12 | var LOG_PREFIX = "[partner_dev]" |
| 13 | 13 | ||
| 14 | var MMM_SMS_SERVICE_HOST = "https://sms.fjmaimaimai.com:9897" | 14 | var MMM_SMS_SERVICE_HOST = "https://sms.fjmaimaimai.com:9897" |
| @@ -4,9 +4,9 @@ import "os" | @@ -4,9 +4,9 @@ import "os" | ||
| 4 | 4 | ||
| 5 | var POSTGRESQL_DB_NAME = "partner_test" //partner_test/partner_dev | 5 | var POSTGRESQL_DB_NAME = "partner_test" //partner_test/partner_dev |
| 6 | var POSTGRESQL_USER = "postgres" //postgres | 6 | var POSTGRESQL_USER = "postgres" //postgres |
| 7 | -var POSTGRESQL_PASSWORD = "eagle1010" //pgsql@123/1993618jack | ||
| 8 | -var POSTGRESQL_HOST = "114.55.200.59" //127.0.0.1/114.55.200.59 | ||
| 9 | -var POSTGRESQL_PORT = "31543" //5432/31543 | 7 | +var POSTGRESQL_PASSWORD = "1993618jack" //pgsql@123/1993618jack/eagle1010 |
| 8 | +var POSTGRESQL_HOST = "127.0.0.1" //127.0.0.1/114.55.200.59 | ||
| 9 | +var POSTGRESQL_PORT = "5432" //5432/31543 | ||
| 10 | var DISABLE_CREATE_TABLE = true | 10 | var DISABLE_CREATE_TABLE = true |
| 11 | var DISABLE_SQL_GENERATE_PRINT = false | 11 | var DISABLE_SQL_GENERATE_PRINT = false |
| 12 | 12 |
| @@ -4,7 +4,7 @@ import "os" | @@ -4,7 +4,7 @@ import "os" | ||
| 4 | 4 | ||
| 5 | var REDIS_HOST = "127.0.0.1" | 5 | var REDIS_HOST = "127.0.0.1" |
| 6 | var REDIS_PORT = "6379" | 6 | var REDIS_PORT = "6379" |
| 7 | -var REDIS_AUTH = "" | 7 | +var REDIS_AUTH = "" // 1993618@jack |
| 8 | 8 | ||
| 9 | func init() { | 9 | func init() { |
| 10 | if os.Getenv("REDIS_HOST") != "" { | 10 | if os.Getenv("REDIS_HOST") != "" { |
| @@ -42,6 +42,8 @@ type OrderBase struct { | @@ -42,6 +42,8 @@ type OrderBase struct { | ||
| 42 | DeliveryTime time.Time | 42 | DeliveryTime time.Time |
| 43 | //更新时间 | 43 | //更新时间 |
| 44 | UpdateTime time.Time | 44 | UpdateTime time.Time |
| 45 | + //销售日期 | ||
| 46 | + SaleDate time.Time | ||
| 45 | //上一次查看时间 已读情况 | 47 | //上一次查看时间 已读情况 |
| 46 | LastViewTime time.Time | 48 | LastViewTime time.Time |
| 47 | //合伙人应收分红 | 49 | //合伙人应收分红 |
| @@ -157,25 +159,27 @@ type OrderQueryOption struct { | @@ -157,25 +159,27 @@ type OrderQueryOption struct { | ||
| 157 | //IsDisable string `json:"isDisable,omitempty"` | 159 | //IsDisable string `json:"isDisable,omitempty"` |
| 158 | SortByCreateTime string `json:"sortByCreateTime,omitempty"` | 160 | SortByCreateTime string `json:"sortByCreateTime,omitempty"` |
| 159 | SortByUpdateTime string `json:"sortByUpdateTime,omitempty"` | 161 | SortByUpdateTime string `json:"sortByUpdateTime,omitempty"` |
| 162 | + SortBySalesTime string `json:"sortBySalesTime,omitempty"` | ||
| 160 | Offset int `json:"offset,omitempty"` | 163 | Offset int `json:"offset,omitempty"` |
| 161 | Limit int `json:"limit,omitempty"` | 164 | Limit int `json:"limit,omitempty"` |
| 162 | PartnerCategoryId int `json:"partnerCategoryId,omitempty"` | 165 | PartnerCategoryId int `json:"partnerCategoryId,omitempty"` |
| 163 | } | 166 | } |
| 164 | 167 | ||
| 165 | type DividendOrdersQueryOption struct { | 168 | type DividendOrdersQueryOption struct { |
| 166 | - PartnerId int64 `json:"partnerId"` | ||
| 167 | - OrderType int `json:"orderType"` //订单类型 | ||
| 168 | - OrderTypes []int `json:"orderTypes,omitempty"` | ||
| 169 | - DetailAction int `json:"detailAction"` //明细类型(0已收明细、1未收明细) | ||
| 170 | - DividendAction int `json:"dividendAction"` //分红类型(0累计分红、1分红支出) | ||
| 171 | - IsDisable string `json:"isDisable,omitempty"` | ||
| 172 | - StartTime int64 `json:"startTime" ` | ||
| 173 | - EndTime int64 `json:"endTime"` | ||
| 174 | - Offset int `json:"offset,omitempty"` | ||
| 175 | - Limit int `json:"limit,omitempty"` | ||
| 176 | - SortByUpdateTime string `json:"sortByUpdateTime,omitempty"` | ||
| 177 | - SortByCreateTime string `json:"sortByCreateTime,omitempty"` | ||
| 178 | - JoinWays []*company.JoinWays `json:"joinWays,omitempty"` // 合伙类型 | 169 | + PartnerId int64 `json:"partnerId"` |
| 170 | + OrderType int `json:"orderType"` //订单类型 | ||
| 171 | + OrderTypes []int `json:"orderTypes,omitempty"` | ||
| 172 | + DetailAction int `json:"detailAction"` //明细类型(0已收明细、1未收明细) | ||
| 173 | + DividendAction int `json:"dividendAction"` //分红类型(0累计分红、1分红支出) | ||
| 174 | + IsDisable string `json:"isDisable,omitempty"` | ||
| 175 | + StartTime int64 `json:"startTime" ` | ||
| 176 | + EndTime int64 `json:"endTime"` | ||
| 177 | + Offset int `json:"offset,omitempty"` | ||
| 178 | + Limit int `json:"limit,omitempty"` | ||
| 179 | + SortByUpdateTime string `json:"sortByUpdateTime,omitempty"` | ||
| 180 | + SortByCreateTime string `json:"sortByCreateTime,omitempty"` | ||
| 181 | + SortBySalesTime string `json:"sortBySalesTime,omitempty"` | ||
| 182 | + JoinWays []*company.JoinWays `json:"joinWays,omitempty"` // 合伙类型 | ||
| 179 | } | 183 | } |
| 180 | 184 | ||
| 181 | //买家 | 185 | //买家 |
| @@ -32,6 +32,7 @@ type OrderBonusQuery struct { | @@ -32,6 +32,7 @@ type OrderBonusQuery struct { | ||
| 32 | OrderType int `json:"orderType,omitempty"` | 32 | OrderType int `json:"orderType,omitempty"` |
| 33 | OrderTypes []int `json:"orderTypes,omitempty"` | 33 | OrderTypes []int `json:"orderTypes,omitempty"` |
| 34 | PartnerCategoryId int `json:"partnerCategoryId,omitempty"` //订单所属类型 | 34 | PartnerCategoryId int `json:"partnerCategoryId,omitempty"` //订单所属类型 |
| 35 | + EndTime int64 `json:"endTime,omitempty"` | ||
| 35 | //IsGroupByPartnerCategoryId bool `json:"isGroupByPartnerCategoryId,omitempty"` | 36 | //IsGroupByPartnerCategoryId bool `json:"isGroupByPartnerCategoryId,omitempty"` |
| 36 | } | 37 | } |
| 37 | 38 |
| @@ -35,10 +35,10 @@ func (dao *OrderBaseDao) OrderStatics(option *domain.OrderStaticQuery) (count in | @@ -35,10 +35,10 @@ func (dao *OrderBaseDao) OrderStatics(option *domain.OrderStaticQuery) (count in | ||
| 35 | q.Where(`"order_base".order_type in (?)`, pg.In(option.OrderTypes)) | 35 | q.Where(`"order_base".order_type in (?)`, pg.In(option.OrderTypes)) |
| 36 | } | 36 | } |
| 37 | if option.BeginTime > 0 { | 37 | if option.BeginTime > 0 { |
| 38 | - q.Where(`"order_base".create_time >=?`, time.Unix(option.BeginTime/1000, 0)) | 38 | + q.Where(`"order_base".sale_date >=?`, time.Unix(option.BeginTime/1000, 0)) |
| 39 | } | 39 | } |
| 40 | if option.EndTime > 0 { | 40 | if option.EndTime > 0 { |
| 41 | - q.Where(`"order_base".create_time <?`, time.Unix(option.EndTime/1000, 0)) | 41 | + q.Where(`"order_base".sale_date <?`, time.Unix(option.EndTime/1000, 0)) |
| 42 | } | 42 | } |
| 43 | if option.PartnerCategoryId > 0 { | 43 | if option.PartnerCategoryId > 0 { |
| 44 | q.Where(`"order_base".partner_category @>'{"id":?}'`, option.PartnerCategoryId) | 44 | q.Where(`"order_base".partner_category @>'{"id":?}'`, option.PartnerCategoryId) |
| @@ -82,6 +82,9 @@ func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp d | @@ -82,6 +82,9 @@ func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp d | ||
| 82 | if option.PartnerCategoryId > 0 { | 82 | if option.PartnerCategoryId > 0 { |
| 83 | q.Where(`"order_base".partner_category @>'{"id":?}'`, option.PartnerCategoryId) | 83 | q.Where(`"order_base".partner_category @>'{"id":?}'`, option.PartnerCategoryId) |
| 84 | } | 84 | } |
| 85 | + if option.EndTime > 0 { | ||
| 86 | + q.Where(`"order_base".sale_date <?`, time.Unix(option.EndTime/1000, 0)) | ||
| 87 | + } | ||
| 85 | //if option.IsGroupByPartnerCategoryId{ | 88 | //if option.IsGroupByPartnerCategoryId{ |
| 86 | // q.Group(`partner_category`) | 89 | // q.Group(`partner_category`) |
| 87 | //} | 90 | //} |
| @@ -105,10 +108,10 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption | @@ -105,10 +108,10 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption | ||
| 105 | q.Where(`"order_base".partner_id=?`, option.PartnerId) | 108 | q.Where(`"order_base".partner_id=?`, option.PartnerId) |
| 106 | } | 109 | } |
| 107 | if option.StartTime > 0 { | 110 | if option.StartTime > 0 { |
| 108 | - q.Where(`"order_base".create_time >=?`, time.Unix(option.StartTime/1000, 0)) | 111 | + q.Where(`"order_base".sale_date >=?`, time.Unix(option.StartTime/1000, 0)) |
| 109 | } | 112 | } |
| 110 | if option.EndTime > 0 { | 113 | if option.EndTime > 0 { |
| 111 | - q.Where(`"order_base".create_time <?`, time.Unix(option.EndTime/1000, 0)) | 114 | + q.Where(`"order_base".sale_date <?`, time.Unix(option.EndTime/1000, 0)) |
| 112 | } | 115 | } |
| 113 | if len(option.JoinWays) > 0 { | 116 | if len(option.JoinWays) > 0 { |
| 114 | var joinWays []int64 | 117 | var joinWays []int64 |
| @@ -150,6 +153,9 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption | @@ -150,6 +153,9 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption | ||
| 150 | if len(option.SortByCreateTime) > 0 { | 153 | if len(option.SortByCreateTime) > 0 { |
| 151 | q.Order(fmt.Sprintf("order_base.create_time %v", option.SortByCreateTime)) | 154 | q.Order(fmt.Sprintf("order_base.create_time %v", option.SortByCreateTime)) |
| 152 | } | 155 | } |
| 156 | + if len(option.SortBySalesTime) > 0 { | ||
| 157 | + q.Order(fmt.Sprintf("order_base.sale_date %v", option.SortBySalesTime)) | ||
| 158 | + } | ||
| 153 | count, err = q.Distinct().SelectAndCount() | 159 | count, err = q.Distinct().SelectAndCount() |
| 154 | for i := range orders { | 160 | for i := range orders { |
| 155 | var domainOrder *domain.OrderBase | 161 | var domainOrder *domain.OrderBase |
| @@ -115,7 +115,7 @@ A left join | @@ -115,7 +115,7 @@ A left join | ||
| 115 | plan_order_amount amount, | 115 | plan_order_amount amount, |
| 116 | (case when use_order_count>=0 then use_partner_bonus else plan_partner_bonus end) bonus, | 116 | (case when use_order_count>=0 then use_partner_bonus else plan_partner_bonus end) bonus, |
| 117 | partner_bonus_expense bonus_expense FROM "order_base" AS "order_base" | 117 | partner_bonus_expense bonus_expense FROM "order_base" AS "order_base" |
| 118 | - WHERE (partner_id in (?)) and (order_type in (?)) | 118 | + WHERE (partner_id in (?)) and (order_type in (?) and (sale_date < ?) ) |
| 119 | UNION ALL | 119 | UNION ALL |
| 120 | SELECT partner_info_id partner_id, | 120 | SELECT partner_info_id partner_id, |
| 121 | 0 amount, bonus bonus, bonus_expense bonus_expense FROM business_bonus | 121 | 0 amount, bonus bonus, bonus_expense bonus_expense FROM business_bonus |
| @@ -132,7 +132,7 @@ GROUP BY partner_id | @@ -132,7 +132,7 @@ GROUP BY partner_id | ||
| 132 | sql.WriteString(fmt.Sprintf(" \nOFFSET %v", offset)) | 132 | sql.WriteString(fmt.Sprintf(" \nOFFSET %v", offset)) |
| 133 | } | 133 | } |
| 134 | } | 134 | } |
| 135 | - _, err = tx.Query(&statics, sql.String(), pg.In(partnerIds), pg.In(partnerIds), pg.In(domain.UserOrderTypes(domain.Career)), pg.In(partnerIds)) | 135 | + _, err = tx.Query(&statics, sql.String(), pg.In(partnerIds), pg.In(partnerIds), pg.In(domain.UserOrderTypes(domain.Career)), GetDayEnd(), pg.In(partnerIds)) |
| 136 | return | 136 | return |
| 137 | } | 137 | } |
| 138 | 138 |
| @@ -153,17 +153,29 @@ func (svr *PgLoginService) CheckIsPartner(phone string, companyId int64) (ok boo | @@ -153,17 +153,29 @@ func (svr *PgLoginService) CheckIsPartner(phone string, companyId int64) (ok boo | ||
| 153 | return ok, nil | 153 | return ok, nil |
| 154 | } | 154 | } |
| 155 | 155 | ||
| 156 | -//合伙人登录 | 156 | +// 合伙人登录 |
| 157 | func (svr *PgLoginService) PartnerLogin(phone string, password string) (err error) { | 157 | func (svr *PgLoginService) PartnerLogin(phone string, password string) (err error) { |
| 158 | if len(svr.PartnerInfo) == 0 { | 158 | if len(svr.PartnerInfo) == 0 { |
| 159 | //子账号 | 159 | //子账号 |
| 160 | err = protocol.NewErrWithMessage(502, err) //账号不存在 | 160 | err = protocol.NewErrWithMessage(502, err) //账号不存在 |
| 161 | return | 161 | return |
| 162 | } | 162 | } |
| 163 | - if !strings.EqualFold(svr.PartnerInfo[0].Password, password) { | 163 | + |
| 164 | + var misMatch bool | ||
| 165 | + for _, partnerInfo := range svr.PartnerInfo { | ||
| 166 | + if !strings.EqualFold(partnerInfo.Password, password) { | ||
| 167 | + misMatch = true | ||
| 168 | + } else { | ||
| 169 | + misMatch = false | ||
| 170 | + break | ||
| 171 | + } | ||
| 172 | + } | ||
| 173 | + | ||
| 174 | + if misMatch { | ||
| 164 | err = protocol.NewCustomMessage(1, "密码输入错误!") | 175 | err = protocol.NewCustomMessage(1, "密码输入错误!") |
| 165 | return | 176 | return |
| 166 | } | 177 | } |
| 178 | + | ||
| 167 | return | 179 | return |
| 168 | } | 180 | } |
| 169 | 181 | ||
| @@ -226,12 +238,12 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | @@ -226,12 +238,12 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | ||
| 226 | return response, nil | 238 | return response, nil |
| 227 | } | 239 | } |
| 228 | 240 | ||
| 229 | - totalBonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds(), OrderTypes: domain.UserOrderTypes(domain.Career)}) | 241 | + totalBonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds(), OrderTypes: domain.UserOrderTypes(domain.Career), EndTime: utils.GetDayEnd().Unix() * 1000}) |
| 230 | if e != nil { | 242 | if e != nil { |
| 231 | return response, e | 243 | return response, e |
| 232 | } | 244 | } |
| 233 | 245 | ||
| 234 | - if businessBonus, e := BusinessBonusDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds(), IsDisable: 1}); e == nil { | 246 | + if businessBonus, e := BusinessBonusDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds(), IsDisable: 1, EndTime: utils.GetDayEnd().Unix() * 1000}); e == nil { |
| 235 | totalBonus.Bonus += businessBonus.Bonus | 247 | totalBonus.Bonus += businessBonus.Bonus |
| 236 | } | 248 | } |
| 237 | 249 | ||
| @@ -278,7 +290,7 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | @@ -278,7 +290,7 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | ||
| 278 | continue | 290 | continue |
| 279 | } | 291 | } |
| 280 | 292 | ||
| 281 | - bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: partner.Id, OrderTypes: domain.UserOrderTypes(domain.Career)}) | 293 | + bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: partner.Id, OrderTypes: domain.UserOrderTypes(domain.Career), EndTime: utils.GetDayEnd().Unix() * 1000}) |
| 282 | if v, ok := mapPartnerBussinessBonus[partner.Id]; ok { | 294 | if v, ok := mapPartnerBussinessBonus[partner.Id]; ok { |
| 283 | bonus.Bonus += v.Bonus | 295 | bonus.Bonus += v.Bonus |
| 284 | } | 296 | } |
| @@ -454,7 +466,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | @@ -454,7 +466,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | ||
| 454 | isUserSenior bool | 466 | isUserSenior bool |
| 455 | ) | 467 | ) |
| 456 | 468 | ||
| 457 | - partnerInfo, _ := PartnerInfoService.FindOne(map[string]interface{}{"account": phone, "isNot": constant.DEFAULT_GUEST_COMPANY}) // 合伙人在正常公司是否存在 | 469 | + partnerInfo, errPartner := PartnerInfoService.FindOne(map[string]interface{}{"account": phone, "isNot": constant.DEFAULT_GUEST_COMPANY}) // 合伙人在正常公司是否存在 |
| 458 | if partnerInfo == nil { | 470 | if partnerInfo == nil { |
| 459 | isPartner = false | 471 | isPartner = false |
| 460 | } else { | 472 | } else { |
| @@ -480,7 +492,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | @@ -480,7 +492,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | ||
| 480 | isGuestPartnerAvailable = true | 492 | isGuestPartnerAvailable = true |
| 481 | } | 493 | } |
| 482 | 494 | ||
| 483 | - user, _ := UsersRepository.FindOne(map[string]interface{}{"phone": phone, "deleteAtIsNull": true}) // 用户是否存在 | 495 | + user, errUser := UsersRepository.FindOne(map[string]interface{}{"phone": phone, "deleteAtIsNull": true}) // 用户是否存在 |
| 484 | if user == nil { | 496 | if user == nil { |
| 485 | isUser = false | 497 | isUser = false |
| 486 | } else { | 498 | } else { |
| @@ -571,27 +583,27 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | @@ -571,27 +583,27 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | ||
| 571 | 583 | ||
| 572 | // 合伙人不存在、用户存在、非高管(普通用户)-> 注册用户 | 584 | // 合伙人不存在、用户存在、非高管(普通用户)-> 注册用户 |
| 573 | // 合伙人不存在、用户不存在(游客)-> 注册用户 | 585 | // 合伙人不存在、用户不存在(游客)-> 注册用户 |
| 574 | - //if errPartner != nil && errUser == nil && errSenior == nil || errPartner != nil && errUser != nil { | ||
| 575 | - // id := time.Now().Unix() | ||
| 576 | - // errPartner = svr.transactionContext.PgDd.Insert(&models.PartnerInfo{ | ||
| 577 | - // Id: id, | ||
| 578 | - // CompanyId: int64(constant.DEFAULT_GUEST_COMPANY), | ||
| 579 | - // PartnerName: phone, | ||
| 580 | - // Account: phone, | ||
| 581 | - // Password: "7c4a8d09ca3762af61e59520943dc26494f8941b", | ||
| 582 | - // Status: 1, | ||
| 583 | - // PartnerCategory: 1, | ||
| 584 | - // RegionInfo: &domain.RegionInfo{ | ||
| 585 | - // RegionName: "客户区域", | ||
| 586 | - // RegionId: 0, | ||
| 587 | - // }, | ||
| 588 | - // CooperateTime: time.Now(), | ||
| 589 | - // CreateAt: time.Now(), | ||
| 590 | - // UpdateAt: time.Now(), | ||
| 591 | - // PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}}, | ||
| 592 | - // Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, | ||
| 593 | - // }) | ||
| 594 | - //} | 586 | + if errPartner != nil && errUser == nil { |
| 587 | + id := time.Now().Unix() | ||
| 588 | + errPartner = svr.transactionContext.PgDd.Insert(&models.PartnerInfo{ | ||
| 589 | + Id: id, | ||
| 590 | + CompanyId: int64(constant.DEFAULT_GUEST_COMPANY), | ||
| 591 | + PartnerName: phone, | ||
| 592 | + Account: phone, | ||
| 593 | + Password: "7c4a8d09ca3762af61e59520943dc26494f8941b", | ||
| 594 | + Status: 1, | ||
| 595 | + PartnerCategory: 1, | ||
| 596 | + RegionInfo: &domain.RegionInfo{ | ||
| 597 | + RegionName: "客户区域", | ||
| 598 | + RegionId: 0, | ||
| 599 | + }, | ||
| 600 | + CooperateTime: time.Now(), | ||
| 601 | + CreateAt: time.Now(), | ||
| 602 | + UpdateAt: time.Now(), | ||
| 603 | + PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}}, | ||
| 604 | + Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, | ||
| 605 | + }) | ||
| 606 | + } | ||
| 595 | 607 | ||
| 596 | return errPartner | 608 | return errPartner |
| 597 | } | 609 | } |
| @@ -627,7 +639,7 @@ func (svr *PgLoginService) RegistryGuest(phone string) error { | @@ -627,7 +639,7 @@ func (svr *PgLoginService) RegistryGuest(phone string) error { | ||
| 627 | CooperateTime: time.Now(), | 639 | CooperateTime: time.Now(), |
| 628 | CreateAt: time.Now(), | 640 | CreateAt: time.Now(), |
| 629 | UpdateAt: time.Now(), | 641 | UpdateAt: time.Now(), |
| 630 | - PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1}}, | 642 | + PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}}, |
| 631 | Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, | 643 | Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, |
| 632 | }) | 644 | }) |
| 633 | } | 645 | } |
| @@ -42,6 +42,8 @@ type OrderBase struct { | @@ -42,6 +42,8 @@ type OrderBase struct { | ||
| 42 | DeliveryTime time.Time | 42 | DeliveryTime time.Time |
| 43 | //更新时间 | 43 | //更新时间 |
| 44 | UpdateTime time.Time | 44 | UpdateTime time.Time |
| 45 | + //销售日期 | ||
| 46 | + SaleDate time.Time | ||
| 45 | //上一次查看时间 已读情况 | 47 | //上一次查看时间 已读情况 |
| 46 | LastViewTime time.Time | 48 | LastViewTime time.Time |
| 47 | //合伙人应收分红 | 49 | //合伙人应收分红 |
| @@ -79,12 +79,13 @@ func (repository *OrderBaseRepository) Find(queryOptions map[string]interface{}) | @@ -79,12 +79,13 @@ func (repository *OrderBaseRepository) Find(queryOptions map[string]interface{}) | ||
| 79 | query := NewQuery(tx.Model(&OrderBaseModels), queryOptions) | 79 | query := NewQuery(tx.Model(&OrderBaseModels), queryOptions) |
| 80 | query.SetWhere(`"order_base".partner_id= ?`, "partnerId"). | 80 | query.SetWhere(`"order_base".partner_id= ?`, "partnerId"). |
| 81 | SetWhere(`"order_base".order_type= ?`, "orderType"). | 81 | SetWhere(`"order_base".order_type= ?`, "orderType"). |
| 82 | - SetWhere(`"order_base".create_time >= ?`, "beginTime"). | ||
| 83 | - SetWhere(`"order_base".create_time < ?`, "endTime"). | 82 | + SetWhere(`"order_base".sale_date >= ?`, "beginTime"). |
| 83 | + SetWhere(`"order_base".sale_date < ?`, "endTime"). | ||
| 84 | //SetWhere(`"order_base".is_disable = ?`, "isDisable"). | 84 | //SetWhere(`"order_base".is_disable = ?`, "isDisable"). |
| 85 | SetLimit(). | 85 | SetLimit(). |
| 86 | SetOrder(`order_base.create_time`, "sortByCreateTime"). | 86 | SetOrder(`order_base.create_time`, "sortByCreateTime"). |
| 87 | - SetOrder(`order_base.update_time`, "sortByUpdateTime") | 87 | + SetOrder(`order_base.update_time`, "sortByUpdateTime"). |
| 88 | + SetOrder(`order_base.sale_date`, "sortBySalesTime") | ||
| 88 | if v, ok := queryOptions["orderTypes"]; ok { | 89 | if v, ok := queryOptions["orderTypes"]; ok { |
| 89 | query.Where(`"order_base".order_type in (?)`, pg.In(v)) | 90 | query.Where(`"order_base".order_type in (?)`, pg.In(v)) |
| 90 | } | 91 | } |
| @@ -13,3 +13,25 @@ func GetDayEnd() time.Time { | @@ -13,3 +13,25 @@ func GetDayEnd() time.Time { | ||
| 13 | nextDay := t.AddDate(0, 0, 1) | 13 | nextDay := t.AddDate(0, 0, 1) |
| 14 | return nextDay | 14 | return nextDay |
| 15 | } | 15 | } |
| 16 | + | ||
| 17 | +//获取传入的时间所在月份的第一天,即某月第一天的0点。如传入time.Now(), 返回当前月份的第一天0点时间。 | ||
| 18 | +func GetFirstDateOfMonth(d time.Time) time.Time { | ||
| 19 | + d = d.AddDate(0, 0, -d.Day()+1) | ||
| 20 | + return GetZeroTime(d) | ||
| 21 | +} | ||
| 22 | + | ||
| 23 | +//获取传入的时间所在月份的最后一天,即某月最后一天的23:59:59。如传入time.Now(), 返回当前月份的最后一天的23:59:59。 | ||
| 24 | +func GetNextMonthFirstDay(d time.Time) time.Time { | ||
| 25 | + d = GetFirstDateOfMonth(d).AddDate(0, 1, 0) | ||
| 26 | + return GetZeroTime(d) | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +//获取某一天的0点时间 | ||
| 30 | +func GetZeroTime(d time.Time) time.Time { | ||
| 31 | + return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, time.Local) | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +//获取某一天的23点59分59秒 | ||
| 35 | +func GetNextDayZeroTime(d time.Time) time.Time { | ||
| 36 | + return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, 1) | ||
| 37 | +} |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | . "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/log" | 5 | . "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/log" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr/middleware" | 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr/middleware" |
| 7 | _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr/routers" | 7 | _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr/routers" |
| 8 | + "time" | ||
| 8 | ) | 9 | ) |
| 9 | 10 | ||
| 10 | func init() { | 11 | func init() { |
| @@ -15,4 +16,8 @@ func init() { | @@ -15,4 +16,8 @@ func init() { | ||
| 15 | 16 | ||
| 16 | beego.InsertFilter("/*", beego.BeforeExec, middleware.CreateRequstLogFilter(Logger)) | 17 | beego.InsertFilter("/*", beego.BeforeExec, middleware.CreateRequstLogFilter(Logger)) |
| 17 | beego.InsertFilter("/*", beego.AfterExec, middleware.CreateResponseLogFilter(Logger), false) | 18 | beego.InsertFilter("/*", beego.AfterExec, middleware.CreateResponseLogFilter(Logger), false) |
| 19 | + | ||
| 20 | + // 默认时区设置 | ||
| 21 | + timeLocal, _ := time.LoadLocation("Asia/Chongqing") | ||
| 22 | + time.Local = timeLocal | ||
| 18 | } | 23 | } |
| @@ -9,14 +9,15 @@ const ( | @@ -9,14 +9,15 @@ const ( | ||
| 9 | 9 | ||
| 10 | /*DividendStatistics 分红统计*/ | 10 | /*DividendStatistics 分红统计*/ |
| 11 | type DividendStatisticsRequest struct { | 11 | type DividendStatisticsRequest struct { |
| 12 | - StartTime int64 `json:"startTime" valid:"Required"` | ||
| 13 | - EndTime int64 `json:"endTime" valid:"Required"` | 12 | + StartTime int64 `json:"startTime"` |
| 13 | + EndTime int64 `json:"endTime"` | ||
| 14 | //分红类型(0累计分红、1分红支出) | 14 | //分红类型(0累计分红、1分红支出) |
| 15 | //DividendAction int `json:"dividendAction"` | 15 | //DividendAction int `json:"dividendAction"` |
| 16 | PartnerId int64 `json:"partnerId"` | 16 | PartnerId int64 `json:"partnerId"` |
| 17 | } | 17 | } |
| 18 | type DividendStatisticsResponse struct { | 18 | type DividendStatisticsResponse struct { |
| 19 | Statistics DividendStatistics `json:"statistics"` | 19 | Statistics DividendStatistics `json:"statistics"` |
| 20 | + Timestamp int64 `json:"timestamp"` | ||
| 20 | } | 21 | } |
| 21 | 22 | ||
| 22 | type DividendStatistics struct { | 23 | type DividendStatistics struct { |
| @@ -41,7 +42,7 @@ type DividendOrdersRequest struct { | @@ -41,7 +42,7 @@ type DividendOrdersRequest struct { | ||
| 41 | EndTime int64 `json:"endTime" valid:"Required"` | 42 | EndTime int64 `json:"endTime" valid:"Required"` |
| 42 | 43 | ||
| 43 | // 合作类型(空或不传,即所有类型) | 44 | // 合作类型(空或不传,即所有类型) |
| 44 | - JoinWays []*company.JoinWays `json:"joinWays"` | 45 | + JoinWays []*company.JoinWays `json:"joinWays"` |
| 45 | 46 | ||
| 46 | PageIndex int `json:"pageIndex,omitempty"` | 47 | PageIndex int `json:"pageIndex,omitempty"` |
| 47 | PageSize int `json:"pageSize,omitempty"` | 48 | PageSize int `json:"pageSize,omitempty"` |
| @@ -32,6 +32,7 @@ type OrderDetail struct { | @@ -32,6 +32,7 @@ type OrderDetail struct { | ||
| 32 | OrderStatus int `json:"orderStatus"` //订单状态 1.待支付 2.已支付 3.已支付退货 4待支付退货 | 32 | OrderStatus int `json:"orderStatus"` //订单状态 1.待支付 2.已支付 3.已支付退货 4待支付退货 |
| 33 | CreateTime int64 `json:"createTime"` | 33 | CreateTime int64 `json:"createTime"` |
| 34 | UpdateTime int64 `json:"updateTime"` | 34 | UpdateTime int64 `json:"updateTime"` |
| 35 | + SalesTime int64 `json:"salesTime"` // 销售日期 | ||
| 35 | OrderDistrict interface{} `json:"orderDistrict"` | 36 | OrderDistrict interface{} `json:"orderDistrict"` |
| 36 | Customer Customer `json:"customer"` | 37 | Customer Customer `json:"customer"` |
| 37 | Products interface{} `json:"products"` | 38 | Products interface{} `json:"products"` |
| @@ -87,14 +88,15 @@ type OrderListRequest struct { | @@ -87,14 +88,15 @@ type OrderListRequest struct { | ||
| 87 | PageSize int `json:"pageSize" valid:"Required"` | 88 | PageSize int `json:"pageSize" valid:"Required"` |
| 88 | OrderType int `json:"-"` | 89 | OrderType int `json:"-"` |
| 89 | OrderTypes []int `json:"-"` | 90 | OrderTypes []int `json:"-"` |
| 90 | - | ||
| 91 | - PartnerId int64 `json:"partnerId"` | ||
| 92 | - JoinWay int `json:"joinWay"` //合伙方式(0或不传,即所有合伙方式) | 91 | + IsToday bool `json:"isToday"` |
| 92 | + PartnerId int64 `json:"partnerId"` | ||
| 93 | + JoinWay int `json:"joinWay"` //合伙方式(0或不传,即所有合伙方式) | ||
| 93 | } | 94 | } |
| 94 | type OrderListResponse struct { | 95 | type OrderListResponse struct { |
| 95 | List []*OrderListItem `json:"list"` | 96 | List []*OrderListItem `json:"list"` |
| 96 | Statistics map[string]interface{} `json:"-"` | 97 | Statistics map[string]interface{} `json:"-"` |
| 97 | Total int `json:"total"` | 98 | Total int `json:"total"` |
| 99 | + Timestamp int64 `json:"timestamp"` | ||
| 98 | } | 100 | } |
| 99 | 101 | ||
| 100 | type OrderListItem struct { | 102 | type OrderListItem struct { |
| @@ -117,7 +119,9 @@ type OrderListItem struct { | @@ -117,7 +119,9 @@ type OrderListItem struct { | ||
| 117 | //订单金额 | 119 | //订单金额 |
| 118 | OrderAmount float64 `json:"orderAmount"` | 120 | OrderAmount float64 `json:"orderAmount"` |
| 119 | // 订单更新时间 | 121 | // 订单更新时间 |
| 120 | - UpdateTime int64 `json:"updateTime"` | 122 | + UpdateTime int64 `json:"updateTime"` |
| 123 | + //销售时间 | ||
| 124 | + SalesTime int64 `json:"salesTime"` | ||
| 121 | //我的分红 | 125 | //我的分红 |
| 122 | MyDividend float64 `json:"dividendReceivable"` | 126 | MyDividend float64 `json:"dividendReceivable"` |
| 123 | //是否已读(0未读,1已读) | 127 | //是否已读(0未读,1已读) |
-
请 注册 或 登录 后发表评论