作者 陈志颖

合并分支 'dev' 到 'test'

Dev



查看合并请求 !48
@@ -24,3 +24,4 @@ @@ -24,3 +24,4 @@
24 opp 24 opp
25 /vendor 25 /vendor
26 /*.exe~ 26 /*.exe~
  27 +logs
@@ -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请求
  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-----
  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,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: partner 17 k8s-app: partner
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,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
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: companyId
  5 + description: 公司id
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: deliveryCode
  5 + description: 交货编号
  6 + type:
  7 + primitive: string
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: orderCode
  5 + description: 订单编号
  6 + type:
  7 + primitive: string
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: orderId
  5 + description: 订单编号
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: orderType
  5 + description: 公司id
  6 + type:
  7 + primitive: int
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: partnerId
  5 + description: 订单对应的合伙人
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: salesmanBonusPercent
  5 + description: 业务员抽成比例
  6 + type:
  7 + primitive: float64
  1 +version: v1
  2 +kind: Project
  3 +metadata:
  4 + name: partner
  5 + description: 合伙人
  6 + version: 0.8.0
  7 + repository: gitlab.fjmaimaimai.com/mmm-go/partner
  8 + contact:
  9 + name: SteveChan
  10 + email: steve.d.chan@qq.com
不能预览此文件类型
@@ -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:
@@ -525,20 +530,22 @@ func CompaniesLoginByCredential(header *protocol.RequestHeader, request *protoco @@ -525,20 +530,22 @@ func CompaniesLoginByCredential(header *protocol.RequestHeader, request *protoco
525 // loginSvr 初始化 530 // loginSvr 初始化
526 _ = loginSvr.Init(claim.Phone) 531 _ = loginSvr.Init(claim.Phone)
527 532
528 - // 真实公司有效合伙人不存在,真实公司有效用户不存在,游客公司有效合伙人存在  
529 - //if len(loginSvr.IsRealPartnerInfo) == 0 && len(loginSvr.IsRealUser) == 0 && len(loginSvr.GuestPartnerInfoAvailable) > 0 {  
530 - // err = protocol.NewErrWithMessage(10008) //账号禁用, 抱歉,企业管理员未帮您开通权限。如需访问,请联系企业管理员  
531 - // return  
532 - //} else if len(loginSvr.IsRealPartnerInfo) == 0 && len(loginSvr.IsRealUser) == 0 && len(loginSvr.GuestPartnerInfoAvailable) == 0 {  
533 - // err = protocol.NewErrWithMessage(4140, err) // refreshToken过期,需要重新登录授权  
534 - // return  
535 - //} 533 + // 高管标志位初始化
  534 + _ = loginSvr.InitSenior(claim.Phone)
  535 +
  536 + // 合伙人标志位初始化
  537 + _ = loginSvr.InitPartner(claim.Phone)
  538 +
  539 + if len(loginSvr.PartnerInfo) == 0 && len(loginSvr.Users) == 0 {
  540 + err = protocol.NewErrWithMessage(4140, err)
  541 + return
  542 + }
536 543
537 rsp.Partner, _ = loginSvr.PartnerStaticInfo() 544 rsp.Partner, _ = loginSvr.PartnerStaticInfo()
538 rsp.Manager, _ = loginSvr.ManagerStaticInfo() 545 rsp.Manager, _ = loginSvr.ManagerStaticInfo()
539 546
540 if !loginSvr.HasAvailableCompany && !loginSvr.HasAvailableManagerCompany { 547 if !loginSvr.HasAvailableCompany && !loginSvr.HasAvailableManagerCompany {
541 - err = protocol.NewErrWithMessage(4140, err) //账号禁用,refreshToken过期,需要重新登录授权 548 + err = protocol.NewErrWithMessage(4140, err) //账号禁用
542 return 549 return
543 } 550 }
544 551
@@ -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 }
@@ -24,13 +24,13 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis @@ -24,13 +24,13 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis
24 }() 24 }()
25 25
26 // 事业分红统计-查询订单 26 // 事业分红统计-查询订单
27 - _, orderAll, e := OrderBaseResponsitory.Find(utils.ObjectJsonToMap(domain.OrderQueryOption{PartnerId: request.PartnerId, EndTime: time.Now(), SortByCreateTime: domain.DESC, OrderTypes: domain.UserOrderTypes(domain.Career)})) 27 + _, orderAll, e := OrderBaseResponsitory.Find(utils.ObjectJsonToMap(domain.OrderQueryOption{PartnerId: request.PartnerId, EndTime: time.Now(), SortBySalesTime: domain.DESC, OrderTypes: domain.UserOrderTypes(domain.Career)}))
28 if e != nil { 28 if e != nil {
29 log.Error(e) 29 log.Error(e)
30 } 30 }
31 var orderBetween []*domain.OrderBase 31 var orderBetween []*domain.OrderBase
32 for i := range orderAll { 32 for i := range orderAll {
33 - if orderAll[i].CreateTime.Unix() >= (request.StartTime/1000) && orderAll[i].CreateTime.Unix() < (request.EndTime/1000) { 33 + if orderAll[i].SaleDate.Unix() >= (request.StartTime/1000) && orderAll[i].SaleDate.Unix() < (request.EndTime/1000) {
34 orderBetween = append(orderBetween, orderAll[i]) 34 orderBetween = append(orderBetween, orderAll[i])
35 } 35 }
36 } 36 }
@@ -59,6 +59,9 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis @@ -59,6 +59,9 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis
59 Receivable: bonusAll.Receivable, 59 Receivable: bonusAll.Receivable,
60 Quarters: bonusQuarters, 60 Quarters: bonusQuarters,
61 } 61 }
  62 + if request.PageIndex == 0 {
  63 + rsp.Timestamp = time.Now().Unix() * 1000
  64 + }
62 65
63 err = transactionContext.CommitTransaction() 66 err = transactionContext.CommitTransaction()
64 return 67 return
@@ -82,7 +85,7 @@ func QuartersBonusStatics(orders []*domain.OrderBase, action int) (bonus []proto @@ -82,7 +85,7 @@ func QuartersBonusStatics(orders []*domain.OrderBase, action int) (bonus []proto
82 bonus = make([]protocol.Bonus, 4) 85 bonus = make([]protocol.Bonus, 4)
83 for i := range orders { 86 for i := range orders {
84 o := orders[i] 87 o := orders[i]
85 - quarter := quarter(o.CreateTime) 88 + quarter := quarter(o.SaleDate)
86 static := o.OrderBonusStatic() 89 static := o.OrderBonusStatic()
87 bonus[quarter].Receivable = utils.Decimal(bonus[quarter].Receivable + static.OrderTotalReceivable()) 90 bonus[quarter].Receivable = utils.Decimal(bonus[quarter].Receivable + static.OrderTotalReceivable())
88 bonus[quarter].Received = utils.Decimal(bonus[quarter].Received + static.OrderBonusReceive()) 91 bonus[quarter].Received = utils.Decimal(bonus[quarter].Received + static.OrderBonusReceive())
@@ -124,17 +127,18 @@ func OrderList(header *protocol.RequestHeader, request *protocol.DividendOrdersR @@ -124,17 +127,18 @@ func OrderList(header *protocol.RequestHeader, request *protocol.DividendOrdersR
124 rsp = &protocol.DividendOrdersResponse{List: make([]*protocol.DividendOrderListItem, 0)} 127 rsp = &protocol.DividendOrdersResponse{List: make([]*protocol.DividendOrderListItem, 0)}
125 128
126 count, orders, err = OrderDao.DividendOrders(&domain.DividendOrdersQueryOption{ 129 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, 130 + OrderTypes: domain.UserOrderTypes(domain.Career),
  131 + PartnerId: request.PartnerId,
  132 + DetailAction: request.DetailAction,
  133 + DividendAction: request.DividendAction,
  134 + StartTime: request.StartTime,
  135 + EndTime: request.EndTime,
  136 + Offset: request.PageIndex * request.PageSize,
  137 + Limit: request.PageSize,
135 //SortByUpdateTime: domain.DESC, 138 //SortByUpdateTime: domain.DESC,
136 - SortByCreateTime: domain.DESC,  
137 - JoinWays: request.JoinWays, 139 + //SortByCreateTime: domain.DESC,
  140 + SortBySalesTime: domain.DESC,
  141 + JoinWays: request.JoinWays,
138 }) 142 })
139 if err != nil { 143 if err != nil {
140 return 144 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),
@@ -195,10 +196,11 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r @@ -195,10 +196,11 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r
195 196
196 // 查询订单列表 197 // 查询订单列表
197 queryOption := &domain.OrderQueryOption{ 198 queryOption := &domain.OrderQueryOption{
198 - Limit: request.PageSize,  
199 - Offset: request.PageSize * request.PageIndex, 199 + Limit: request.PageSize,
  200 + Offset: request.PageSize * request.PageIndex,
200 //SortByUpdateTime: domain.DESC, 201 //SortByUpdateTime: domain.DESC,
201 - SortByCreateTime: domain.DESC, 202 + //SortByCreateTime: domain.DESC,
  203 + SortBySalesTime: domain.DESC,
202 PartnerId: request.PartnerId, 204 PartnerId: request.PartnerId,
203 PartnerCategoryId: request.JoinWay, 205 PartnerCategoryId: request.JoinWay,
204 OrderType: request.OrderType, 206 OrderType: request.OrderType,
@@ -210,6 +212,15 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r @@ -210,6 +212,15 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r
210 if request.EndTime > 0 { 212 if request.EndTime > 0 {
211 queryOption.EndTime = time.Unix(request.EndTime/1000, 0) 213 queryOption.EndTime = time.Unix(request.EndTime/1000, 0)
212 } 214 }
  215 + // 今日订单
  216 + if request.IsToday {
  217 + timeStr := time.Now().Format("2006-01-02")
  218 + t, _ := time.Parse("2006-01-02", timeStr)
  219 + beginTimeNum := t.Unix()
  220 + endTimeNum := beginTimeNum + 86400
  221 + queryOption.BeginTime = time.Unix(beginTimeNum, 0)
  222 + queryOption.EndTime = time.Unix(endTimeNum, 0)
  223 + }
213 total, orders, _ = OrderRepository.Find(utils.ObjectJsonToMap(queryOption)) 224 total, orders, _ = OrderRepository.Find(utils.ObjectJsonToMap(queryOption))
214 if len(orders) != 0 { 225 if len(orders) != 0 {
215 for i := range orders { 226 for i := range orders {
@@ -234,6 +245,7 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r @@ -234,6 +245,7 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r
234 PartnerCategoryId: request.JoinWay, 245 PartnerCategoryId: request.JoinWay,
235 }) 246 })
236 rsp.Total = cumulativeQuantity 247 rsp.Total = cumulativeQuantity
  248 + rsp.Timestamp = time.Now().Unix() * 1000
237 } 249 }
238 //【特殊处理2】 今天累计数量特殊处理 当前查询时间段内所有订单总数(复用rsp.Total字段) 250 //【特殊处理2】 今天累计数量特殊处理 当前查询时间段内所有订单总数(复用rsp.Total字段)
239 if request.StartTime > 0 && request.EndTime > 0 { 251 if request.StartTime > 0 && request.EndTime > 0 {
@@ -249,17 +261,18 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r @@ -249,17 +261,18 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r
249 func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem { 261 func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem {
250 bonusStatic := order.OrderBonusStatic() 262 bonusStatic := order.OrderBonusStatic()
251 return &protocol.OrderListItem{ 263 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, 264 + Id: order.Id,
  265 + OrderType: order.OrderType,
  266 + OrderNo: order.OrderCode,
  267 + DeliveryNo: order.DeliveryCode,
  268 + OrderDistrict: map[string]interface{}{
  269 + "id": order.RegionInfo.RegionId,
258 "name": order.RegionInfo.RegionName, 270 "name": order.RegionInfo.RegionName,
259 }, 271 },
260 - OrderAmount: order.PlanOrderAmount,  
261 - UpdateTime: order.UpdateTime.Unix() * 1000,  
262 - MyDividend: bonusStatic.OrderTotalReceivable(),  
263 - IsRead: order.IsRead(), 272 + OrderAmount: order.PlanOrderAmount,
  273 + UpdateTime: order.UpdateTime.Unix() * 1000,
  274 + SalesTime: order.SaleDate.Unix() * 1000,
  275 + MyDividend: bonusStatic.OrderTotalReceivable(),
  276 + IsRead: order.IsRead(),
264 } 277 }
265 } 278 }
@@ -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,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 //买家
@@ -105,10 +105,10 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption @@ -105,10 +105,10 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption
105 q.Where(`"order_base".partner_id=?`, option.PartnerId) 105 q.Where(`"order_base".partner_id=?`, option.PartnerId)
106 } 106 }
107 if option.StartTime > 0 { 107 if option.StartTime > 0 {
108 - q.Where(`"order_base".create_time >=?`, time.Unix(option.StartTime/1000, 0)) 108 + q.Where(`"order_base".sale_date >=?`, time.Unix(option.StartTime/1000, 0))
109 } 109 }
110 if option.EndTime > 0 { 110 if option.EndTime > 0 {
111 - q.Where(`"order_base".create_time <?`, time.Unix(option.EndTime/1000, 0)) 111 + q.Where(`"order_base".sale_date <?`, time.Unix(option.EndTime/1000, 0))
112 } 112 }
113 if len(option.JoinWays) > 0 { 113 if len(option.JoinWays) > 0 {
114 var joinWays []int64 114 var joinWays []int64
@@ -150,6 +150,9 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption @@ -150,6 +150,9 @@ func (dao *OrderBaseDao) DividendOrders(option *domain.DividendOrdersQueryOption
150 if len(option.SortByCreateTime) > 0 { 150 if len(option.SortByCreateTime) > 0 {
151 q.Order(fmt.Sprintf("order_base.create_time %v", option.SortByCreateTime)) 151 q.Order(fmt.Sprintf("order_base.create_time %v", option.SortByCreateTime))
152 } 152 }
  153 + if len(option.SortBySalesTime) > 0 {
  154 + q.Order(fmt.Sprintf("order_base.sale_date %v", option.SortBySalesTime))
  155 + }
153 count, err = q.Distinct().SelectAndCount() 156 count, err = q.Distinct().SelectAndCount()
154 for i := range orders { 157 for i := range orders {
155 var domainOrder *domain.OrderBase 158 var domainOrder *domain.OrderBase
@@ -25,12 +25,11 @@ type PgLoginService struct { @@ -25,12 +25,11 @@ type PgLoginService struct {
25 GuestPartnerInfo []*domain.PartnerInfo // 游客公司合伙人 25 GuestPartnerInfo []*domain.PartnerInfo // 游客公司合伙人
26 GuestPartnerInfoAvailable []*domain.PartnerInfo // 游客公司有效合伙人 26 GuestPartnerInfoAvailable []*domain.PartnerInfo // 游客公司有效合伙人
27 NormalPartnerInfo []*domain.PartnerInfo // 所有公司合伙人 27 NormalPartnerInfo []*domain.PartnerInfo // 所有公司合伙人
28 - IsRealPartnerInfo []*domain.PartnerInfo // 真实公司有效合伙人 28 + IsPartnerInfo []*domain.PartnerInfo // 真实公司有效合伙人
29 Users []*domain.Users // 所有公司有效用户 29 Users []*domain.Users // 所有公司有效用户
30 NormalUsers []*domain.Users // 所有公司用户 30 NormalUsers []*domain.Users // 所有公司用户
31 IsSenior []*domain.Users // 所有公司有效高管 31 IsSenior []*domain.Users // 所有公司有效高管
32 IsRealSenior []*domain.Users // 真实公司的有效高管 32 IsRealSenior []*domain.Users // 真实公司的有效高管
33 - IsRealUser []*domain.Users // 真实公司有效用户,有效高管和有效用户二者其中一个为空则非高管  
34 transactionContext *transaction.TransactionContext 33 transactionContext *transaction.TransactionContext
35 // 标识:登录的账号信息是否有可用的公司, true:有 false:没有 34 // 标识:登录的账号信息是否有可用的公司, true:有 false:没有
36 HasAvailableCompany bool // 是否有可访问的合伙公司 35 HasAvailableCompany bool // 是否有可访问的合伙公司
@@ -50,7 +49,7 @@ func (svr *PgLoginService) Init(phone string) (err error) { @@ -50,7 +49,7 @@ func (svr *PgLoginService) Init(phone string) (err error) {
50 // 所有公司有效合伙人 49 // 所有公司有效合伙人
51 _, svr.PartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC"}) 50 _, svr.PartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC"})
52 // 真实公司有效合伙人 51 // 真实公司有效合伙人
53 - _, svr.IsRealPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "isNot": constant.DEFAULT_GUEST_COMPANY}) 52 + _, svr.IsPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "isNot": constant.DEFAULT_GUEST_COMPANY})
54 // 游客公司合伙人 53 // 游客公司合伙人
55 _, svr.GuestPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "sortByCreateTime": "ASC", "companyId": constant.DEFAULT_GUEST_COMPANY}) 54 _, svr.GuestPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "sortByCreateTime": "ASC", "companyId": constant.DEFAULT_GUEST_COMPANY})
56 // 游客公司有效合伙人 55 // 游客公司有效合伙人
@@ -64,8 +63,6 @@ func (svr *PgLoginService) Init(phone string) (err error) { @@ -64,8 +63,6 @@ func (svr *PgLoginService) Init(phone string) (err error) {
64 _, svr.IsSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1}) 63 _, svr.IsSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1})
65 // 真实公司有效高管 64 // 真实公司有效高管
66 _, svr.IsRealSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1, "isNot": constant.DEFAULT_GUEST_COMPANY}) 65 _, svr.IsRealSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1, "isNot": constant.DEFAULT_GUEST_COMPANY})
67 - // 真实公司有效用户  
68 - _, svr.IsRealUser, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isNot": constant.DEFAULT_GUEST_COMPANY})  
69 66
70 return nil 67 return nil
71 } 68 }
@@ -101,7 +98,7 @@ func (svr *PgLoginService) InitPartner(phone string) (err error) { @@ -101,7 +98,7 @@ func (svr *PgLoginService) InitPartner(phone string) (err error) {
101 98
102 svr.Phone = phone 99 svr.Phone = phone
103 100
104 - _, svr.IsRealPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "isNot": constant.DEFAULT_GUEST_COMPANY}) 101 + _, svr.IsPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "isNot": constant.DEFAULT_GUEST_COMPANY})
105 102
106 return nil 103 return nil
107 } 104 }
@@ -362,7 +359,7 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) { @@ -362,7 +359,7 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) {
362 svr.HasAvailableManagerCompany = true 359 svr.HasAvailableManagerCompany = true
363 } 360 }
364 361
365 - if len(companys) > 1 || len(svr.IsRealPartnerInfo) > 0 { // 有真实合伙公司或高管公司时,过滤游客公司 362 + if len(companys) > 1 || len(svr.IsPartnerInfo) > 0 { // 有真实合伙公司或高管公司时,过滤游客公司
366 var companies = make([]protocol.CompanyBase, 0) 363 var companies = make([]protocol.CompanyBase, 0)
367 for _, company := range companys { 364 for _, company := range companys {
368 if company.Id != int64(constant.DEFAULT_GUEST_COMPANY) { 365 if company.Id != int64(constant.DEFAULT_GUEST_COMPANY) {
@@ -457,7 +454,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error { @@ -457,7 +454,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error {
457 isUserSenior bool 454 isUserSenior bool
458 ) 455 )
459 456
460 - partnerInfo, _ := PartnerInfoService.FindOne(map[string]interface{}{"account": phone, "isNot": constant.DEFAULT_GUEST_COMPANY}) // 合伙人在正常公司是否存在 457 + partnerInfo, errPartner := PartnerInfoService.FindOne(map[string]interface{}{"account": phone, "isNot": constant.DEFAULT_GUEST_COMPANY}) // 合伙人在正常公司是否存在
461 if partnerInfo == nil { 458 if partnerInfo == nil {
462 isPartner = false 459 isPartner = false
463 } else { 460 } else {
@@ -483,7 +480,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error { @@ -483,7 +480,7 @@ func (svr *PgLoginService) RegistryUser(phone string) error {
483 isGuestPartnerAvailable = true 480 isGuestPartnerAvailable = true
484 } 481 }
485 482
486 - user, _ := UsersRepository.FindOne(map[string]interface{}{"phone": phone, "deleteAtIsNull": true}) // 用户是否存在 483 + user, errUser := UsersRepository.FindOne(map[string]interface{}{"phone": phone, "deleteAtIsNull": true}) // 用户是否存在
487 if user == nil { 484 if user == nil {
488 isUser = false 485 isUser = false
489 } else { 486 } else {
@@ -574,27 +571,27 @@ func (svr *PgLoginService) RegistryUser(phone string) error { @@ -574,27 +571,27 @@ func (svr *PgLoginService) RegistryUser(phone string) error {
574 571
575 // 合伙人不存在、用户存在、非高管(普通用户)-> 注册用户 572 // 合伙人不存在、用户存在、非高管(普通用户)-> 注册用户
576 // 合伙人不存在、用户不存在(游客)-> 注册用户 573 // 合伙人不存在、用户不存在(游客)-> 注册用户
577 - //if errPartner != nil && errUser == nil && errSenior == nil || errPartner != nil && errUser != nil {  
578 - // id := time.Now().Unix()  
579 - // errPartner = svr.transactionContext.PgDd.Insert(&models.PartnerInfo{  
580 - // Id: id,  
581 - // CompanyId: int64(constant.DEFAULT_GUEST_COMPANY),  
582 - // PartnerName: phone,  
583 - // Account: phone,  
584 - // Password: "7c4a8d09ca3762af61e59520943dc26494f8941b",  
585 - // Status: 1,  
586 - // PartnerCategory: 1,  
587 - // RegionInfo: &domain.RegionInfo{  
588 - // RegionName: "客户区域",  
589 - // RegionId: 0,  
590 - // },  
591 - // CooperateTime: time.Now(),  
592 - // CreateAt: time.Now(),  
593 - // UpdateAt: time.Now(),  
594 - // PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}},  
595 - // Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}},  
596 - // })  
597 - //} 574 + if 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 + }
598 595
599 return errPartner 596 return errPartner
600 } 597 }
@@ -630,7 +627,7 @@ func (svr *PgLoginService) RegistryGuest(phone string) error { @@ -630,7 +627,7 @@ func (svr *PgLoginService) RegistryGuest(phone string) error {
630 CooperateTime: time.Now(), 627 CooperateTime: time.Now(),
631 CreateAt: time.Now(), 628 CreateAt: time.Now(),
632 UpdateAt: time.Now(), 629 UpdateAt: time.Now(),
633 - PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1}}, 630 + PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}},
634 Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, 631 Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}},
635 }) 632 })
636 } 633 }
@@ -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 }
@@ -2,5 +2,6 @@ package company @@ -2,5 +2,6 @@ package company
2 2
3 type PartnersResponse struct { 3 type PartnersResponse struct {
4 // 唯一标识 4 // 唯一标识
5 - Partners interface{} `json:"partners"` 5 + Partners interface{} `json:"partners"`
  6 + Timestamp int64 `json:"timestamp"`
6 } 7 }
@@ -14,9 +14,11 @@ type DividendStatisticsRequest struct { @@ -14,9 +14,11 @@ type DividendStatisticsRequest struct {
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 + PageIndex int `json:"pageIndex"`
17 } 18 }
18 type DividendStatisticsResponse struct { 19 type DividendStatisticsResponse struct {
19 Statistics DividendStatistics `json:"statistics"` 20 Statistics DividendStatistics `json:"statistics"`
  21 + Timestamp int64 `json:"timestamp"`
20 } 22 }
21 23
22 type DividendStatistics struct { 24 type DividendStatistics struct {
@@ -41,7 +43,7 @@ type DividendOrdersRequest struct { @@ -41,7 +43,7 @@ type DividendOrdersRequest struct {
41 EndTime int64 `json:"endTime" valid:"Required"` 43 EndTime int64 `json:"endTime" valid:"Required"`
42 44
43 // 合作类型(空或不传,即所有类型) 45 // 合作类型(空或不传,即所有类型)
44 - JoinWays []*company.JoinWays `json:"joinWays"` 46 + JoinWays []*company.JoinWays `json:"joinWays"`
45 47
46 PageIndex int `json:"pageIndex,omitempty"` 48 PageIndex int `json:"pageIndex,omitempty"`
47 PageSize int `json:"pageSize,omitempty"` 49 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已读)