From bc36a04ee6468d0a38f540fc0f9006c925ce9789 Mon Sep 17 00:00:00 2001 From: KK Date: Wed, 22 Jun 2022 10:20:53 +0800 Subject: [PATCH 1/2] test --- go.mod | 1 - go.sum | 8 --- .../v2/controller/manage/setting/invite.go | 70 +++++++++++++++++++ .../v2/controller/wxapp/company/company.go | 25 +++++++ internal/v2/logic/command/command.go | 14 ++++ internal/v2/logic/manage/setting/invite.go | 70 +++++++++++++++++++ internal/v2/logic/wxapp/company/company.go | 66 +++++++++++++++++ internal/v2/model/inviteCode.go | 16 +++++ internal/v2/router/manage.go | 13 +++- internal/v2/router/router.go | 2 + internal/v2/router/wxapp.go | 20 ++++++ 11 files changed, 295 insertions(+), 10 deletions(-) create mode 100644 internal/v2/controller/manage/setting/invite.go create mode 100644 internal/v2/controller/wxapp/company/company.go create mode 100644 internal/v2/logic/manage/setting/invite.go create mode 100644 internal/v2/logic/wxapp/company/company.go create mode 100644 internal/v2/model/inviteCode.go create mode 100644 internal/v2/router/wxapp.go diff --git a/go.mod b/go.mod index 770f140..251efd0 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,6 @@ go 1.16 require ( git.oa00.com/go/alipay v1.0.0 git.oa00.com/go/mysql v1.0.0 - git.oa00.com/go/wxpay v1.0.0 github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.0 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 github.com/alibabacloud-go/opensearch-util v1.0.1 diff --git a/go.sum b/go.sum index 814387b..cfc676a 100644 --- a/go.sum +++ b/go.sum @@ -6,10 +6,6 @@ git.oa00.com/go/alipay v1.0.0 h1:/qVT7lKc1FbVnCzpXwsHOZODamsiZzhhCFxjgez1+2o= git.oa00.com/go/alipay v1.0.0/go.mod h1:GCFXgnZofi69vtV8fMOsHGWZqp958lyXlKfCwvhVBL8= git.oa00.com/go/mysql v1.0.0 h1:E9H6MF0eYgFovLmVYgyCiwjIestp/wRPWjwKyayg3LI= git.oa00.com/go/mysql v1.0.0/go.mod h1:pQm9xCn8iFew9egnEPvzAlggGykmAlwV1nqTX5KIXiQ= -git.oa00.com/go/rsa v1.0.0 h1:cscSyfYeNxqUjEt/rUiPjPlqeZW/pdLDqVTrS64llJM= -git.oa00.com/go/rsa v1.0.0/go.mod h1:y4272MGmgvdEGcXIcPRBwteDo/zeqTEtRpqJBpK1Luk= -git.oa00.com/go/wxpay v1.0.0 h1:A/XT7/8fYs1hPujItAh/B2/ymRLkMAh4jzKUIzWQasQ= -git.oa00.com/go/wxpay v1.0.0/go.mod h1:RyvSqgH+If78a7QLe+7r+D3R5F+E/WyNRsCVWQ6hmGM= github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.0 h1:tDWYNCJrpNnlNg8mVdlzAzPjlPaRbsA/kS8H9LczleQ= github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.0/go.mod h1:Uwb0d1GgxJieUWZG5WylTrgQ2SrldfjagAxheU8W6MQ= github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= @@ -43,8 +39,6 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/agiledragon/gomonkey v2.0.2+incompatible h1:eXKi9/piiC3cjJD1658mEE2o3NjkJ5vDLgYjCQu0Xlw= -github.com/agiledragon/gomonkey v2.0.2+incompatible/go.mod h1:2NGfXu1a80LLr2cmWXGBDaHEjb1idR6+FVlX5T3D9hw= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= @@ -589,8 +583,6 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= -github.com/wechatpay-apiv3/wechatpay-go v0.2.11 h1:KEVmn6VxFeoCdnTno4yLOWMmdG/wS7KWURzeuVXH6RU= -github.com/wechatpay-apiv3/wechatpay-go v0.2.11/go.mod h1:W8ucVAOCKOii933cWROLaDLmRQ2cg/vHHVF4vGAVq9Q= github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= diff --git a/internal/v2/controller/manage/setting/invite.go b/internal/v2/controller/manage/setting/invite.go new file mode 100644 index 0000000..c918a15 --- /dev/null +++ b/internal/v2/controller/manage/setting/invite.go @@ -0,0 +1,70 @@ +package setting + +import ( + "github.com/gin-gonic/gin" + "recook/internal/libs/bean" + "recook/internal/v2/lib/back" + "recook/internal/v2/logic/manage/setting" + "recook/tools" +) + +type Invite struct { +} +type PageItem struct { +} + +// Lists 返回邀请码 +func (*Invite) Lists(c *gin.Context) { + args := bean.Page{} + err := tools.Params(&args, c) + if err != nil { + back.Fail(c, err.Error()) + return + } + lists, total := setting.InviteLogic.Lists(args) + back.Suc(c, "操作成功", bean.ResultLists{ + List: lists, + Total: int(total), + }) +} + +type arsgInviteCreateInvite struct { + NowTime string +} + +// Gen 创建邀请码 +func (*Invite) Gen(c *gin.Context) { + args := arsgInviteCreateInvite{} + err := tools.Params(&args, c) + if err != nil { + back.Fail(c, err.Error()) + return + } + if err := setting.InviteLogic.Gen(args.NowTime); err != nil { + back.Fail(c, err.Error()) + return + } + back.Suc(c, "操作成功", nil) +} + +type arsgInviteCancellation struct { + InviteId int64 +} + +func (*Invite) Cancellation(c *gin.Context) { + args := arsgInviteCancellation{} + err := tools.Params(&args, c) + if err != nil { + back.Fail(c, err.Error()) + return + } + if args.InviteId == 0 { + back.Fail(c, "参数错误") + return + } + if err := setting.InviteLogic.Cancellation(args.InviteId); err != nil { + back.Fail(c, err.Error()) + return + } + back.Suc(c, "操作成功", nil) +} diff --git a/internal/v2/controller/wxapp/company/company.go b/internal/v2/controller/wxapp/company/company.go new file mode 100644 index 0000000..509f078 --- /dev/null +++ b/internal/v2/controller/wxapp/company/company.go @@ -0,0 +1,25 @@ +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/logic/command/command.go b/internal/v2/logic/command/command.go index f0a6bee..2c8d752 100644 --- a/internal/v2/logic/command/command.go +++ b/internal/v2/logic/command/command.go @@ -1,8 +1,10 @@ package command import ( + "math/rand" command2 "recook/internal/v2/model/recook/command" "recook/tools" + "time" ) var CommandLogic = &commandLogic{} @@ -10,6 +12,18 @@ var CommandLogic = &commandLogic{} type commandLogic struct { } +// Random @Title 生成随机数 +func (*commandLogic) Random(length int) string { + var strByte = []byte("QWERTYUIOPLKJHGFDSAZXCVBNMqweasdzxcrtyfghvbnuiojklmop123456789") + strByteLen := len(strByte) + result := "" + r := rand.New(rand.NewSource(time.Now().UnixNano())) + for i := 0; i < length; i++ { + result += string(strByte[r.Intn(strByteLen)]) + } + return result +} + // @Style 生成瑞口令 func (*commandLogic) Generate(value string) string { command := tools.RandStr(12) diff --git a/internal/v2/logic/manage/setting/invite.go b/internal/v2/logic/manage/setting/invite.go new file mode 100644 index 0000000..9b444e0 --- /dev/null +++ b/internal/v2/logic/manage/setting/invite.go @@ -0,0 +1,70 @@ +package setting + +import ( + "errors" + "git.oa00.com/go/mysql" + "recook/internal/libs/bean" + "recook/internal/model/user" + "recook/internal/v2/logic/command" + "time" +) + +var InviteLogic = &inviteLogic{} + +type inviteLogic struct { +} +type inviteItem struct { + Id int64 `json:"id"` + Code string `json:"code"` + CreateTime int64 `json:"create_time"` + EndTime int64 `json:"end_time"` +} + +// Lists @Title 返回邀请码列表 +func (i *inviteLogic) Lists(page bean.Page) (lists []inviteItem, total int64) { + lists = []inviteItem{} + var inviteCodes []user.InviteCode + 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(), + }) + } + } + return +} + +// Gen @Title 创建生成码 +func (i *inviteLogic) Gen(nowTime string) error { + random := command.CommandLogic.Random(6) + location, err := time.ParseInLocation("2006-01-02 15:04:05", nowTime, time.Local) + if err != nil { + return errors.New("时间格式错误") + } + inviete := user.InviteCode{ + InviterCode: random, + CreatedAt: time.Now(), + ExpiredAt: location, + } + if mysql.Db.Create(&inviete).Error != nil { + return errors.New("生成失败") + } + return nil +} + +// Cancellation @Title 作废邀请码 +func (i *inviteLogic) Cancellation(inviteId int64) error { + inviete := user.InviteCode{} + if mysql.Db.Where("id = ?", inviteId).First(&inviete).Error != nil { + return errors.New("邀请码不存在") + } + if mysql.Db.Model(&inviete).Update("end_time", time.Now()).Error != nil { + return errors.New("作废失败") + } + return nil +} diff --git a/internal/v2/logic/wxapp/company/company.go b/internal/v2/logic/wxapp/company/company.go new file mode 100644 index 0000000..d4fef38 --- /dev/null +++ b/internal/v2/logic/wxapp/company/company.go @@ -0,0 +1,66 @@ +package company + +import ( + "errors" + "fmt" + "git.oa00.com/go/mysql" + "github.com/golangkit/formatime" + "github.com/shopspring/decimal" + "gorm.io/gorm" + "recook/internal/v2/model/company" + "recook/internal/v2/model/recook/user" +) + +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:"印业执照"` //营业执照 + CorporationName string `binding:"required" label:"企业名"` //企业名 + TaxBillType string `binding:"required" label:"纳税类型"` //纳税类型 + Taxpayer string `binding:"required" label:"纳税识别号"` //纳税识别号 + OpeningBank string `binding:"required" label:"开户行"` //开户行 + BankAccount string `binding:"required" label:"银行账户"` //银行账户 + MakeTax decimal.Decimal `binding:"required" label:"开票税率"` //开票税率 + Linkman string `binding:"required" label:"联系人"` //联系人 + PEmail string `binding:"required" label:"联系人手机号或者邮箱"` //联系人手机号或者邮箱 +} + +// Add @Title 添加合伙人 +func (c *companyLogic) Add(data CompanyInfo) error { + userInfoModel := user.RecookUserInfoModel{Mobile: data.Phone} + mysql.Db.Where(&userInfoModel).First(&userInfoModel) + if userInfoModel.Id > 0 { + return fmt.Errorf("手机已存在") + } + userInfo := user.RecookUserInfoModel{Nickname: data.NikeName} + mysql.Db.Where(&userInfo).First(&userInfoModel) + if userInfo.Id > 0 { + return fmt.Errorf("昵称已存在") + } + companyInfo := company.Info{ + ShopName: data.NikeName, + Mobile: data.Phone, + BusinessPhoto: data.BusinessLicense, + TaxBank: data.OpeningBank, + TaxAccount: data.BankAccount, + Tax: data.MakeTax, + TaxType: data.TaxBillType, + ContractEmail: data.PEmail, + TaxNumber: data.Taxpayer, + ContractName: data.Linkman, + CompanyName: data.CorporationName, + State: company.Wait, + CreatedAt: formatime.NewSecondNow(), + } + return mysql.Db.Transaction(func(tx *gorm.DB) error { + if tx.Create(&companyInfo).Error != nil { + return errors.New("提交失败") + } + return nil + }) +} diff --git a/internal/v2/model/inviteCode.go b/internal/v2/model/inviteCode.go new file mode 100644 index 0000000..e176e71 --- /dev/null +++ b/internal/v2/model/inviteCode.go @@ -0,0 +1,16 @@ +package user + +import "time" + +// 邀请人的历史记录 +type InviteCode struct { + ID int64 `gorm:"column:id" json:"id"` + InviterUserID uint `gorm:"inviter_user_id" json:"inviterUserId"` + InviterCode string `gorm:"column:inviter_code" json:"userId"` + ExpiredAt time.Time `gorm:"column:expired_at" json:"expiredAt"` + CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` +} + +func (r *InviteCode) TableName() string { + return "recook_invite_code" +} diff --git a/internal/v2/router/manage.go b/internal/v2/router/manage.go index d9a6290..b204efd 100644 --- a/internal/v2/router/manage.go +++ b/internal/v2/router/manage.go @@ -21,6 +21,7 @@ import ( "recook/internal/v2/controller/manage/message" operationController2 "recook/internal/v2/controller/manage/operationController" "recook/internal/v2/controller/manage/order" + "recook/internal/v2/controller/manage/setting" "recook/internal/v2/controller/manage/special_sale" "recook/internal/v2/controller/manage/upgrade" "recook/internal/v2/controller/manage/user" @@ -500,6 +501,16 @@ func routerManage(manageRouter *gin.RouterGroup) { operationRouter.POST("ce_se/rate", operationController.CeSeRate) //测试 } + // 配置 + settingRouter := manageRouter.Group("setting", authorize) + { + inviteController := setting.Invite{} + { + settingRouter.POST("invite/list", inviteController.Lists) // 获取邀请码 + settingRouter.POST("invite/gen", inviteController.Gen) // 生成邀请码 + settingRouter.POST("invite/Cancellation", inviteController.Cancellation) // 作废邀请码 + } + } //活动位模块 { activeBitRouter := manageRouter.Group("active_bit", authorize) @@ -782,7 +793,7 @@ func routerManage(manageRouter *gin.RouterGroup) { companyRouter.POST("all", proxy.All) companyRouter.POST("sure", proxy.Sure) companyRouter.POST("reject", proxy.Reject) - companyRouter.POST("apply", proxy.Apply) + companyRouter.POST("apply", proxy.Apply) // 创建合伙人 } } } diff --git a/internal/v2/router/router.go b/internal/v2/router/router.go index 0b68a83..da4c9cd 100644 --- a/internal/v2/router/router.go +++ b/internal/v2/router/router.go @@ -16,4 +16,6 @@ func Router(router *gin.RouterGroup) { // app端路由 routerApp(router.Group("app")) + // app端路由 + routerWxapp(router.Group("wxapp")) } diff --git a/internal/v2/router/wxapp.go b/internal/v2/router/wxapp.go new file mode 100644 index 0000000..622adeb --- /dev/null +++ b/internal/v2/router/wxapp.go @@ -0,0 +1,20 @@ +package router + +import ( + "github.com/gin-gonic/gin" + "recook/internal/v2/controller/wxapp/company" + "recook/internal/v2/router/middleware" +) + +// @Style recook总后台 +func routerWxapp(wxappRouter *gin.RouterGroup) { + authorize := middleware.AppAuthorize() + + companyRouter := wxappRouter.Group("company", authorize) + { + companyController := company.Company{} + { + companyRouter.POST("add", companyController.Add) //wxapp添加合伙人 + } + } +} From 00a77807aeba096bed0e7fefaf40208f30a52b6b Mon Sep 17 00:00:00 2001 From: kanade Date: Wed, 22 Jun 2022 14:55:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=90=88=E4=BC=99=E4=BA=BA=E7=94=B3?= =?UTF-8?q?=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添加合伙人-个人 } } }