From eccd71809db29c52718c1cee812221032301b911 Mon Sep 17 00:00:00 2001 From: henry Date: Tue, 12 Oct 2021 16:53:49 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=AE=8C=E5=96=84=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/account.go | 2 +- app/api/controller/logs.go | 2 +- app/api/controller/role/instance.go | 2 +- app/api/controller/tenant/instance.go | 4 +- app/common/model/common.go | 4 + app/common/model/manage_company.go | 1 + app/common/model/manage_expert.go | 1 + app/common/model/manage_laboratory.go | 1 + app/common/model/sys_tenant.go | 2 + app/common/model/sys_user.go | 1 + app/enterprise/api/account.go | 2 +- app/enterprise/controller/account/other.go | 22 +++- app/enterprise/controller/account/register.go | 2 + cron/tenant.go | 111 ++++++++---------- 14 files changed, 88 insertions(+), 69 deletions(-) diff --git a/app/api/controller/account.go b/app/api/controller/account.go index 2b84072..f758a4c 100644 --- a/app/api/controller/account.go +++ b/app/api/controller/account.go @@ -73,7 +73,7 @@ func (c *Account) Login(account, password, captchaKey, captchaValue, equipment, } if level <= 0 { session.TenantID = mSysTenant.ID - session.TenantKey = mSysTenant.Key + //session.TenantKey = mSysTenant.Key } // 判断是否含有含有上级 if mSysTenant.ParentID <= 0 { diff --git a/app/api/controller/logs.go b/app/api/controller/logs.go index 941199b..dd53fb6 100644 --- a/app/api/controller/logs.go +++ b/app/api/controller/logs.go @@ -47,7 +47,7 @@ func (c *Log) Login(name string, page, pageSize int) (*ReturnPages, error) { SysUserLoginLogInfo: v, IPAddress: string(ipAddress), }) } - return &ReturnPages{Data: list, Page: page, TotalCount: count}, nil + return &ReturnPages{Data: list, Count: count}, nil } func NewLog() LogHandle { diff --git a/app/api/controller/role/instance.go b/app/api/controller/role/instance.go index 7eb38a0..c9c77df 100644 --- a/app/api/controller/role/instance.go +++ b/app/api/controller/role/instance.go @@ -63,7 +63,7 @@ func (c *Instance) List(name string, status, page, pageSize int) (*controller.Re for _, v := range out { list = append(list, &InstanceInfo{SysRole: v, StatusTitle: v.StatusTitle()}) } - return &controller.ReturnPages{Data: list, Page: page, TotalCount: count}, nil + return &controller.ReturnPages{Data: list, Count: count}, nil } diff --git a/app/api/controller/tenant/instance.go b/app/api/controller/tenant/instance.go index 286c37d..3c75402 100644 --- a/app/api/controller/tenant/instance.go +++ b/app/api/controller/tenant/instance.go @@ -97,7 +97,7 @@ func member(id uint64) func(args ...interface{}) (interface{}, error) { if err != nil { return nil, err } - return &controller.ReturnPages{Data: out, Page: page, TotalCount: count}, nil + return &controller.ReturnPages{Data: out, Count: count}, nil } } @@ -165,7 +165,7 @@ func (c *Instance) List(name string, status, page, pageSize int) (*controller.Re list = append(list, &InstanceInfo{SysTenantInfo: v}) } - return &controller.ReturnPages{Data: list, Page: page, TotalCount: count}, nil + return &controller.ReturnPages{Data: list, Count: count}, nil } // Add 数据处理 diff --git a/app/common/model/common.go b/app/common/model/common.go index f3c39af..8c994cc 100644 --- a/app/common/model/common.go +++ b/app/common/model/common.go @@ -51,6 +51,10 @@ func (m *Images) AnalysisSlice(domain string) []string { return images } +type Local struct { + Local uint64 `gorm:"column:local;type:int(11);default:0;comment:数据位置来源" json:"-"` +} + // AccountStatus 账号状态 type AccountStatus struct { Status AccountStatusKind `gorm:"column:status;type:tinyint(1);default:1;comment:状态(1:启用,2:禁用)" json:"-"` diff --git a/app/common/model/manage_company.go b/app/common/model/manage_company.go index 966cca8..40db823 100644 --- a/app/common/model/manage_company.go +++ b/app/common/model/manage_company.go @@ -5,6 +5,7 @@ import "SciencesServer/utils" // ManageCompany 公司企业管理 type ManageCompany struct { Model + Local UID uint64 `gorm:"column:uid;type:int;default:0;comment:用户uuid" json:"-"` Name string `gorm:"column:name;type:varchar(30);default:null;comment:名称" json:"name"` Code string `gorm:"column:code;type:varchar(30);default:null;comment:信用代码" json:"code"` diff --git a/app/common/model/manage_expert.go b/app/common/model/manage_expert.go index 5a7b568..140a304 100644 --- a/app/common/model/manage_expert.go +++ b/app/common/model/manage_expert.go @@ -8,6 +8,7 @@ import ( // ManageExpert 专家入驻信息管理 type ManageExpert struct { Model + Local ModelTenant UID uint64 `gorm:"column:uid;type:int;default:0;comment:用户uuid" json:"-"` Area diff --git a/app/common/model/manage_laboratory.go b/app/common/model/manage_laboratory.go index e4641a5..ac7eddd 100644 --- a/app/common/model/manage_laboratory.go +++ b/app/common/model/manage_laboratory.go @@ -7,6 +7,7 @@ import ( // ManageLaboratory 实验室信息管理 type ManageLaboratory struct { Model + Local ModelTenant UID uint64 `gorm:"column:uid;type:int;default:0;comment:用户uuid" json:"-"` Name string `gorm:"column:name;type:varchar(30);default:null;comment:名称" json:"name"` diff --git a/app/common/model/sys_tenant.go b/app/common/model/sys_tenant.go index 9c21679..be88e07 100644 --- a/app/common/model/sys_tenant.go +++ b/app/common/model/sys_tenant.go @@ -2,6 +2,7 @@ package model type SysTenant struct { Model + Key string `gorm:"column:key;type:varchar(30);default:null;comment:key" json:"key"` ParentID uint64 `gorm:"column:parent_id;type:int;default:0;comment:父级ID" json:"-"` Image Name string `gorm:"column:name;type:varchar(30);default:null;comment:名称" json:"name"` @@ -12,6 +13,7 @@ type SysTenant struct { Industry uint64 `gorm:"column:industry;type:int(11);default:0;comment:所属领域" json:"industry"` Introduce string `gorm:"column:introduce;type:text;comment:介绍描述" json:"introduce"` Config string `gorm:"column:config;type:varchar(255);default:null;comment:配置信息" json:"-"` + Remark string `gorm:"column:remark;type:varchar(255);default:null;comment:备注信息" json:"remark"` ModelDeleted ModelAt } diff --git a/app/common/model/sys_user.go b/app/common/model/sys_user.go index e0d902e..9fafa17 100644 --- a/app/common/model/sys_user.go +++ b/app/common/model/sys_user.go @@ -10,6 +10,7 @@ import ( type SysUser struct { Model + Local UUID uint64 `gorm:"column:uuid;uniqueIndex:idx_sys_user_uuid;type:int;default:0;comment:用户唯一UUID" json:"-"` Account string `gorm:"column:account;type:varchar(50);default:null;comment:账户名" json:"account"` Avatar string `gorm:"column:avatar;type:varchar(255);default:null;comment:头像" json:"avatar"` diff --git a/app/enterprise/api/account.go b/app/enterprise/api/account.go index fe12662..ac114d6 100644 --- a/app/enterprise/api/account.go +++ b/app/enterprise/api/account.go @@ -61,7 +61,7 @@ func (a *Account) Register(c *gin.Context) { } func (a *Account) BindMobile() { - account.NewOther()().BindMobile() + //account.NewOther()().BindMobile() } func (a *Account) Logout(c *gin.Context) { diff --git a/app/enterprise/controller/account/other.go b/app/enterprise/controller/account/other.go index e7694d6..bda18cb 100644 --- a/app/enterprise/controller/account/other.go +++ b/app/enterprise/controller/account/other.go @@ -1,11 +1,29 @@ package account +import ( + "SciencesServer/app/handle" + "SciencesServer/utils" + "errors" +) + type Other struct{} type OtherHandle func() *Other -func (c *Other) BindMobile() { - +// BindMobile 绑定手机号码 +func (c *Other) BindMobile(token, mobile, captcha string) (interface{}, error) { + if !utils.ValidateMobile(mobile) { + return nil, errors.New("手机号码格式异常") + } + pass, err := handle.NewCaptcha().Validate(&handle.CaptchaSms{ + Mobile: mobile, Captcha: captcha, + }) + if err != nil { + return nil, err + } else if !pass { + return nil, errors.New("验证码错误或已过期") + } + return nil, nil } func NewOther() OtherHandle { diff --git a/app/enterprise/controller/account/register.go b/app/enterprise/controller/account/register.go index 5c3faea..aa7dde5 100644 --- a/app/enterprise/controller/account/register.go +++ b/app/enterprise/controller/account/register.go @@ -33,10 +33,12 @@ func (c *RegisterParams) checkUserExist(mUserInstance *model2.UserInstance) (boo } return count > 0, nil } + func (c *RegisterParams) checkCaptcha() (bool, error) { return handle.NewCaptcha().Validate(&handle.CaptchaSms{Captcha: c.Captcha, Mobile: c.Mobile}) } +// Launch 发起注册 func (c *Register) Launch(params *RegisterParams) (*InstanceLoginReturn, error) { if params.checkPassword() { return nil, errors.New("两次密码不一致") diff --git a/cron/tenant.go b/cron/tenant.go index b2bbd57..3372573 100644 --- a/cron/tenant.go +++ b/cron/tenant.go @@ -1,16 +1,5 @@ package cron -import ( - "SciencesServer/app/common/model" - "SciencesServer/app/service" - "SciencesServer/config" - "SciencesServer/serve/logger" - "SciencesServer/serve/orm" - "time" - - "gorm.io/gorm" -) - type Tenant struct{} type TenantHandle func() (string, func()) @@ -19,56 +8,56 @@ type TenantHandle func() (string, func()) func (this *Tenant) ContractDeadline() TenantHandle { return func() (string, func()) { return "0 0 0 * * ?", func() { - now := time.Now() - - mSysTenant := model.NewSysTenant() - - out := make([]*model.SysTenant, 0) - - err := model.Find(mSysTenant, &out, &model.ModelWhereOrder{Where: model.NewWhereIn("status", []model.SysTenantStatus{ - model.SysTenantStatusForNormal, model.SysTenantStatusForWellExpire, - })}, &model.ModelWhereOrder{Where: model.NewWhereCondition("deadline", ">=", now.AddDate(0, 0, -7))}) - - if err != nil { - logger.ErrorF("Cron Tenant ContractDeadline Error:%v", err) - return - } - well := make([]uint64, 0) - expired := make([]uint64, 0) - expiredKey := make([]string, 0) - - for _, v := range out { - // 超过协议时间 - if v.Deadline.After(now) { - expired = append(expired, v.ID) - expiredKey = append(expiredKey, v.Key) - continue - } - if v.Status == model.SysTenantStatusForNormal { - well = append(well, v.ID) - } - } - if err = orm.GetDB().Transaction(func(tx *gorm.DB) error { - if len(well) > 0 { - if err = model.UpdatesWhere(mSysTenant, map[string]interface{}{ - "status": model.SysTenantStatusForWellExpire, "updated_at": now, - }, []*model.ModelWhere{model.NewWhereIn("id", well)}, tx); err != nil { - return err - } - } - if len(expired) > 0 { - if err = model.UpdatesWhere(mSysTenant, map[string]interface{}{ - "status": model.SysTenantStatusForExpired, "updated_at": now, - }, []*model.ModelWhere{model.NewWhereIn("id", expired)}, tx); err != nil { - return err - } - service.Publish(config.EventForRedisListDestroy, config.RedisKeyForTenant, expiredKey) - } - return nil - }); err != nil { - logger.ErrorF("Cron Tenant ContractDeadline Transaction Error:%v", err) - return - } + //now := time.Now() + // + //mSysTenant := model.NewSysTenant() + // + //out := make([]*model.SysTenant, 0) + // + //err := model.Find(mSysTenant, &out, &model.ModelWhereOrder{Where: model.NewWhereIn("status", []model.SysTenantStatus{ + // model.SysTenantStatusForNormal, model.SysTenantStatusForWellExpire, + //})}, &model.ModelWhereOrder{Where: model.NewWhereCondition("deadline", ">=", now.AddDate(0, 0, -7))}) + // + //if err != nil { + // logger.ErrorF("Cron Tenant ContractDeadline Error:%v", err) + // return + //} + //well := make([]uint64, 0) + //expired := make([]uint64, 0) + //expiredKey := make([]string, 0) + // + //for _, v := range out { + // // 超过协议时间 + // if v.Deadline.After(now) { + // expired = append(expired, v.ID) + // expiredKey = append(expiredKey, v.Key) + // continue + // } + // if v.Status == model.SysTenantStatusForNormal { + // well = append(well, v.ID) + // } + //} + //if err = orm.GetDB().Transaction(func(tx *gorm.DB) error { + // if len(well) > 0 { + // if err = model.UpdatesWhere(mSysTenant, map[string]interface{}{ + // "status": model.SysTenantStatusForWellExpire, "updated_at": now, + // }, []*model.ModelWhere{model.NewWhereIn("id", well)}, tx); err != nil { + // return err + // } + // } + // if len(expired) > 0 { + // if err = model.UpdatesWhere(mSysTenant, map[string]interface{}{ + // "status": model.SysTenantStatusForExpired, "updated_at": now, + // }, []*model.ModelWhere{model.NewWhereIn("id", expired)}, tx); err != nil { + // return err + // } + // service.Publish(config.EventForRedisListDestroy, config.RedisKeyForTenant, expiredKey) + // } + // return nil + //}); err != nil { + // logger.ErrorF("Cron Tenant ContractDeadline Transaction Error:%v", err) + // return + //} return } }