From 00a77807aeba096bed0e7fefaf40208f30a52b6b Mon Sep 17 00:00:00 2001 From: kanade Date: Wed, 22 Jun 2022 14:55:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E4=BC=99=E4=BA=BA=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/service/app/register.go | 9 +++- .../v2/controller/wxapp/company/company.go | 25 --------- .../v2/controller/wxapp/copartner/company.go | 33 ++++++++++++ .../controller/wxapp/copartner/copartner.go | 28 ++++++++++ .../v2/controller/wxapp/copartner/personal.go | 52 +++++++++++++++++++ internal/v2/logic/manage/setting/invite.go | 24 ++++----- .../wxapp/{company => copartner}/company.go | 3 +- .../v2/logic/wxapp/copartner/copartner.go | 25 +++++++++ internal/v2/logic/wxapp/copartner/personal.go | 10 ++++ internal/v2/model/inviteCode.go | 2 +- internal/v2/model/userTopCode.go | 17 ++++++ internal/v2/router/wxapp.go | 16 ++++-- 12 files changed, 199 insertions(+), 45 deletions(-) delete mode 100644 internal/v2/controller/wxapp/company/company.go create mode 100644 internal/v2/controller/wxapp/copartner/company.go create mode 100644 internal/v2/controller/wxapp/copartner/copartner.go create mode 100644 internal/v2/controller/wxapp/copartner/personal.go rename internal/v2/logic/wxapp/{company => copartner}/company.go (96%) create mode 100644 internal/v2/logic/wxapp/copartner/copartner.go create mode 100644 internal/v2/logic/wxapp/copartner/personal.go create mode 100644 internal/v2/model/userTopCode.go diff --git a/internal/service/app/register.go b/internal/service/app/register.go index 0e1c4bd..f2e4ef0 100644 --- a/internal/service/app/register.go +++ b/internal/service/app/register.go @@ -58,10 +58,17 @@ func (r *registerUser) UserAdd(c *gin.Context, login *user.Login, info *user.Inf } rd := fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000)) + nickname := "瑞库客" + mobile[7:] + if info != nil && info.Level > 0 { + level = info.Level + parentID = info.ParentID + rootID = info.RootID + nickname = info.Nickname + } *info = user.Information{ ID: lastId, AncestorID: 1, - Nickname: "瑞库客" + mobile[7:], + Nickname: nickname, Mobile: mobile, Birthday: formatime.NewSecondFrom(define.DefaultBirthday), HeadImgUrl: define.DefaultHeadImage, diff --git a/internal/v2/controller/wxapp/company/company.go b/internal/v2/controller/wxapp/company/company.go deleted file mode 100644 index 509f078..0000000 --- a/internal/v2/controller/wxapp/company/company.go +++ /dev/null @@ -1,25 +0,0 @@ -package company - -import ( - "github.com/gin-gonic/gin" - "recook/internal/back" - "recook/internal/v2/logic/wxapp/company" - "recook/tools" -) - -type Company struct { -} - -// Add @Title 添加合伙人 -func (*Company) Add(c *gin.Context) { - var args company.CompanyInfo - if err := tools.Params(&args, c); err != nil { - back.Fail(c, err.Error()) - return - } - if err := company.CompanyLogic.Add(args); err != nil { - back.Fail(c, err.Error()) - } else { - back.Suc(c, "ok", "") - } -} diff --git a/internal/v2/controller/wxapp/copartner/company.go b/internal/v2/controller/wxapp/copartner/company.go new file mode 100644 index 0000000..207f4b0 --- /dev/null +++ b/internal/v2/controller/wxapp/copartner/company.go @@ -0,0 +1,33 @@ +package copartner + +import ( + "github.com/gin-gonic/gin" + "recook/internal/back" + "recook/internal/v2/logic/wxapp/copartner" + "recook/tools" +) + +type Company struct { +} +type argsCompanyAdd struct { + InviteNo string `binding:"required" label:"邀请码"` // 邀请码 + copartner.CompanyInfo +} + +// Add @Title 添加合伙人 +func (*Company) Add(c *gin.Context) { + var args argsCompanyAdd + if err := tools.Params(&args, c); err != nil { + back.Fail(c, err.Error()) + return + } + if err := copartner.CopartnerLogic.Very(args.InviteNo); err != nil { + back.Fail(c, err.Error()) + return + } + if err := copartner.CompanyLogic.Add(args.CompanyInfo); err != nil { + back.Fail(c, err.Error()) + } else { + back.Suc(c, "ok", "") + } +} diff --git a/internal/v2/controller/wxapp/copartner/copartner.go b/internal/v2/controller/wxapp/copartner/copartner.go new file mode 100644 index 0000000..a9e78b6 --- /dev/null +++ b/internal/v2/controller/wxapp/copartner/copartner.go @@ -0,0 +1,28 @@ +package copartner + +import ( + "github.com/gin-gonic/gin" + "recook/internal/v2/lib/back" + "recook/internal/v2/logic/wxapp/copartner" + "recook/tools" +) + +type Copartner struct { +} +type argsCopartnerCode struct { + InviteNo string `binding:"required" label:"邀请码"` // 邀请码 +} + +// Very @Title 验证邀请码 +func (*Copartner) Very(c *gin.Context) { + var args argsCopartnerCode + if err := tools.Params(&args, c); err != nil { + back.Fail(c, err.Error()) + return + } + if err := copartner.CopartnerLogic.Very(args.InviteNo); err != nil { + back.Fail(c, err.Error()) + return + } + back.Suc(c, "ok", "") +} diff --git a/internal/v2/controller/wxapp/copartner/personal.go b/internal/v2/controller/wxapp/copartner/personal.go new file mode 100644 index 0000000..58cc11a --- /dev/null +++ b/internal/v2/controller/wxapp/copartner/personal.go @@ -0,0 +1,52 @@ +package copartner + +import ( + "git.oa00.com/go/mysql" + "github.com/gin-gonic/gin" + "recook/internal/model/user" + service "recook/internal/service/app" + "recook/internal/v2/lib/back" + "recook/internal/v2/logic/wxapp/copartner" + "recook/tools" +) + +type Personal struct { +} +type argsPersonalAdd struct { + Phone string `binding:"required,len=11,startswith=1" label:"手机号"` + Nickname string `binding:"required" label:"昵称"` + InviteNo string `binding:"required" label:"邀请码"` +} + +// Add @Title 添加合伙人 +func (*Personal) Add(c *gin.Context) { + args := argsPersonalAdd{} + err := tools.Params(&args, c) + if err != nil { + back.Fail(c, err.Error()) + return + } + if err := copartner.CopartnerLogic.Very(args.InviteNo); err != nil { + back.Fail(c, err.Error()) + return + } + information := user.Information{Mobile: args.Phone} + mysql.Db.Where(&information).First(&information) + if information.ID > 0 { + back.Fail(c, "手机号已存在") + return + } + // 从手机注册时用户邀请码默认为id时6的用户,邀请码为NXR0L3 + // p.InvitationNo = "NXR0L3" + // 根据 不同的码 去调用不同的 下级规则 + // 获取用户角色等级 + registerUser := service.NewRegisterUser() + // 开始添加用户 + information.Nickname = args.Nickname + information.Level = 10 + if err := registerUser.UserAdd(c, &user.Login{}, &information, args.Phone); err != nil { + back.Fail(c, "提交失败") + return + } + back.Suc(c, "操作成功", nil) +} diff --git a/internal/v2/logic/manage/setting/invite.go b/internal/v2/logic/manage/setting/invite.go index 9b444e0..ec92fcd 100644 --- a/internal/v2/logic/manage/setting/invite.go +++ b/internal/v2/logic/manage/setting/invite.go @@ -4,8 +4,8 @@ import ( "errors" "git.oa00.com/go/mysql" "recook/internal/libs/bean" - "recook/internal/model/user" "recook/internal/v2/logic/command" + "recook/internal/v2/model" "time" ) @@ -14,7 +14,7 @@ var InviteLogic = &inviteLogic{} type inviteLogic struct { } type inviteItem struct { - Id int64 `json:"id"` + Id uint `json:"id"` Code string `json:"code"` CreateTime int64 `json:"create_time"` EndTime int64 `json:"end_time"` @@ -23,16 +23,16 @@ type inviteItem struct { // Lists @Title 返回邀请码列表 func (i *inviteLogic) Lists(page bean.Page) (lists []inviteItem, total int64) { lists = []inviteItem{} - var inviteCodes []user.InviteCode + var inviteCodes []model.TopCode mysql.Db.Model(&inviteCodes).Count(&total) if page.HasPage(total) { mysql.Db.Offset(page.GetStart()).Limit(page.Limit).Find(&inviteCodes) for _, inviteCode := range inviteCodes { lists = append(lists, inviteItem{ - Id: inviteCode.ID, - Code: inviteCode.InviterCode, - CreateTime: inviteCode.CreatedAt.Unix(), - EndTime: inviteCode.ExpiredAt.Unix(), + Id: inviteCode.Id, + Code: inviteCode.Code, + CreateTime: inviteCode.CreatedTime.Unix(), + EndTime: inviteCode.EndTime.Unix(), }) } } @@ -46,10 +46,10 @@ func (i *inviteLogic) Gen(nowTime string) error { if err != nil { return errors.New("时间格式错误") } - inviete := user.InviteCode{ - InviterCode: random, - CreatedAt: time.Now(), - ExpiredAt: location, + inviete := model.TopCode{ + Code: random, + CreatedTime: time.Now(), + EndTime: location, } if mysql.Db.Create(&inviete).Error != nil { return errors.New("生成失败") @@ -59,7 +59,7 @@ func (i *inviteLogic) Gen(nowTime string) error { // Cancellation @Title 作废邀请码 func (i *inviteLogic) Cancellation(inviteId int64) error { - inviete := user.InviteCode{} + inviete := model.TopCode{} if mysql.Db.Where("id = ?", inviteId).First(&inviete).Error != nil { return errors.New("邀请码不存在") } diff --git a/internal/v2/logic/wxapp/company/company.go b/internal/v2/logic/wxapp/copartner/company.go similarity index 96% rename from internal/v2/logic/wxapp/company/company.go rename to internal/v2/logic/wxapp/copartner/company.go index d4fef38..cce8c6d 100644 --- a/internal/v2/logic/wxapp/company/company.go +++ b/internal/v2/logic/wxapp/copartner/company.go @@ -1,4 +1,4 @@ -package company +package copartner import ( "errors" @@ -16,7 +16,6 @@ var CompanyLogic = &companyLogic{} type companyLogic struct { } type CompanyInfo struct { - PcType uint //个人或者企业 0 == 个人 1 == 企业 Phone string `binding:"required,len=11,startswith=1" label:"手机号"` //手机号 NikeName string `binding:"required" label:"昵称"` //昵称 BusinessLicense string `binding:"required" label:"印业执照"` //营业执照 diff --git a/internal/v2/logic/wxapp/copartner/copartner.go b/internal/v2/logic/wxapp/copartner/copartner.go new file mode 100644 index 0000000..1317063 --- /dev/null +++ b/internal/v2/logic/wxapp/copartner/copartner.go @@ -0,0 +1,25 @@ +package copartner + +import ( + "errors" + "git.oa00.com/go/mysql" + "recook/internal/v2/model" + "time" +) + +var CopartnerLogic = &copartnerLogic{} + +type copartnerLogic struct { +} + +// Very @Title 验证邀请码 +func (*copartnerLogic) Very(inviteNo string) error { + topCode := model.TopCode{Code: inviteNo} + if mysql.Db.Where(&topCode).First(&topCode).Error != nil { + return errors.New("邀请码不存在") + } + if topCode.EndTime.Before(time.Now()) { + return errors.New("邀请码过期") + } + return nil +} diff --git a/internal/v2/logic/wxapp/copartner/personal.go b/internal/v2/logic/wxapp/copartner/personal.go new file mode 100644 index 0000000..f69ed6c --- /dev/null +++ b/internal/v2/logic/wxapp/copartner/personal.go @@ -0,0 +1,10 @@ +package copartner + +var PersonalLogic = &personalLogic{} + +type personalLogic struct { +} + +// Add @Title 添加合伙人-个人 +func (*personalLogic) Add(phone, nickname string) { +} diff --git a/internal/v2/model/inviteCode.go b/internal/v2/model/inviteCode.go index e176e71..313cdde 100644 --- a/internal/v2/model/inviteCode.go +++ b/internal/v2/model/inviteCode.go @@ -1,4 +1,4 @@ -package user +package model import "time" diff --git a/internal/v2/model/userTopCode.go b/internal/v2/model/userTopCode.go new file mode 100644 index 0000000..fb6a555 --- /dev/null +++ b/internal/v2/model/userTopCode.go @@ -0,0 +1,17 @@ +package model + +import ( + "time" +) + +type TopCode struct { + Id uint `gorm:"column:id;primary_key" json:"id"` + Code string `gorm:"column:code" json:"code"` + CreatedTime time.Time `gorm:"column:created_time" json:"createdTime"` + EndTime time.Time `gorm:"column:end_time" json:"endTime"` + UserId uint `gorm:"column:user_id" json:"userId"` +} + +func (r *TopCode) TableName() string { + return "recook_user_top_code" +} diff --git a/internal/v2/router/wxapp.go b/internal/v2/router/wxapp.go index 622adeb..a57067e 100644 --- a/internal/v2/router/wxapp.go +++ b/internal/v2/router/wxapp.go @@ -2,7 +2,7 @@ package router import ( "github.com/gin-gonic/gin" - "recook/internal/v2/controller/wxapp/company" + "recook/internal/v2/controller/wxapp/copartner" "recook/internal/v2/router/middleware" ) @@ -10,11 +10,19 @@ import ( func routerWxapp(wxappRouter *gin.RouterGroup) { authorize := middleware.AppAuthorize() - companyRouter := wxappRouter.Group("company", authorize) + copartnerRouter := wxappRouter.Group("copartner", authorize) { - companyController := company.Company{} + copartnerController := copartner.Copartner{} { - companyRouter.POST("add", companyController.Add) //wxapp添加合伙人 + copartnerRouter.POST("copartner/very", copartnerController.Very) //wxapp添加合伙人-公司 + } + companyController := copartner.Company{} + { + copartnerRouter.POST("company/add", companyController.Add) //wxapp添加合伙人-公司 + } + personalController := copartner.Personal{} + { + copartnerRouter.POST("personal/add", personalController.Add) // wxapp添加合伙人-个人 } } }