正在显示
14 个修改的文件
包含
149 行增加
和
65 行删除
| @@ -6,6 +6,7 @@ require ( | @@ -6,6 +6,7 @@ require ( | ||
| 6 | github.com/astaxie/beego v1.12.1 | 6 | github.com/astaxie/beego v1.12.1 |
| 7 | github.com/dgrijalva/jwt-go v3.2.0+incompatible | 7 | github.com/dgrijalva/jwt-go v3.2.0+incompatible |
| 8 | github.com/gin-gonic/gin v1.5.0 | 8 | github.com/gin-gonic/gin v1.5.0 |
| 9 | + github.com/go-pg/pg v8.0.6+incompatible | ||
| 9 | github.com/go-pg/pg/v10 v10.0.0-beta.2 | 10 | github.com/go-pg/pg/v10 v10.0.0-beta.2 |
| 10 | github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 | 11 | github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 |
| 11 | github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect | 12 | github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect |
| @@ -108,8 +108,14 @@ func AccessToken(request *protocol.AccessTokenRequest) (rsp *protocol.AccessToke | @@ -108,8 +108,14 @@ func AccessToken(request *protocol.AccessTokenRequest) (rsp *protocol.AccessToke | ||
| 108 | err = protocol.NewErrWithMessage(1, fmt.Errorf("jwt authCode (%v) valid", request.AuthCode)) | 108 | err = protocol.NewErrWithMessage(1, fmt.Errorf("jwt authCode (%v) valid", request.AuthCode)) |
| 109 | return | 109 | return |
| 110 | } | 110 | } |
| 111 | - rsp.AccessToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.TokenExpire*time.Second) | ||
| 112 | - rsp.RefreshToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.RefreshTokenExipre*time.Second) | 111 | + userClaims := utils.UserTokenClaims{ |
| 112 | + UserId: claim.UserId, | ||
| 113 | + CompanyId: claim.CompanyId, | ||
| 114 | + AdminType: claim.AdminType, | ||
| 115 | + Phone: claim.Phone, | ||
| 116 | + } | ||
| 117 | + rsp.AccessToken, _ = utils.GenerateTokenWithClaim(userClaims, protocol.TokenExpire*time.Second) | ||
| 118 | + rsp.RefreshToken, _ = utils.GenerateTokenWithClaim(userClaims, protocol.RefreshTokenExipre*time.Second) | ||
| 113 | rsp.ExpiresIn = protocol.TokenExpire | 119 | rsp.ExpiresIn = protocol.TokenExpire |
| 114 | 120 | ||
| 115 | //auth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId), | 121 | //auth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId), |
| @@ -127,10 +133,13 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT | @@ -127,10 +133,13 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT | ||
| 127 | claim *utils.UserTokenClaims | 133 | claim *utils.UserTokenClaims |
| 128 | transactionContext, _ = factory.CreateTransactionContext(nil) | 134 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| 129 | PartnerInfoService, _ = factory.CreatePartnerInfoRepositoryIn(transactionContext) | 135 | PartnerInfoService, _ = factory.CreatePartnerInfoRepositoryIn(transactionContext) |
| 130 | - PartnerSubAccountRepository, _ = factory.CreatePartnerSubAccountRepository(transactionContext) | 136 | + //PartnerSubAccountRepository, _ = factory.CreatePartnerSubAccountRepository(transactionContext) |
| 137 | + UsersRepository, _ = factory.CreateUsersRepository(transactionContext) | ||
| 131 | 138 | ||
| 132 | partnerInfo *domain.PartnerInfo | 139 | partnerInfo *domain.PartnerInfo |
| 133 | - partnerSubAccount *domain.PartnerSubAccount | 140 | + //partnerSubAccount *domain.PartnerSubAccount |
| 141 | + user *domain.Users | ||
| 142 | + userId int64 | ||
| 134 | ) | 143 | ) |
| 135 | 144 | ||
| 136 | if err = transactionContext.StartTransaction(); err != nil { | 145 | if err = transactionContext.StartTransaction(); err != nil { |
| @@ -151,14 +160,29 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT | @@ -151,14 +160,29 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT | ||
| 151 | } | 160 | } |
| 152 | 161 | ||
| 153 | //验证用户有效 | 162 | //验证用户有效 |
| 154 | - var e error | ||
| 155 | - if partnerSubAccount, e = PartnerSubAccountRepository.FindOne(map[string]interface{}{"account": claim.Phone}); e == nil { | ||
| 156 | - partnerInfo, e = PartnerInfoService.FindOne(map[string]interface{}{"id": partnerSubAccount.PartnerId}) | ||
| 157 | - } else { | ||
| 158 | - partnerInfo, e = PartnerInfoService.FindOne(map[string]interface{}{"account": claim.Phone}) | 163 | + //var e error |
| 164 | + //if partnerSubAccount, e = PartnerSubAccountRepository.FindOne(map[string]interface{}{"account": claim.Phone}); e == nil { | ||
| 165 | + // partnerInfo, e = PartnerInfoService.FindOne(map[string]interface{}{"id": partnerSubAccount.PartnerId}) | ||
| 166 | + //} else { | ||
| 167 | + // partnerInfo, e = PartnerInfoService.FindOne(map[string]interface{}{"account": claim.Phone}) | ||
| 168 | + //} | ||
| 169 | + switch claim.AdminType { | ||
| 170 | + case 1: | ||
| 171 | + if user, err = UsersRepository.FindOne(map[string]interface{}{"phone": claim.Phone, "companyId": claim.CompanyId, "status": 1}); err != nil || user != nil { | ||
| 172 | + err = protocol.NewErrWithMessage(4140, err) | ||
| 173 | + return | ||
| 159 | } | 174 | } |
| 160 | - if e != nil || partnerInfo == nil || !partnerInfo.IsEnable() || partnerInfo.Id != claim.UserId { | ||
| 161 | - err = protocol.NewErrWithMessage(4140) //账号禁用 | 175 | + userId = user.Id |
| 176 | + break | ||
| 177 | + case 2: | ||
| 178 | + if partnerInfo, err = PartnerInfoService.FindOne(map[string]interface{}{"account": claim.Id, "companyId": claim.CompanyId, "status": 1}); err != nil || partnerInfo == nil { | ||
| 179 | + err = protocol.NewErrWithMessage(4140, err) | ||
| 180 | + return | ||
| 181 | + } | ||
| 182 | + userId = partnerInfo.Id | ||
| 183 | + break | ||
| 184 | + default: | ||
| 185 | + err = protocol.NewErrWithMessage(4140, err) | ||
| 162 | return | 186 | return |
| 163 | } | 187 | } |
| 164 | 188 | ||
| @@ -168,8 +192,8 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT | @@ -168,8 +192,8 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT | ||
| 168 | // err = protocol.NewErrWithMessage(4140, err) | 192 | // err = protocol.NewErrWithMessage(4140, err) |
| 169 | // return | 193 | // return |
| 170 | //} | 194 | //} |
| 171 | - rsp.AccessToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.TokenExpire*time.Second) | ||
| 172 | - rsp.RefreshToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.RefreshTokenExipre*time.Second) | 195 | + rsp.AccessToken, _ = utils.GenerateTokenWithAdminType(userId, claim.Phone, claim.AdminType, protocol.TokenExpire*time.Second) |
| 196 | + rsp.RefreshToken, _ = utils.GenerateTokenWithAdminType(userId, claim.Phone, claim.AdminType, protocol.RefreshTokenExipre*time.Second) | ||
| 173 | rsp.ExpiresIn = protocol.TokenExpire | 197 | rsp.ExpiresIn = protocol.TokenExpire |
| 174 | 198 | ||
| 175 | //newAuth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId), | 199 | //newAuth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId), |
| @@ -251,6 +275,10 @@ func CenterCompanys(header *protocol.RequestHeader, request *protocolx.CenterCom | @@ -251,6 +275,10 @@ func CenterCompanys(header *protocol.RequestHeader, request *protocolx.CenterCom | ||
| 251 | } | 275 | } |
| 252 | switch request.GrantType { | 276 | switch request.GrantType { |
| 253 | case protocol.LoginByPassword: | 277 | case protocol.LoginByPassword: |
| 278 | + if len(request.Password) == 0 { | ||
| 279 | + err = protocol.NewCustomMessage(1, "密码不能为空!") | ||
| 280 | + return | ||
| 281 | + } | ||
| 254 | if loginSvr.ManagerLogin(request.Phone, request.Password) != nil && loginSvr.PartnerLogin(request.Phone, request.Password) != nil { | 282 | if loginSvr.ManagerLogin(request.Phone, request.Password) != nil && loginSvr.PartnerLogin(request.Phone, request.Password) != nil { |
| 255 | err = protocol.NewCustomMessage(1, "密码输入有误!") | 283 | err = protocol.NewCustomMessage(1, "密码输入有误!") |
| 256 | return | 284 | return |
| @@ -342,12 +370,12 @@ func LoginV2(header *protocol.RequestHeader, request *protocol.LoginRequestV2) ( | @@ -342,12 +370,12 @@ func LoginV2(header *protocol.RequestHeader, request *protocol.LoginRequestV2) ( | ||
| 342 | } | 370 | } |
| 343 | switch request.IdType { | 371 | switch request.IdType { |
| 344 | case int(protocolx.AdminTypePartner): | 372 | case int(protocolx.AdminTypePartner): |
| 345 | - if p, e := PartnerInfoRepository.FindOne(map[string]interface{}{"account": claim.Phone, "company_id": request.Cid, "status": 1}); e == nil { | 373 | + if p, e := PartnerInfoRepository.FindOne(map[string]interface{}{"account": claim.Phone, "companyId": request.Cid, "status": 1}); e == nil { |
| 346 | userId = p.Id | 374 | userId = p.Id |
| 347 | } | 375 | } |
| 348 | break | 376 | break |
| 349 | case int(protocolx.AdminTypeManager): | 377 | case int(protocolx.AdminTypeManager): |
| 350 | - if p, e := UsersRepository.FindOne(map[string]interface{}{"phone": claim.Phone, "company_id": request.Cid, "status": 1}); e == nil { | 378 | + if p, e := UsersRepository.FindOne(map[string]interface{}{"phone": claim.Phone, "companyId": request.Cid, "status": 1}); e == nil { |
| 351 | userId = p.Id | 379 | userId = p.Id |
| 352 | } | 380 | } |
| 353 | break | 381 | break |
| @@ -360,7 +388,13 @@ func LoginV2(header *protocol.RequestHeader, request *protocol.LoginRequestV2) ( | @@ -360,7 +388,13 @@ func LoginV2(header *protocol.RequestHeader, request *protocol.LoginRequestV2) ( | ||
| 360 | return | 388 | return |
| 361 | } | 389 | } |
| 362 | //根据simnum + cid | 390 | //根据simnum + cid |
| 363 | - rsp.AuthCode, _ = utils.GenerateTokenWithAdminType(userId, claim.Phone, request.IdType, protocol.AuthCodeExpire*time.Second) | 391 | + userClaims := utils.UserTokenClaims{ |
| 392 | + UserId: userId, | ||
| 393 | + CompanyId: claim.CompanyId, | ||
| 394 | + AdminType: claim.AdminType, | ||
| 395 | + Phone: claim.Phone, | ||
| 396 | + } | ||
| 397 | + rsp.AuthCode, _ = utils.GenerateTokenWithClaim(userClaims, protocol.AuthCodeExpire*time.Second) | ||
| 364 | 398 | ||
| 365 | err = transactionContext.CommitTransaction() | 399 | err = transactionContext.CommitTransaction() |
| 366 | return | 400 | return |
| @@ -9,7 +9,7 @@ type BusinessBonus struct { | @@ -9,7 +9,7 @@ type BusinessBonus struct { | ||
| 9 | // 公司编号 | 9 | // 公司编号 |
| 10 | CompanyId int64 `json:"companyId"` | 10 | CompanyId int64 `json:"companyId"` |
| 11 | // 合伙人信息Id | 11 | // 合伙人信息Id |
| 12 | - PartnerInfoId string `json:"partnerInfoId"` | 12 | + PartnerInfoId int64 `json:"partnerInfoId"` |
| 13 | // 应收分红 | 13 | // 应收分红 |
| 14 | Bonus float64 `json:"bonus"` | 14 | Bonus float64 `json:"bonus"` |
| 15 | // 未收分红 | 15 | // 未收分红 |
| @@ -2,6 +2,7 @@ package dao | @@ -2,6 +2,7 @@ package dao | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "github.com/go-pg/pg/v10" | ||
| 5 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" | 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/models" | 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/models" |
| 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction" | 8 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction" |
| @@ -46,14 +47,14 @@ func (dao *OrderBaseDao) OrderStatics(option *domain.OrderStaticQuery) (count in | @@ -46,14 +47,14 @@ func (dao *OrderBaseDao) OrderStatics(option *domain.OrderStaticQuery) (count in | ||
| 46 | //订单分红统计 | 47 | //订单分红统计 |
| 47 | func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp domain.OrderBonusResponse, err error) { | 48 | func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp domain.OrderBonusResponse, err error) { |
| 48 | rsp = domain.OrderBonusResponse{} | 49 | rsp = domain.OrderBonusResponse{} |
| 49 | - if option.PartnerId == 0 && option.CompanyId == 0 { | 50 | + if option.PartnerId == 0 && option.CompanyId == 0 && len(option.InPartnerIds) == 0 { |
| 50 | return | 51 | return |
| 51 | } | 52 | } |
| 52 | tx := dao.transactionContext.PgTx | 53 | tx := dao.transactionContext.PgTx |
| 53 | q := tx.Model(new(models.OrderBase)) | 54 | q := tx.Model(new(models.OrderBase)) |
| 54 | - q.ExcludeColumn("count(*) count") | ||
| 55 | - q.ExcludeColumn("sum(plan_partner_bonus) bonus") | ||
| 56 | - q.ExcludeColumn("sum(bonus_expense) bonus_expense") | 55 | + q.ColumnExpr("count(*) count") |
| 56 | + q.ColumnExpr("sum(plan_partner_bonus) bonus") | ||
| 57 | + q.ColumnExpr("sum(partner_bonus_expense) bonus_expense") | ||
| 57 | if option.PartnerId > 0 { | 58 | if option.PartnerId > 0 { |
| 58 | q.Where(`"order_base".partner_id =?`, option.PartnerId) | 59 | q.Where(`"order_base".partner_id =?`, option.PartnerId) |
| 59 | } | 60 | } |
| @@ -61,7 +62,7 @@ func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp d | @@ -61,7 +62,7 @@ func (dao *OrderBaseDao) OrderBonusStatics(option domain.OrderBonusQuery) (rsp d | ||
| 61 | q.Where(`"order_base".company_id =?`, option.CompanyId) | 62 | q.Where(`"order_base".company_id =?`, option.CompanyId) |
| 62 | } | 63 | } |
| 63 | if len(option.InPartnerIds) > 0 { | 64 | if len(option.InPartnerIds) > 0 { |
| 64 | - q.Where(`"order_base".partner_id in (?)`, option.InPartnerIds) | 65 | + q.Where(`"order_base".partner_id in (?)`, pg.In(option.InPartnerIds)) |
| 65 | } | 66 | } |
| 66 | err = q.Select(&rsp.Total, &rsp.Bonus, &rsp.BonusExpense) | 67 | err = q.Select(&rsp.Total, &rsp.Bonus, &rsp.BonusExpense) |
| 67 | return | 68 | return |
| @@ -7,6 +7,7 @@ import ( | @@ -7,6 +7,7 @@ import ( | ||
| 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction" | 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction" |
| 8 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/repository" | 8 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/repository" |
| 9 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" | 9 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/utils" |
| 10 | + "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/log" | ||
| 10 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" | 11 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol" |
| 11 | protocolx "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol/auth" | 12 | protocolx "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/protocol/auth" |
| 12 | "strings" | 13 | "strings" |
| @@ -26,8 +27,8 @@ func (svr *PgLoginService) Init(phone string) (err error) { | @@ -26,8 +27,8 @@ func (svr *PgLoginService) Init(phone string) (err error) { | ||
| 26 | UsersRepository, _ = repository.NewUsersRepository(svr.transactionContext) | 27 | UsersRepository, _ = repository.NewUsersRepository(svr.transactionContext) |
| 27 | ) | 28 | ) |
| 28 | svr.Phone = phone | 29 | svr.Phone = phone |
| 29 | - _, svr.PartnerInfo, _ = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC"}) | ||
| 30 | - _, svr.Users, _ = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC"}) | 30 | + _, svr.PartnerInfo, err = PartnerInfoService.Find(map[string]interface{}{"account": phone, "status": 1, "sortByCreateTime": "ASC"}) |
| 31 | + _, svr.Users, err = UsersRepository.Find(map[string]interface{}{"phone": phone, "status": 1, "sortByCreateTime": "ASC"}) | ||
| 31 | return nil | 32 | return nil |
| 32 | } | 33 | } |
| 33 | 34 | ||
| @@ -64,7 +65,7 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | @@ -64,7 +65,7 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | ||
| 64 | OrderDao, _ = dao.NewOrderBaseDao(svr.transactionContext) | 65 | OrderDao, _ = dao.NewOrderBaseDao(svr.transactionContext) |
| 65 | PartnerCategoryInfoRepository, _ = repository.NewPartnerCategoryInfoRepository(svr.transactionContext) | 66 | PartnerCategoryInfoRepository, _ = repository.NewPartnerCategoryInfoRepository(svr.transactionContext) |
| 66 | companyList []*domain.Company | 67 | companyList []*domain.Company |
| 67 | - partnerCategory []*domain.PartnerCategoryInfo | 68 | + allPartnerCategory []*domain.PartnerCategoryInfo |
| 68 | ) | 69 | ) |
| 69 | doGetCompanyIds := func() []int64 { | 70 | doGetCompanyIds := func() []int64 { |
| 70 | var companies []int64 | 71 | var companies []int64 |
| @@ -81,12 +82,18 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | @@ -81,12 +82,18 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | ||
| 81 | return array | 82 | return array |
| 82 | } | 83 | } |
| 83 | companyList = svr.GetCompanyList(doGetCompanyIds) | 84 | companyList = svr.GetCompanyList(doGetCompanyIds) |
| 84 | - | 85 | + if len(companyList) == 0 { |
| 86 | + return nil, nil | ||
| 87 | + } | ||
| 85 | totalBonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds()}) | 88 | totalBonus, e := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{InPartnerIds: doGetPartnerIds()}) |
| 86 | if e != nil { | 89 | if e != nil { |
| 87 | return nil, e | 90 | return nil, e |
| 88 | } | 91 | } |
| 89 | - _, partnerCategory, _ = PartnerCategoryInfoRepository.Find(map[string]interface{}{"sortById": domain.ASC}) | 92 | + _, allPartnerCategory, e = PartnerCategoryInfoRepository.Find(map[string]interface{}{"sortById": domain.ASC}) |
| 93 | + if e != nil { | ||
| 94 | + log.Error(e) | ||
| 95 | + return nil, e | ||
| 96 | + } | ||
| 90 | var companys = make([]*Company, 0) | 97 | var companys = make([]*Company, 0) |
| 91 | for i := range companyList { | 98 | for i := range companyList { |
| 92 | c := companyList[i] | 99 | c := companyList[i] |
| @@ -103,9 +110,15 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | @@ -103,9 +110,15 @@ func (svr *PgLoginService) PartnerStaticInfo() (interface{}, error) { | ||
| 103 | bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: partner.Id}) | 110 | bonus, _ := OrderDao.OrderBonusStatics(domain.OrderBonusQuery{PartnerId: partner.Id}) |
| 104 | item := &Company{ | 111 | item := &Company{ |
| 105 | CompanyBase: newCompanyBase(c), | 112 | CompanyBase: newCompanyBase(c), |
| 106 | - IncomePercent: computeBonusPercent(totalBonus.Bonus, bonus.Bonus), | 113 | + IncomePercent: computeBonusPercent(totalBonus.Bonus*100, bonus.Bonus), |
| 107 | DividendMoney: bonus.Bonus, | 114 | DividendMoney: bonus.Bonus, |
| 108 | - JoinWays: svr.GetJoinWays(partnerCategory, partner, bonus.Bonus), | 115 | + JoinWays: svr.GetJoinWays(allPartnerCategory, partner, bonus.Bonus), |
| 116 | + } | ||
| 117 | + //当所有公司的总收入都为0时, | ||
| 118 | + //初始总收入=公司数*1 | ||
| 119 | + //否则计算的比例始终都为0 | ||
| 120 | + if totalBonus.Bonus == 0 { | ||
| 121 | + item.IncomePercent = computeBonusPercent(totalBonus.Bonus+float64(len(companyList)), bonus.Bonus+1) * 100 | ||
| 109 | } | 122 | } |
| 110 | companys = append(companys, item) | 123 | companys = append(companys, item) |
| 111 | } | 124 | } |
| @@ -125,8 +138,8 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) { | @@ -125,8 +138,8 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) { | ||
| 125 | ) | 138 | ) |
| 126 | doGetCompanyIds := func() []int64 { | 139 | doGetCompanyIds := func() []int64 { |
| 127 | var companies []int64 | 140 | var companies []int64 |
| 128 | - for i := range svr.PartnerInfo { | ||
| 129 | - companies = append(companies, svr.PartnerInfo[i].CompanyId) | 141 | + for i := range svr.Users { |
| 142 | + companies = append(companies, svr.Users[i].CompanyId) | ||
| 130 | } | 143 | } |
| 131 | return companies | 144 | return companies |
| 132 | } | 145 | } |
| @@ -146,7 +159,7 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) { | @@ -146,7 +159,7 @@ func (svr *PgLoginService) ManagerStaticInfo() (interface{}, error) { | ||
| 146 | } | 159 | } |
| 147 | 160 | ||
| 148 | response := make(map[string]interface{}) | 161 | response := make(map[string]interface{}) |
| 149 | - response["id"] = protocolx.AdminTypePartner | 162 | + response["id"] = protocolx.AdminTypeManager |
| 150 | response["name"] = svr.PartnerInfo[0].PartnerName | 163 | response["name"] = svr.PartnerInfo[0].PartnerName |
| 151 | response["companys"] = companys | 164 | response["companys"] = companys |
| 152 | return response, nil | 165 | return response, nil |
| @@ -160,7 +173,8 @@ func (svr *PgLoginService) GetCompanyList(funcGetCompanyIds func() []int64) []*d | @@ -160,7 +173,8 @@ func (svr *PgLoginService) GetCompanyList(funcGetCompanyIds func() []int64) []*d | ||
| 160 | if len(companies) == 0 { | 173 | if len(companies) == 0 { |
| 161 | return companyList | 174 | return companyList |
| 162 | } | 175 | } |
| 163 | - if _, v, e := CompanyRepository.Find(map[string]interface{}{"companies": companies, "status": 1, "sortByCreateTime": domain.ASC}); e != nil { | 176 | + if _, v, e := CompanyRepository.Find(map[string]interface{}{"inCompanyIds": companies, "status": 1, "sortByCreateTime": domain.ASC}); e != nil { |
| 177 | + log.Error(e) | ||
| 164 | return companyList | 178 | return companyList |
| 165 | } else { | 179 | } else { |
| 166 | companyList = v | 180 | companyList = v |
| @@ -176,23 +190,23 @@ func (svr *PgLoginService) GetJoinWays(partnerCategory []*domain.PartnerCategory | @@ -176,23 +190,23 @@ func (svr *PgLoginService) GetJoinWays(partnerCategory []*domain.PartnerCategory | ||
| 176 | } | 190 | } |
| 177 | return nil | 191 | return nil |
| 178 | } | 192 | } |
| 179 | - var ( | ||
| 180 | - totalBonus float64 | ||
| 181 | - businessBonus float64 | ||
| 182 | - BusinessBonusRepository, _ = repository.NewBusinessBonusRepository(svr.transactionContext) | ||
| 183 | - ) | ||
| 184 | - for i := range partnerInfo.PartnerCategoryInfos { | ||
| 185 | - c := partnerInfo.PartnerCategoryInfos[i] | ||
| 186 | - switch c.Id { | ||
| 187 | - case 1: | ||
| 188 | - totalBonus += bonus | ||
| 189 | - case 2: | ||
| 190 | - if one, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": partnerInfo.Id}); e == nil { | ||
| 191 | - businessBonus = one.Bonus | ||
| 192 | - totalBonus += businessBonus | ||
| 193 | - } | ||
| 194 | - } | ||
| 195 | - } | 193 | + //var ( |
| 194 | + // totalBonus float64 | ||
| 195 | + // businessBonus float64 | ||
| 196 | + // BusinessBonusRepository, _ = repository.NewBusinessBonusRepository(svr.transactionContext) | ||
| 197 | + //) | ||
| 198 | + //for i := range partnerInfo.PartnerCategoryInfos { | ||
| 199 | + // c := partnerInfo.PartnerCategoryInfos[i] | ||
| 200 | + // switch c.Id { | ||
| 201 | + // case 1: | ||
| 202 | + // totalBonus += bonus | ||
| 203 | + // case 2: | ||
| 204 | + // if one, e := BusinessBonusRepository.FindOne(map[string]interface{}{"partner_id": partnerInfo.Id}); e == nil { | ||
| 205 | + // businessBonus = one.Bonus | ||
| 206 | + // totalBonus += businessBonus | ||
| 207 | + // } | ||
| 208 | + // } | ||
| 209 | + //} | ||
| 196 | var joinWays []joinWay | 210 | var joinWays []joinWay |
| 197 | for i := range partnerCategory { | 211 | for i := range partnerCategory { |
| 198 | c := partnerCategory[i] | 212 | c := partnerCategory[i] |
| @@ -202,14 +216,18 @@ func (svr *PgLoginService) GetJoinWays(partnerCategory []*domain.PartnerCategory | @@ -202,14 +216,18 @@ func (svr *PgLoginService) GetJoinWays(partnerCategory []*domain.PartnerCategory | ||
| 202 | Type: int(c.Id), | 216 | Type: int(c.Id), |
| 203 | Name: c.Name, | 217 | Name: c.Name, |
| 204 | } | 218 | } |
| 205 | - if c.Id == 1 { | ||
| 206 | - item.Percent = computeBonusPercent(totalBonus, bonus) * 100 | ||
| 207 | - } else if c.Id == 2 { | ||
| 208 | - item.Percent = computeBonusPercent(totalBonus, businessBonus) * 100 | ||
| 209 | - } | 219 | + //if c.Id == 1 { |
| 220 | + // item.Percent = computeBonusPercent(totalBonus, bonus) * 100 | ||
| 221 | + //} else if c.Id == 2 { | ||
| 222 | + // item.Percent = computeBonusPercent(totalBonus, businessBonus) * 100 | ||
| 223 | + //} | ||
| 210 | joinWays = append(joinWays, item) | 224 | joinWays = append(joinWays, item) |
| 211 | } | 225 | } |
| 212 | } | 226 | } |
| 227 | + | ||
| 228 | + for i := range joinWays { | ||
| 229 | + joinWays[i].Percent = computeBonusPercent(float64(len(joinWays)), 1) * 100 | ||
| 230 | + } | ||
| 213 | return joinWays | 231 | return joinWays |
| 214 | } | 232 | } |
| 215 | func newCompanyBase(company *domain.Company) protocol.CompanyBase { | 233 | func newCompanyBase(company *domain.Company) protocol.CompanyBase { |
| @@ -10,7 +10,7 @@ type BusinessBonus struct { | @@ -10,7 +10,7 @@ type BusinessBonus struct { | ||
| 10 | // 公司编号 | 10 | // 公司编号 |
| 11 | CompanyId int64 | 11 | CompanyId int64 |
| 12 | // 合伙人信息Id | 12 | // 合伙人信息Id |
| 13 | - PartnerInfoId string | 13 | + PartnerInfoId int64 |
| 14 | // 应收分红 | 14 | // 应收分红 |
| 15 | Bonus float64 | 15 | Bonus float64 |
| 16 | // 未收分红 | 16 | // 未收分红 |
| @@ -49,7 +49,7 @@ func (repository *BusinessBonusRepository) FindOne(queryOptions map[string]inter | @@ -49,7 +49,7 @@ func (repository *BusinessBonusRepository) FindOne(queryOptions map[string]inter | ||
| 49 | BusinessBonusModel := new(models.BusinessBonus) | 49 | BusinessBonusModel := new(models.BusinessBonus) |
| 50 | query := NewQuery(tx.Model(BusinessBonusModel), queryOptions) | 50 | query := NewQuery(tx.Model(BusinessBonusModel), queryOptions) |
| 51 | query.SetWhere("id = ?", "id") | 51 | query.SetWhere("id = ?", "id") |
| 52 | - query.SetWhere("partner_id = ?", "partner_id") | 52 | + query.SetWhere("partner_info_id = ?", "partner_id") |
| 53 | if err := query.First(); err != nil { | 53 | if err := query.First(); err != nil { |
| 54 | return nil, fmt.Errorf("query row not found") | 54 | return nil, fmt.Errorf("query row not found") |
| 55 | } | 55 | } |
| 1 | package repository | 1 | package repository |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "github.com/go-pg/pg/v10" | ||
| 4 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" | 5 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/domain" |
| 5 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/models" | 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/models" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction" | 7 | "gitlab.fjmaimaimai.com/mmm-go/partner/pkg/infrastructure/pg/transaction" |
| @@ -62,8 +63,9 @@ func (repository *CompanyRepository) Find(queryOptions map[string]interface{}) ( | @@ -62,8 +63,9 @@ func (repository *CompanyRepository) Find(queryOptions map[string]interface{}) ( | ||
| 62 | var CompanyModels []*models.Company | 63 | var CompanyModels []*models.Company |
| 63 | Companys := make([]*domain.Company, 0) | 64 | Companys := make([]*domain.Company, 0) |
| 64 | query := NewQuery(tx.Model(&CompanyModels), queryOptions) | 65 | query := NewQuery(tx.Model(&CompanyModels), queryOptions) |
| 65 | - if companies, ok := queryOptions["companies"]; ok { | ||
| 66 | - query.WhereIn("id in (?)", companies) | 66 | + if companies, ok := queryOptions["inCompanyIds"]; ok { |
| 67 | + companyIds, _ := companies.([]int64) | ||
| 68 | + query.Where("id in (?)", pg.In(companyIds)) | ||
| 67 | } | 69 | } |
| 68 | query.SetWhere("status = ?", "status") | 70 | query.SetWhere("status = ?", "status") |
| 69 | query.SetOrder(`create_at`, "sortByCreateTime") | 71 | query.SetOrder(`create_at`, "sortByCreateTime") |
| @@ -53,6 +53,8 @@ func (repository *PartnerInfoRepository) FindOne(queryOptions map[string]interfa | @@ -53,6 +53,8 @@ func (repository *PartnerInfoRepository) FindOne(queryOptions map[string]interfa | ||
| 53 | query := NewQuery(tx.Model(PartnerInfoModel), queryOptions) | 53 | query := NewQuery(tx.Model(PartnerInfoModel), queryOptions) |
| 54 | query.SetWhere("partner_info.id = ?", "id") | 54 | query.SetWhere("partner_info.id = ?", "id") |
| 55 | query.SetWhere("partner_info.account = ?", "account") | 55 | query.SetWhere("partner_info.account = ?", "account") |
| 56 | + query.SetWhere("partner_info.status = ?", "status") | ||
| 57 | + query.SetWhere("partner_info.company_id = ?", "companyId") | ||
| 56 | if err := query.First(); err != nil { | 58 | if err := query.First(); err != nil { |
| 57 | return nil, query.HandleError(err, "没有此合伙人") | 59 | return nil, query.HandleError(err, "没有此合伙人") |
| 58 | } | 60 | } |
| @@ -48,7 +48,10 @@ func (repository *UsersRepository) FindOne(queryOptions map[string]interface{}) | @@ -48,7 +48,10 @@ func (repository *UsersRepository) FindOne(queryOptions map[string]interface{}) | ||
| 48 | tx := repository.transactionContext.PgTx | 48 | tx := repository.transactionContext.PgTx |
| 49 | UsersModel := new(models.Users) | 49 | UsersModel := new(models.Users) |
| 50 | query := NewQuery(tx.Model(UsersModel), queryOptions) | 50 | query := NewQuery(tx.Model(UsersModel), queryOptions) |
| 51 | + query.SetWhere("id = ?", "id") | ||
| 52 | + query.SetWhere("status = ?", "status") | ||
| 51 | query.SetWhere("phone = ?", "phone") | 53 | query.SetWhere("phone = ?", "phone") |
| 54 | + query.SetWhere("company_id = ?", "companyId") | ||
| 52 | if err := query.First(); err != nil { | 55 | if err := query.First(); err != nil { |
| 53 | return nil, fmt.Errorf("query row not found") | 56 | return nil, fmt.Errorf("query row not found") |
| 54 | } | 57 | } |
| @@ -72,3 +72,22 @@ func GenerateTokenWithAdminType(uid int64, phone string, adminType int, expire t | @@ -72,3 +72,22 @@ func GenerateTokenWithAdminType(uid int64, phone string, adminType int, expire t | ||
| 72 | token, err := tokenClaims.SignedString(jwtSecret) | 72 | token, err := tokenClaims.SignedString(jwtSecret) |
| 73 | return token, err | 73 | return token, err |
| 74 | } | 74 | } |
| 75 | + | ||
| 76 | +func GenerateTokenWithClaim(claim UserTokenClaims, expire time.Duration) (string, error) { | ||
| 77 | + now := time.Now() | ||
| 78 | + expireTime := now.Add(expire) | ||
| 79 | + claims := UserTokenClaims{ | ||
| 80 | + UserId: claim.UserId, | ||
| 81 | + Phone: claim.Phone, | ||
| 82 | + CompanyId: claim.CompanyId, | ||
| 83 | + AdminType: claim.AdminType, | ||
| 84 | + StandardClaims: jwt.StandardClaims{ | ||
| 85 | + ExpiresAt: expireTime.Unix(), | ||
| 86 | + Issuer: "jwt", | ||
| 87 | + }, | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) | ||
| 91 | + token, err := tokenClaims.SignedString(jwtSecret) | ||
| 92 | + return token, err | ||
| 93 | +} |
| @@ -181,10 +181,6 @@ func (this *AuthController) CenterCompanys() { | @@ -181,10 +181,6 @@ func (this *AuthController) CenterCompanys() { | ||
| 181 | msg = m | 181 | msg = m |
| 182 | return | 182 | return |
| 183 | } | 183 | } |
| 184 | - if len(request.Password) == 0 { | ||
| 185 | - msg = protocol.NewResponseMessage(1, "密码不能为空!") | ||
| 186 | - return | ||
| 187 | - } | ||
| 188 | header := this.GetRequestHeader(this.Ctx) | 184 | header := this.GetRequestHeader(this.Ctx) |
| 189 | data, err := auth.CenterCompanys(header, request) | 185 | data, err := auth.CenterCompanys(header, request) |
| 190 | if err != nil { | 186 | if err != nil { |
| @@ -209,6 +205,10 @@ func (this *AuthController) Companys() { | @@ -209,6 +205,10 @@ func (this *AuthController) Companys() { | ||
| 209 | msg = m | 205 | msg = m |
| 210 | return | 206 | return |
| 211 | } | 207 | } |
| 208 | + if request.ClientId != clientId { | ||
| 209 | + msg = protocol.NewResponseMessage(101, "clientId无效") | ||
| 210 | + return | ||
| 211 | + } | ||
| 212 | header := this.GetRequestHeader(this.Ctx) | 212 | header := this.GetRequestHeader(this.Ctx) |
| 213 | data, err := auth.Companys(header, request) | 213 | data, err := auth.Companys(header, request) |
| 214 | if err != nil { | 214 | if err != nil { |
| @@ -16,7 +16,9 @@ func CheckJWTToken(ctx *context.Context) { | @@ -16,7 +16,9 @@ func CheckJWTToken(ctx *context.Context) { | ||
| 16 | if strings.HasSuffix(ctx.Request.RequestURI, "login") || | 16 | if strings.HasSuffix(ctx.Request.RequestURI, "login") || |
| 17 | strings.HasSuffix(ctx.Request.RequestURI, "accessToken") || | 17 | strings.HasSuffix(ctx.Request.RequestURI, "accessToken") || |
| 18 | strings.HasSuffix(ctx.Request.RequestURI, "refreshToken") || | 18 | strings.HasSuffix(ctx.Request.RequestURI, "refreshToken") || |
| 19 | - strings.HasSuffix(ctx.Request.RequestURI, "smsCode") { | 19 | + strings.HasSuffix(ctx.Request.RequestURI, "smsCode") || |
| 20 | + strings.HasSuffix(ctx.Request.RequestURI, "centerCompanys") || | ||
| 21 | + strings.HasSuffix(ctx.Request.RequestURI, "centerCompanys") { | ||
| 20 | return | 22 | return |
| 21 | } | 23 | } |
| 22 | defer func() { | 24 | defer func() { |
| @@ -32,10 +32,12 @@ func init() { | @@ -32,10 +32,12 @@ func init() { | ||
| 32 | nsV1.Router("/dividend/statistics", &controllers.DividendController{}, "Post:DividendStatistics") | 32 | nsV1.Router("/dividend/statistics", &controllers.DividendController{}, "Post:DividendStatistics") |
| 33 | nsV1.Router("/dividend/orders", &controllers.DividendController{}, "Post:DividendOrders") | 33 | nsV1.Router("/dividend/orders", &controllers.DividendController{}, "Post:DividendOrders") |
| 34 | beego.AddNamespace(nsV1) | 34 | beego.AddNamespace(nsV1) |
| 35 | + | ||
| 36 | + InitV2() | ||
| 35 | } | 37 | } |
| 36 | 38 | ||
| 37 | func InitV2() { | 39 | func InitV2() { |
| 38 | - nsV2 := beego.NewNamespace("v2", beego.NSBefore(middleware.CheckJWTToken)) | 40 | + nsV2 := beego.NewNamespace("v2") // , beego.NSBefore(middleware.CheckJWTToken) |
| 39 | nsV2.Router("/auth/login", &controllers.AuthController{}, "Post:LoginV2") | 41 | nsV2.Router("/auth/login", &controllers.AuthController{}, "Post:LoginV2") |
| 40 | beego.AddNamespace(nsV2) | 42 | beego.AddNamespace(nsV2) |
| 41 | } | 43 | } |
-
请 注册 或 登录 后发表评论