作者 陈志颖

合并分支 '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 14 +EXPOSE 8082 443
15 ENTRYPOINT ["./partner"] 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,26 +403,31 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom @@ -403,26 +403,31 @@ 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 - }  
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) { 427 + if loginSvr.ManagerLogin(request.Phone, request.Password) != nil && loginSvr.PartnerLogin(request.Phone, request.Password) != nil {
421 err = protocol.NewCustomMessage(1, "密码输入有误!") 428 err = protocol.NewCustomMessage(1, "密码输入有误!")
422 return 429 return
423 } 430 }
424 - }  
425 - }  
426 break 431 break
427 case protocol.LoginBySmsCode: 432 case protocol.LoginBySmsCode:
428 if _, err = CheckSmsCode(request.Phone, request.Captcha); err != nil { 433 if _, err = CheckSmsCode(request.Phone, request.Captcha); err != nil {
@@ -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())
@@ -133,7 +136,8 @@ func OrderList(header *protocol.RequestHeader, request *protocol.DividendOrdersR @@ -133,7 +136,8 @@ func OrderList(header *protocol.RequestHeader, request *protocol.DividendOrdersR
133 Offset: request.PageIndex * request.PageSize, 136 Offset: request.PageIndex * request.PageSize,
134 Limit: request.PageSize, 137 Limit: request.PageSize,
135 //SortByUpdateTime: domain.DESC, 138 //SortByUpdateTime: domain.DESC,
136 - SortByCreateTime: domain.DESC, 139 + //SortByCreateTime: domain.DESC,
  140 + SortBySalesTime: domain.DESC,
137 JoinWays: request.JoinWays, 141 JoinWays: request.JoinWays,
138 }) 142 })
139 if err != nil { 143 if err != nil {
@@ -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),
@@ -198,7 +199,8 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r @@ -198,7 +199,8 @@ func List(header *protocol.RequestHeader, request *protocol.OrderListRequest) (r
198 Limit: request.PageSize, 199 Limit: request.PageSize,
199 Offset: request.PageSize * request.PageIndex, 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 {
@@ -259,6 +271,7 @@ func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem @@ -259,6 +271,7 @@ func DomainOrderToOrderListItem(order *domain.OrderBase) *protocol.OrderListItem
259 }, 271 },
260 OrderAmount: order.PlanOrderAmount, 272 OrderAmount: order.PlanOrderAmount,
261 UpdateTime: order.UpdateTime.Unix() * 1000, 273 UpdateTime: order.UpdateTime.Unix() * 1000,
  274 + SalesTime: order.SaleDate.Unix() * 1000,
262 MyDividend: bonusStatic.OrderTotalReceivable(), 275 MyDividend: bonusStatic.OrderTotalReceivable(),
263 IsRead: order.IsRead(), 276 IsRead: order.IsRead(),
264 } 277 }
@@ -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,6 +159,7 @@ type OrderQueryOption struct { @@ -157,6 +159,7 @@ 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"`
@@ -175,6 +178,7 @@ type DividendOrdersQueryOption struct { @@ -175,6 +178,7 @@ type DividendOrdersQueryOption struct {
175 Limit int `json:"limit,omitempty"` 178 Limit int `json:"limit,omitempty"`
176 SortByUpdateTime string `json:"sortByUpdateTime,omitempty"` 179 SortByUpdateTime string `json:"sortByUpdateTime,omitempty"`
177 SortByCreateTime string `json:"sortByCreateTime,omitempty"` 180 SortByCreateTime string `json:"sortByCreateTime,omitempty"`
  181 + SortBySalesTime string `json:"sortBySalesTime,omitempty"`
178 JoinWays []*company.JoinWays `json:"joinWays,omitempty"` // 合伙类型 182 JoinWays []*company.JoinWays `json:"joinWays,omitempty"` // 合伙类型
179 } 183 }
180 184
@@ -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 }
@@ -3,4 +3,5 @@ package company @@ -3,4 +3,5 @@ package company
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 {
@@ -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,7 +88,7 @@ type OrderListRequest struct { @@ -87,7 +88,7 @@ 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 + IsToday bool `json:"isToday"`
91 PartnerId int64 `json:"partnerId"` 92 PartnerId int64 `json:"partnerId"`
92 JoinWay int `json:"joinWay"` //合伙方式(0或不传,即所有合伙方式) 93 JoinWay int `json:"joinWay"` //合伙方式(0或不传,即所有合伙方式)
93 } 94 }
@@ -95,6 +96,7 @@ type OrderListResponse struct { @@ -95,6 +96,7 @@ 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 {
@@ -118,6 +120,8 @@ type OrderListItem struct { @@ -118,6 +120,8 @@ type OrderListItem struct {
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已读)