合并分支 'test' 到 'master'
Test 查看合并请求 !65
正在显示
28 个修改的文件
包含
517 行增加
和
24 行删除
.air.toml
0 → 100644
| 1 | +# Config file for [Air](https://github.com/cosmtrek/air) in TOML format | ||
| 2 | + | ||
| 3 | +# Working directory | ||
| 4 | +# . or absolute path, please note that the directories following must be under root. | ||
| 5 | +root = "." | ||
| 6 | +tmp_dir = "tmp" | ||
| 7 | + | ||
| 8 | +[build] | ||
| 9 | +# Just plain old shell command. You could use `make` as well. | ||
| 10 | +cmd = "go build -o ./tmp/main ." | ||
| 11 | +# Binary file yields from `cmd`. | ||
| 12 | +bin = "tmp/main" | ||
| 13 | +# Customize binary. | ||
| 14 | +full_bin = "APP_ENV=dev APP_USER=air ./tmp/main" | ||
| 15 | +# Watch these filename extensions. | ||
| 16 | +include_ext = ["go", "tpl", "tmpl", "html"] | ||
| 17 | +# Ignore these filename extensions or directories. | ||
| 18 | +exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"] | ||
| 19 | +# Watch these directories if you specified. | ||
| 20 | +include_dir = [] | ||
| 21 | +# Exclude files. | ||
| 22 | +exclude_file = [] | ||
| 23 | +# Exclude unchanged files. | ||
| 24 | +exclude_unchanged = true | ||
| 25 | +# This log file places in your tmp_dir. | ||
| 26 | +log = "air.log" | ||
| 27 | +# It's not necessary to trigger build each time file changes if it's too frequent. | ||
| 28 | +delay = 1000 # ms | ||
| 29 | +# Stop running old binary when build errors occur. | ||
| 30 | +stop_on_error = true | ||
| 31 | +# Send Interrupt signal before killing process (windows does not support this feature) | ||
| 32 | +send_interrupt = false | ||
| 33 | +# Delay after sending Interrupt signal | ||
| 34 | +kill_delay = 500 # ms | ||
| 35 | + | ||
| 36 | +[log] | ||
| 37 | +# Show log time | ||
| 38 | +time = false | ||
| 39 | + | ||
| 40 | +[color] | ||
| 41 | +# Customize each part's color. If no color found, use the raw app log. | ||
| 42 | +main = "magenta" | ||
| 43 | +watcher = "cyan" | ||
| 44 | +build = "yellow" | ||
| 45 | +runner = "green" | ||
| 46 | + | ||
| 47 | +[misc] | ||
| 48 | +# Delete tmp directory on exit | ||
| 49 | +clean_on_exit = true |
| @@ -81,7 +81,7 @@ spec: | @@ -81,7 +81,7 @@ spec: | ||
| 81 | - name: ABILITY_SERVICE_HOST | 81 | - name: ABILITY_SERVICE_HOST |
| 82 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" | 82 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" |
| 83 | - name: MMM_OPEN_API_SERVICE_HOST | 83 | - name: MMM_OPEN_API_SERVICE_HOST |
| 84 | - value: "http://mmm-open-api-dev.fjmaimaimai.com" | 84 | + value: "https://mmm-open-api-dev.fjmaimaimai.com" |
| 85 | - name: UCENTER_SERVICE_HOST | 85 | - name: UCENTER_SERVICE_HOST |
| 86 | value: "https://suplus-ucenter-dev.fjmaimaimai.com" | 86 | value: "https://suplus-ucenter-dev.fjmaimaimai.com" |
| 87 | - name: BUSINESS_ADMIN_SERVICE_HOST | 87 | - name: BUSINESS_ADMIN_SERVICE_HOST |
| @@ -81,7 +81,7 @@ spec: | @@ -81,7 +81,7 @@ spec: | ||
| 81 | - name: ABILITY_SERVICE_HOST | 81 | - name: ABILITY_SERVICE_HOST |
| 82 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" | 82 | value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" |
| 83 | - name: MMM_OPEN_API_SERVICE_HOST | 83 | - name: MMM_OPEN_API_SERVICE_HOST |
| 84 | - value: "http://mmm-open-api-dev.fjmaimaimai.com" | 84 | + value: "https://mmm-open-api-dev.fjmaimaimai.com" |
| 85 | - name: UCENTER_SERVICE_HOST | 85 | - name: UCENTER_SERVICE_HOST |
| 86 | value: "https://suplus-ucenter-test.fjmaimaimai.com" | 86 | value: "https://suplus-ucenter-test.fjmaimaimai.com" |
| 87 | - name: BUSINESS_ADMIN_SERVICE_HOST | 87 | - name: BUSINESS_ADMIN_SERVICE_HOST |
| @@ -4,12 +4,24 @@ go 1.14 | @@ -4,12 +4,24 @@ go 1.14 | ||
| 4 | 4 | ||
| 5 | require ( | 5 | require ( |
| 6 | github.com/Shopify/sarama v1.26.4 | 6 | github.com/Shopify/sarama v1.26.4 |
| 7 | + github.com/ajg/form v1.5.1 // indirect | ||
| 7 | github.com/astaxie/beego v1.12.1 | 8 | github.com/astaxie/beego v1.12.1 |
| 8 | github.com/dgrijalva/jwt-go v3.2.0+incompatible | 9 | github.com/dgrijalva/jwt-go v3.2.0+incompatible |
| 10 | + github.com/gavv/httpexpect v2.0.0+incompatible | ||
| 9 | github.com/gin-gonic/gin v1.5.0 | 11 | github.com/gin-gonic/gin v1.5.0 |
| 10 | github.com/go-pg/pg/v10 v10.0.0-beta.2 | 12 | github.com/go-pg/pg/v10 v10.0.0-beta.2 |
| 13 | + github.com/imkira/go-interpol v1.1.0 // indirect | ||
| 11 | github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 | 14 | github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 |
| 15 | + github.com/moul/http2curl v1.0.0 // indirect | ||
| 16 | + github.com/onsi/ginkgo v1.15.0 | ||
| 17 | + github.com/onsi/gomega v1.10.5 | ||
| 18 | + github.com/sergi/go-diff v1.1.0 // indirect | ||
| 12 | github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect | 19 | github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect |
| 13 | github.com/shopspring/decimal v1.2.0 | 20 | github.com/shopspring/decimal v1.2.0 |
| 14 | github.com/tiptok/gocomm v1.0.5 | 21 | github.com/tiptok/gocomm v1.0.5 |
| 22 | + github.com/valyala/fasthttp v1.19.0 // indirect | ||
| 23 | + github.com/xeipuuv/gojsonschema v1.2.0 // indirect | ||
| 24 | + github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect | ||
| 25 | + github.com/yudai/gojsondiff v1.0.0 // indirect | ||
| 26 | + github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect | ||
| 15 | ) | 27 | ) |
| @@ -302,7 +302,13 @@ func UCenterRevoke(header *protocol.RequestHeader, userId int64) (rsp *protocol. | @@ -302,7 +302,13 @@ func UCenterRevoke(header *protocol.RequestHeader, userId int64) (rsp *protocol. | ||
| 302 | return | 302 | return |
| 303 | } | 303 | } |
| 304 | 304 | ||
| 305 | -// 企业平台-密码校验 | 305 | +/** |
| 306 | + * @Author SteveChan | ||
| 307 | + * @Description 企业平台-密码登录校验 | ||
| 308 | + * @Date 11:06 2021/2/5 | ||
| 309 | + * @Param | ||
| 310 | + * @return | ||
| 311 | + **/ | ||
| 306 | func PasswordLogin(header *protocol.RequestHeader, request *protocol.LoginRequest) (v interface{}, err error) { | 312 | func PasswordLogin(header *protocol.RequestHeader, request *protocol.LoginRequest) (v interface{}, err error) { |
| 307 | var ( | 313 | var ( |
| 308 | transactionContext, _ = factory.CreateTransactionContext(nil) | 314 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| @@ -346,7 +352,7 @@ func PasswordLogin(header *protocol.RequestHeader, request *protocol.LoginReques | @@ -346,7 +352,7 @@ func PasswordLogin(header *protocol.RequestHeader, request *protocol.LoginReques | ||
| 346 | 352 | ||
| 347 | /** | 353 | /** |
| 348 | * @Author SteveChan | 354 | * @Author SteveChan |
| 349 | - * @Description // 企业平台-多公司登录,判断是否高管 | 355 | + * @Description //TODO 企业平台-多公司登录,判断是否高管,优化游客登录 |
| 350 | * @Date 15:01 2021/1/12 | 356 | * @Date 15:01 2021/1/12 |
| 351 | * @Param | 357 | * @Param |
| 352 | * @return | 358 | * @return |
| @@ -369,19 +375,19 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | @@ -369,19 +375,19 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | ||
| 369 | 375 | ||
| 370 | rsp := &protocolx.CenterCompanysResponse{} | 376 | rsp := &protocolx.CenterCompanysResponse{} |
| 371 | 377 | ||
| 372 | - // 启动事务 | ||
| 373 | if err = transactionContext.StartTransaction(); err != nil { | 378 | if err = transactionContext.StartTransaction(); err != nil { |
| 374 | log.Error(err) | 379 | log.Error(err) |
| 375 | return nil, err | 380 | return nil, err |
| 376 | } | 381 | } |
| 377 | 382 | ||
| 378 | defer func() { | 383 | defer func() { |
| 379 | - transactionContext.RollbackTransaction() | 384 | + _ = transactionContext.RollbackTransaction() |
| 380 | }() | 385 | }() |
| 381 | 386 | ||
| 382 | - // 通过密码或校验码登录的普通用户或通过校验码登录的游客,注册一个账号到配置的公司去 | 387 | + //TODO 通过密码或校验码登录的普通用户或通过校验码登录的游客,注册一个账号到配置的公司去 |
| 383 | if request.GrantType == protocol.LoginBySmsCode || request.GrantType == protocol.LoginByPassword { | 388 | if request.GrantType == protocol.LoginBySmsCode || request.GrantType == protocol.LoginByPassword { |
| 384 | userErr := loginSvr.RegistryGuest(request.Phone) | 389 | userErr := loginSvr.RegistryGuest(request.Phone) |
| 390 | + //userErr := loginSvr.OperateGuest(request.Phone) | ||
| 385 | if userErr != nil { | 391 | if userErr != nil { |
| 386 | log.Error(userErr) | 392 | log.Error(userErr) |
| 387 | } | 393 | } |
| @@ -490,7 +496,7 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | @@ -490,7 +496,7 @@ func CompaniesLogin(header *protocol.RequestHeader, request *protocolx.CenterCom | ||
| 490 | 496 | ||
| 491 | /** | 497 | /** |
| 492 | * @Author SteveChan | 498 | * @Author SteveChan |
| 493 | - * @Description // 企业平台-多公司登录 - 通过凭证,判断是否高管 | 499 | + * @Description //TODO 企业平台-多公司登录 - 通过凭证,判断是否高管 |
| 494 | * @Date 15:00 2021/1/12 | 500 | * @Date 15:00 2021/1/12 |
| 495 | * @Param | 501 | * @Param |
| 496 | * @return | 502 | * @return |
| @@ -555,7 +561,7 @@ func CompaniesLoginByCredential(header *protocol.RequestHeader, request *protoco | @@ -555,7 +561,7 @@ func CompaniesLoginByCredential(header *protocol.RequestHeader, request *protoco | ||
| 555 | 561 | ||
| 556 | /** | 562 | /** |
| 557 | * @Author SteveChan | 563 | * @Author SteveChan |
| 558 | - * @Description //TODO 登录 | 564 | + * @Description 登录 |
| 559 | * @Date 15:05 2021/1/15 | 565 | * @Date 15:05 2021/1/15 |
| 560 | * @Param | 566 | * @Param |
| 561 | * @return | 567 | * @return |
| @@ -575,7 +581,7 @@ func LoginV2(header *protocol.RequestHeader, request *protocol.LoginRequestV2) ( | @@ -575,7 +581,7 @@ func LoginV2(header *protocol.RequestHeader, request *protocol.LoginRequestV2) ( | ||
| 575 | return nil, err | 581 | return nil, err |
| 576 | } | 582 | } |
| 577 | defer func() { | 583 | defer func() { |
| 578 | - transactionContext.RollbackTransaction() | 584 | + _ = transactionContext.RollbackTransaction() |
| 579 | }() | 585 | }() |
| 580 | if claim, err = utils.ParseJWTToken(request.Credentials); err != nil { | 586 | if claim, err = utils.ParseJWTToken(request.Credentials); err != nil { |
| 581 | err = protocol.NewErrWithMessage(4140, err) | 587 | err = protocol.NewErrWithMessage(4140, err) |
| @@ -66,6 +66,7 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | @@ -66,6 +66,7 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis | ||
| 66 | //if request.EndTime > last.Unix()*1000 { | 66 | //if request.EndTime > last.Unix()*1000 { |
| 67 | // request.EndTime = last.Unix() * 1000 | 67 | // request.EndTime = last.Unix() * 1000 |
| 68 | //} | 68 | //} |
| 69 | + | ||
| 69 | fmt.Print("StartTime: ", request.StartTime, "\n") | 70 | fmt.Print("StartTime: ", request.StartTime, "\n") |
| 70 | fmt.Print("EndTime: ", request.EndTime, "\n") | 71 | fmt.Print("EndTime: ", request.EndTime, "\n") |
| 71 | 72 |
| @@ -15,7 +15,7 @@ var MMM_SMS_SERVICE_HOST = "https://sms.fjmaimaimai.com:9897" | @@ -15,7 +15,7 @@ var MMM_SMS_SERVICE_HOST = "https://sms.fjmaimaimai.com:9897" | ||
| 15 | var UCENTER_SERVICE_HOST = "https://suplus-ucenter-test.fjmaimaimai.com" | 15 | var UCENTER_SERVICE_HOST = "https://suplus-ucenter-test.fjmaimaimai.com" |
| 16 | var UCENTER_APP_KEY = "0c2c2a23dfc64ae230f5c54ab243ab52" | 16 | var UCENTER_APP_KEY = "0c2c2a23dfc64ae230f5c54ab243ab52" |
| 17 | 17 | ||
| 18 | -var BUSINESS_ADMIN_SERVICE_HOST = "http://suplus-business-admin-test.fjmaimaimai.com" | 18 | +var BUSINESS_ADMIN_SERVICE_HOST = "https://suplus-business-admin-test.fjmaimaimai.com" |
| 19 | var BUSINESS_ADMIN_PLATFORM_ID = "25" //合伙人模块 | 19 | var BUSINESS_ADMIN_PLATFORM_ID = "25" //合伙人模块 |
| 20 | 20 | ||
| 21 | var DEFAULT_GUEST_COMPANY int = 358 | 21 | var DEFAULT_GUEST_COMPANY int = 358 |
| @@ -48,20 +48,23 @@ func (svr *PgLoginService) Init(phone string) (err error) { | @@ -48,20 +48,23 @@ func (svr *PgLoginService) Init(phone string) (err error) { | ||
| 48 | _, svr.NormalPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "sortByCreateTime": "ASC"}) | 48 | _, svr.NormalPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "sortByCreateTime": "ASC"}) |
| 49 | // 所有公司有效合伙人 | 49 | // 所有公司有效合伙人 |
| 50 | _, 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"}) |
| 51 | + | ||
| 51 | // 真实公司有效合伙人 | 52 | // 真实公司有效合伙人 |
| 52 | _, svr.IsPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "isNot": constant.DEFAULT_GUEST_COMPANY}) | 53 | _, svr.IsPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "isNot": constant.DEFAULT_GUEST_COMPANY}) |
| 54 | + | ||
| 53 | // 游客公司合伙人 | 55 | // 游客公司合伙人 |
| 54 | _, svr.GuestPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "sortByCreateTime": "ASC", "companyId": constant.DEFAULT_GUEST_COMPANY}) | 56 | _, svr.GuestPartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "sortByCreateTime": "ASC", "companyId": constant.DEFAULT_GUEST_COMPANY}) |
| 55 | // 游客公司有效合伙人 | 57 | // 游客公司有效合伙人 |
| 56 | _, svr.GuestPartnerInfoAvailable, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "companyId": constant.DEFAULT_GUEST_COMPANY}) | 58 | _, svr.GuestPartnerInfoAvailable, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC", "companyId": constant.DEFAULT_GUEST_COMPANY}) |
| 57 | 59 | ||
| 58 | - // 所有公司用户 | 60 | + // 所有公司非删除用户 |
| 59 | _, svr.NormalUsers, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "sortByCreateTime": "ASC", "deleteAtIsNull": true}) | 61 | _, svr.NormalUsers, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "sortByCreateTime": "ASC", "deleteAtIsNull": true}) |
| 60 | - // 所有公司有效用户 | 62 | + // 所有公司非删除非禁用用户 |
| 61 | _, svr.Users, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true}) | 63 | _, svr.Users, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true}) |
| 62 | // 所有公司有效高管 | 64 | // 所有公司有效高管 |
| 63 | _, svr.IsSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1}) | 65 | _, svr.IsSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1}) |
| 64 | - // 真实公司有效高管 | 66 | + |
| 67 | + // 真实公司非禁用非删除高管 | ||
| 65 | _, svr.IsRealSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1, "isNot": constant.DEFAULT_GUEST_COMPANY}) | 68 | _, svr.IsRealSenior, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC", "deleteAtIsNull": true, "isSenior": 1, "isNot": constant.DEFAULT_GUEST_COMPANY}) |
| 66 | 69 | ||
| 67 | return nil | 70 | return nil |
| @@ -576,8 +579,8 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | @@ -576,8 +579,8 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | ||
| 576 | CooperateTime: time.Now(), | 579 | CooperateTime: time.Now(), |
| 577 | CreateAt: time.Now(), | 580 | CreateAt: time.Now(), |
| 578 | UpdateAt: time.Now(), | 581 | UpdateAt: time.Now(), |
| 579 | - PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}}, | ||
| 580 | - Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, | 582 | + PartnerCategoryInfos: []*domain.PartnerCategoryInfo{{Id: 1, Code: phone}}, |
| 583 | + Salesman: []*domain.Salesman{{Name: phone, Telephone: phone}}, | ||
| 581 | }) | 584 | }) |
| 582 | } | 585 | } |
| 583 | 586 | ||
| @@ -600,14 +603,74 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | @@ -600,14 +603,74 @@ func (svr *PgLoginService) RegistryUser(phone string) error { | ||
| 600 | CooperateTime: time.Now(), | 603 | CooperateTime: time.Now(), |
| 601 | CreateAt: time.Now(), | 604 | CreateAt: time.Now(), |
| 602 | UpdateAt: time.Now(), | 605 | UpdateAt: time.Now(), |
| 603 | - PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}}, | ||
| 604 | - Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, | 606 | + PartnerCategoryInfos: []*domain.PartnerCategoryInfo{{Id: 1, Code: phone}}, |
| 607 | + Salesman: []*domain.Salesman{{Name: phone, Telephone: phone}}, | ||
| 605 | }) | 608 | }) |
| 606 | } | 609 | } |
| 607 | 610 | ||
| 608 | return errPartner | 611 | return errPartner |
| 609 | } | 612 | } |
| 610 | 613 | ||
| 614 | +/** | ||
| 615 | + * @Author SteveChan | ||
| 616 | + * @Description //TODO 操作游客 | ||
| 617 | + * @Date 15:20 2021/2/7 | ||
| 618 | + * @Param | ||
| 619 | + * @return | ||
| 620 | + **/ | ||
| 621 | +func (svr *PgLoginService) OperateGuest(phone string) error { | ||
| 622 | + var ( | ||
| 623 | + PartnerInfoService, _ = repository.NewPartnerInfoRepository(svr.transactionContext) | ||
| 624 | + UsersRepository, _ = repository.NewUsersRepository(svr.transactionContext) | ||
| 625 | + ) | ||
| 626 | + | ||
| 627 | + // 真实公司检索合伙人身份(账号未禁用) | ||
| 628 | + partnerInfo, errPartner := PartnerInfoService.FindOne(map[string]interface{}{"account": phone, "status": 1, "isNot": constant.DEFAULT_GUEST_COMPANY}) | ||
| 629 | + | ||
| 630 | + // 真实公司检索用户身份(账号未删除且是高管) | ||
| 631 | + user, errUser := UsersRepository.FindOne(map[string]interface{}{"phone": phone, "isSenior": 1, "deleteAtIsNull": true, "isNot": constant.DEFAULT_GUEST_COMPANY}) | ||
| 632 | + | ||
| 633 | + // 存在合伙人或者用户身份,不进行游客注册操作 | ||
| 634 | + if partnerInfo != nil || user != nil { | ||
| 635 | + return nil | ||
| 636 | + } | ||
| 637 | + | ||
| 638 | + if errUser != nil && errPartner != nil { // 合伙人身份和用户身份均不存在,注册游客合伙人 | ||
| 639 | + id := time.Now().Unix() | ||
| 640 | + _, errInsert := svr.transactionContext.PgDd.Model(models.PartnerInfo{ | ||
| 641 | + Id: id, | ||
| 642 | + CompanyId: int64(constant.DEFAULT_GUEST_COMPANY), | ||
| 643 | + PartnerName: phone, | ||
| 644 | + Account: phone, | ||
| 645 | + Password: "7c4a8d09ca3762af61e59520943dc26494f8941b", | ||
| 646 | + Status: 1, | ||
| 647 | + PartnerCategory: 1, | ||
| 648 | + RegionInfo: &domain.RegionInfo{ | ||
| 649 | + RegionName: "客户区域", | ||
| 650 | + RegionId: 0, | ||
| 651 | + }, | ||
| 652 | + CooperateTime: time.Now(), | ||
| 653 | + CreateAt: time.Now(), | ||
| 654 | + UpdateAt: time.Now(), | ||
| 655 | + PartnerCategoryInfos: []*domain.PartnerCategoryInfo{{Id: 1, Code: phone}}, | ||
| 656 | + Salesman: []*domain.Salesman{{Name: phone, Telephone: phone}}, | ||
| 657 | + }).Insert() | ||
| 658 | + if errInsert != nil { | ||
| 659 | + return errInsert | ||
| 660 | + } | ||
| 661 | + } else { // 真实公司存在合伙人或者高管用户,删除游客合伙人 | ||
| 662 | + _, errDelete := svr.transactionContext.PgDd.Model((*models.PartnerInfo)(nil)). | ||
| 663 | + Where("account = ?", phone). | ||
| 664 | + Where("company_id = ?", constant.DEFAULT_GUEST_COMPANY). | ||
| 665 | + Delete() | ||
| 666 | + if errDelete != nil { | ||
| 667 | + return errDelete | ||
| 668 | + } | ||
| 669 | + } | ||
| 670 | + | ||
| 671 | + return nil | ||
| 672 | +} | ||
| 673 | + | ||
| 611 | // 注册游客到指定的公司 | 674 | // 注册游客到指定的公司 |
| 612 | func (svr *PgLoginService) RegistryGuest(phone string) error { | 675 | func (svr *PgLoginService) RegistryGuest(phone string) error { |
| 613 | var ( | 676 | var ( |
| @@ -622,6 +685,7 @@ func (svr *PgLoginService) RegistryGuest(phone string) error { | @@ -622,6 +685,7 @@ func (svr *PgLoginService) RegistryGuest(phone string) error { | ||
| 622 | return nil | 685 | return nil |
| 623 | } | 686 | } |
| 624 | 687 | ||
| 688 | + // 注册用户 | ||
| 625 | if errUser != nil && errPartner != nil { | 689 | if errUser != nil && errPartner != nil { |
| 626 | id := time.Now().Unix() | 690 | id := time.Now().Unix() |
| 627 | errPartner = svr.transactionContext.PgDd.Insert(&models.PartnerInfo{ | 691 | errPartner = svr.transactionContext.PgDd.Insert(&models.PartnerInfo{ |
| @@ -639,11 +703,13 @@ func (svr *PgLoginService) RegistryGuest(phone string) error { | @@ -639,11 +703,13 @@ func (svr *PgLoginService) RegistryGuest(phone string) error { | ||
| 639 | CooperateTime: time.Now(), | 703 | CooperateTime: time.Now(), |
| 640 | CreateAt: time.Now(), | 704 | CreateAt: time.Now(), |
| 641 | UpdateAt: time.Now(), | 705 | UpdateAt: time.Now(), |
| 642 | - PartnerCategoryInfos: []*models.PartnerCategoryInfo{&models.PartnerCategoryInfo{Id: 1, Code: phone}}, | ||
| 643 | - Salesman: []*domain.Salesman{&domain.Salesman{Name: phone, Telephone: phone}}, | 706 | + PartnerCategoryInfos: []*domain.PartnerCategoryInfo{{Id: 1, Code: phone}}, |
| 707 | + Salesman: []*domain.Salesman{{Name: phone, Telephone: phone}}, | ||
| 644 | }) | 708 | }) |
| 645 | } | 709 | } |
| 646 | 710 | ||
| 711 | + // 删除用户 | ||
| 712 | + | ||
| 647 | return errPartner | 713 | return errPartner |
| 648 | } | 714 | } |
| 649 | 715 |
| @@ -44,20 +44,52 @@ func (s *PgPartnerAuthService) ChangeUserPhone(userId int64, newPhone, oldPhone | @@ -44,20 +44,52 @@ func (s *PgPartnerAuthService) ChangeUserPhone(userId int64, newPhone, oldPhone | ||
| 44 | } | 44 | } |
| 45 | return | 45 | return |
| 46 | } | 46 | } |
| 47 | + | ||
| 48 | +/** | ||
| 49 | + * @Author SteveChan | ||
| 50 | + * @Description 密码校验增加多公司 | ||
| 51 | + * @Date 11:52 2021/2/7 | ||
| 52 | + * @Param | ||
| 53 | + * @return | ||
| 54 | + **/ | ||
| 47 | func (s *PgPartnerAuthService) ChangeUserPassword(userId int64, newPwd, oldPwd, phone string) (err error) { | 55 | func (s *PgPartnerAuthService) ChangeUserPassword(userId int64, newPwd, oldPwd, phone string) (err error) { |
| 48 | var ( | 56 | var ( |
| 49 | - partnerInfo *domain.PartnerInfo | 57 | + //partnerInfo *domain.PartnerInfo |
| 58 | + partnerInfos []*domain.PartnerInfo | ||
| 50 | PartnerInfoDao, _ = dao.NewPartnerInfoDao(s.transactionContext) | 59 | PartnerInfoDao, _ = dao.NewPartnerInfoDao(s.transactionContext) |
| 51 | PartnerInfoService, _ = repository.NewPartnerInfoRepository(s.transactionContext) | 60 | PartnerInfoService, _ = repository.NewPartnerInfoRepository(s.transactionContext) |
| 52 | ) | 61 | ) |
| 53 | - if partnerInfo, err = PartnerInfoService.FindOne(map[string]interface{}{"account": phone}); err != nil { | 62 | + |
| 63 | + // 查询账号信息 | ||
| 64 | + if _, partnerInfos, err = PartnerInfoService.Find(map[string]interface{}{"account": phone}); err != nil { | ||
| 54 | err = errUserNotFound //账号不存在 | 65 | err = errUserNotFound //账号不存在 |
| 55 | return | 66 | return |
| 56 | } | 67 | } |
| 57 | - if !strings.EqualFold(partnerInfo.Password, oldPwd) { | 68 | + |
| 69 | + //多公司密码校验 | ||
| 70 | + var misMatch bool | ||
| 71 | + for _, partnerInfo := range partnerInfos { | ||
| 72 | + if !strings.EqualFold(partnerInfo.Password, oldPwd) { | ||
| 73 | + misMatch = true | ||
| 74 | + } else { | ||
| 75 | + misMatch = false | ||
| 76 | + break | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + if misMatch { | ||
| 58 | err = fmt.Errorf("旧密码不正确") //账号不存在 | 80 | err = fmt.Errorf("旧密码不正确") //账号不存在 |
| 59 | return | 81 | return |
| 60 | } | 82 | } |
| 83 | + | ||
| 84 | + //if partnerInfo, err = PartnerInfoService.FindOne(map[string]interface{}{"account": phone}); err != nil { | ||
| 85 | + // err = errUserNotFound //账号不存在 | ||
| 86 | + // return | ||
| 87 | + //} | ||
| 88 | + //if !strings.EqualFold(partnerInfo.Password, oldPwd) { | ||
| 89 | + // err = fmt.Errorf("旧密码不正确") //账号不存在 | ||
| 90 | + // return | ||
| 91 | + //} | ||
| 92 | + | ||
| 61 | if err = PartnerInfoDao.Update(map[string]interface{}{ | 93 | if err = PartnerInfoDao.Update(map[string]interface{}{ |
| 62 | "oldAccount": phone, | 94 | "oldAccount": phone, |
| 63 | "Password": newPwd, | 95 | "Password": newPwd, |
| @@ -33,7 +33,7 @@ type PartnerInfo struct { | @@ -33,7 +33,7 @@ type PartnerInfo struct { | ||
| 33 | //关联业务员 | 33 | //关联业务员 |
| 34 | Salesman []*domain.Salesman | 34 | Salesman []*domain.Salesman |
| 35 | //合伙人分类信息 | 35 | //合伙人分类信息 |
| 36 | - PartnerCategoryInfos []*PartnerCategoryInfo | 36 | + PartnerCategoryInfos []*domain.PartnerCategoryInfo |
| 37 | //备注 | 37 | //备注 |
| 38 | Remark string | 38 | Remark string |
| 39 | } | 39 | } |
| @@ -56,6 +56,7 @@ func (repository *UsersRepository) FindOne(queryOptions map[string]interface{}) | @@ -56,6 +56,7 @@ func (repository *UsersRepository) FindOne(queryOptions map[string]interface{}) | ||
| 56 | query.SetWhere("company_id = ?", "companyId") | 56 | query.SetWhere("company_id = ?", "companyId") |
| 57 | query.SetWhere(`delete_at is null`, "deleteAtIsNull") | 57 | query.SetWhere(`delete_at is null`, "deleteAtIsNull") |
| 58 | query.SetWhere("is_senior = ?", "isSenior") | 58 | query.SetWhere("is_senior = ?", "isSenior") |
| 59 | + query.SetWhere("company_id <> ?", "isNot") | ||
| 59 | 60 | ||
| 60 | if err := query.First(); err != nil { | 61 | if err := query.First(); err != nil { |
| 61 | return nil, fmt.Errorf("query row not found") | 62 | return nil, fmt.Errorf("query row not found") |
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/7 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package auth | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "github.com/astaxie/beego" | ||
| 11 | + "github.com/onsi/ginkgo" | ||
| 12 | + "github.com/onsi/gomega" | ||
| 13 | + "net/http" | ||
| 14 | + "net/http/httptest" | ||
| 15 | + "testing" | ||
| 16 | + | ||
| 17 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg" | ||
| 18 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr" | ||
| 19 | +) | ||
| 20 | + | ||
| 21 | +func TestConfig(t *testing.T) { | ||
| 22 | + gomega.RegisterFailHandler(ginkgo.Fail) | ||
| 23 | + ginkgo.RunSpecs(t, "Beego APPSVR Auth Correlations Test Case Suite") | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +var handler http.Handler | ||
| 27 | +var server *httptest.Server | ||
| 28 | + | ||
| 29 | +var _ = ginkgo.BeforeSuite(func() { | ||
| 30 | + handler = beego.BeeApp.Handlers | ||
| 31 | + server = httptest.NewServer(handler) | ||
| 32 | +}) | ||
| 33 | + | ||
| 34 | +var _ = ginkgo.AfterSuite(func() { | ||
| 35 | + server.Close() | ||
| 36 | +}) |
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/7 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package auth | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "github.com/gavv/httpexpect" | ||
| 11 | + "github.com/go-pg/pg/v10" | ||
| 12 | + . "github.com/onsi/ginkgo" | ||
| 13 | + . "github.com/onsi/gomega" | ||
| 14 | + pG "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg" | ||
| 15 | + "net/http" | ||
| 16 | +) | ||
| 17 | + | ||
| 18 | +var _ = Describe("返回员工", func() { | ||
| 19 | + var employeeId int64 | ||
| 20 | + BeforeEach(func() { | ||
| 21 | + _, err := pG.DB.QueryOne( | ||
| 22 | + pg.Scan(&employeeId), | ||
| 23 | + "INSERT INTO partner (id, company_id, uid, employee_name, employee_account, employee_avatar_url, su_money, status, permissions) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id", | ||
| 24 | + 1, 101, 2499036607974745088, "employee_name", "employee_account", "employee_avatar_url", 1000.00, 1, pg.Array([]int{1, 3})) | ||
| 25 | + Expect(err).NotTo(HaveOccurred()) | ||
| 26 | + }) | ||
| 27 | + Describe("根据employeeId参数返回员工", func() { | ||
| 28 | + Context("传入有效的employeeId", func() { | ||
| 29 | + It("返回员工数据", func() { | ||
| 30 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 31 | + httpExpect.GET("/employees/2499036607974745088"). | ||
| 32 | + Expect(). | ||
| 33 | + Status(http.StatusOK). | ||
| 34 | + JSON(). | ||
| 35 | + Object(). | ||
| 36 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 37 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 38 | + ContainsKey("data").Value("data").Object() | ||
| 39 | + }) | ||
| 40 | + }) | ||
| 41 | + }) | ||
| 42 | + AfterEach(func() { | ||
| 43 | + _, err := pG.DB.Exec("DELETE FROM employees WHERE true") | ||
| 44 | + Expect(err).NotTo(HaveOccurred()) | ||
| 45 | + }) | ||
| 46 | +}) |
test/integration/beego/auth/login_test.go
0 → 100644
test/integration/beego/auth/revoke_test.go
0 → 100644
test/integration/beego/auth/sms_code_test.go
0 → 100644
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/7 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package company | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "github.com/astaxie/beego" | ||
| 11 | + "github.com/onsi/ginkgo" | ||
| 12 | + "github.com/onsi/gomega" | ||
| 13 | + "net/http" | ||
| 14 | + "net/http/httptest" | ||
| 15 | + "testing" | ||
| 16 | + | ||
| 17 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg" | ||
| 18 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr" | ||
| 19 | +) | ||
| 20 | + | ||
| 21 | +func TestConfig(t *testing.T) { | ||
| 22 | + gomega.RegisterFailHandler(ginkgo.Fail) | ||
| 23 | + ginkgo.RunSpecs(t, "Beego Port Company Correlations Test Case Suite") | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +var handler http.Handler | ||
| 27 | +var server *httptest.Server | ||
| 28 | + | ||
| 29 | +var _ = ginkgo.BeforeSuite(func() { | ||
| 30 | + handler = beego.BeeApp.Handlers | ||
| 31 | + server = httptest.NewServer(handler) | ||
| 32 | +}) | ||
| 33 | + | ||
| 34 | +var _ = ginkgo.AfterSuite(func() { | ||
| 35 | + server.Close() | ||
| 36 | +}) |
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/7 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package dividend | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "github.com/astaxie/beego" | ||
| 11 | + "github.com/onsi/ginkgo" | ||
| 12 | + "github.com/onsi/gomega" | ||
| 13 | + "net/http" | ||
| 14 | + "net/http/httptest" | ||
| 15 | + "testing" | ||
| 16 | + | ||
| 17 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg" | ||
| 18 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr" | ||
| 19 | +) | ||
| 20 | + | ||
| 21 | +func TestConfig(t *testing.T) { | ||
| 22 | + gomega.RegisterFailHandler(ginkgo.Fail) | ||
| 23 | + ginkgo.RunSpecs(t, "Beego Port Dividend Correlations Test Case Suite") | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +var handler http.Handler | ||
| 27 | +var server *httptest.Server | ||
| 28 | + | ||
| 29 | +var _ = ginkgo.BeforeSuite(func() { | ||
| 30 | + handler = beego.BeeApp.Handlers | ||
| 31 | + server = httptest.NewServer(handler) | ||
| 32 | +}) | ||
| 33 | + | ||
| 34 | +var _ = ginkgo.AfterSuite(func() { | ||
| 35 | + server.Close() | ||
| 36 | +}) |
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/7 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package order | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "github.com/astaxie/beego" | ||
| 11 | + "github.com/onsi/ginkgo" | ||
| 12 | + "github.com/onsi/gomega" | ||
| 13 | + "net/http" | ||
| 14 | + "net/http/httptest" | ||
| 15 | + "testing" | ||
| 16 | + | ||
| 17 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg" | ||
| 18 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr" | ||
| 19 | +) | ||
| 20 | + | ||
| 21 | +func TestConfig(t *testing.T) { | ||
| 22 | + gomega.RegisterFailHandler(ginkgo.Fail) | ||
| 23 | + ginkgo.RunSpecs(t, "Beego Port Order Correlations Test Case Suite") | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +var handler http.Handler | ||
| 27 | +var server *httptest.Server | ||
| 28 | + | ||
| 29 | +var _ = ginkgo.BeforeSuite(func() { | ||
| 30 | + handler = beego.BeeApp.Handlers | ||
| 31 | + server = httptest.NewServer(handler) | ||
| 32 | +}) | ||
| 33 | + | ||
| 34 | +var _ = ginkgo.AfterSuite(func() { | ||
| 35 | + server.Close() | ||
| 36 | +}) |
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/7 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package partner | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "github.com/astaxie/beego" | ||
| 11 | + "github.com/onsi/ginkgo" | ||
| 12 | + "github.com/onsi/gomega" | ||
| 13 | + "net/http" | ||
| 14 | + "net/http/httptest" | ||
| 15 | + "testing" | ||
| 16 | + | ||
| 17 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg" | ||
| 18 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr" | ||
| 19 | +) | ||
| 20 | + | ||
| 21 | +func TestConfig(t *testing.T) { | ||
| 22 | + gomega.RegisterFailHandler(ginkgo.Fail) | ||
| 23 | + ginkgo.RunSpecs(t, "Beego Port Partner Correlations Test Case Suite") | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +var handler http.Handler | ||
| 27 | +var server *httptest.Server | ||
| 28 | + | ||
| 29 | +var _ = ginkgo.BeforeSuite(func() { | ||
| 30 | + handler = beego.BeeApp.Handlers | ||
| 31 | + server = httptest.NewServer(handler) | ||
| 32 | +}) | ||
| 33 | + | ||
| 34 | +var _ = ginkgo.AfterSuite(func() { | ||
| 35 | + server.Close() | ||
| 36 | +}) |
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/7 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package user | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "github.com/astaxie/beego" | ||
| 11 | + "github.com/onsi/ginkgo" | ||
| 12 | + "github.com/onsi/gomega" | ||
| 13 | + "net/http" | ||
| 14 | + "net/http/httptest" | ||
| 15 | + "testing" | ||
| 16 | + | ||
| 17 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg" | ||
| 18 | + _ "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/port/appsvr" | ||
| 19 | +) | ||
| 20 | + | ||
| 21 | +func TestConfig(t *testing.T) { | ||
| 22 | + gomega.RegisterFailHandler(ginkgo.Fail) | ||
| 23 | + ginkgo.RunSpecs(t, "Beego Port User Correlations Test Case Suite") | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +var handler http.Handler | ||
| 27 | +var server *httptest.Server | ||
| 28 | + | ||
| 29 | +var _ = ginkgo.BeforeSuite(func() { | ||
| 30 | + handler = beego.BeeApp.Handlers | ||
| 31 | + server = httptest.NewServer(handler) | ||
| 32 | +}) | ||
| 33 | + | ||
| 34 | +var _ = ginkgo.AfterSuite(func() { | ||
| 35 | + server.Close() | ||
| 36 | +}) |
-
请 注册 或 登录 后发表评论