package user import ( "SciencesServer/app/api/enterprise/model" model2 "SciencesServer/app/common/model" "SciencesServer/app/handle" "SciencesServer/app/session" "SciencesServer/utils" "errors" ) type Bank struct { *session.Enterprise } type BankHandle func(session *session.Enterprise) *Bank type ( // BankInfo 银行卡信息 BankInfo struct { ID string `json:"id"` *model2.UserBank } // BankParams 银行卡参数信息 BankParams struct { Name, IDCard, BankCard, BankName string } ) // checkIDCard 验证身份证号 func (c *BankParams) checkIDCard() bool { return utils.ValidateIDCard(c.IDCard) } // checkBankCard 验证银行卡号 func (c *BankParams) checkBankCard() bool { return true } // List 列表信息 func (c *Bank) List() ([]*BankInfo, error) { mUserManageBank := model.NewUserBank() out := make([]*model2.UserBank, 0) where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{ Where: model2.NewWhere("uid", c.UID), Order: model2.NewOrder("is_default", model2.OrderModeToDesc), }} if err := model2.Find(mUserManageBank.UserBank, &out, where...); err != nil { return nil, err } list := make([]*BankInfo, 0) for _, v := range out { list = append(list, &BankInfo{ID: v.GetEncodeID(), UserBank: v}) } return list, nil } // Bind 绑定 func (c *Bank) Bind(params *BankParams, captcha string) error { pass, err := handle.NewCaptcha().Validate(&handle.CaptchaSms{ Mobile: c.Mobile, Captcha: captcha, }) if err != nil { return err } else if !pass { return errors.New("验证码错误或已过期") } if !params.checkIDCard() { return errors.New("身份证号信息错误") } if !params.checkBankCard() { return errors.New("银行卡信息错误") } mUserManageBank := model.NewUserBank() var count int64 if err = model2.Count(mUserManageBank.UserBank, &count, model2.NewWhere("bank_card", params.BankCard)); err != nil { return err } else if count > 0 { return errors.New("当前银行卡已被注册") } mUserManageBank.UID = c.UID mUserManageBank.Name = params.Name mUserManageBank.IDCard = params.IDCard mUserManageBank.BankCard = params.BankCard mUserManageBank.BankName = params.BankName if err = model2.Count(mUserManageBank.UserBank, &count, model2.NewWhere("uid", c.UID)); err != nil { return err } else if count <= 0 { mUserManageBank.IsDefault = model2.UserBankDefaultForYes } return model2.Create(mUserManageBank.UserBank) } // Unbind 解绑,直接删除 func (c *Bank) Unbind(id uint64) error { mUserManageBank := model.NewUserBank() mUserManageBank.ID = id isExist, err := model2.FirstField(mUserManageBank.UserBank, []string{"id", "uid"}) if err != nil { return err } else if !isExist { return errors.New("操作错误,绑定信息不存在") } else if mUserManageBank.UID != c.UID { return errors.New("无权限操作") } return model2.Delete(mUserManageBank) } func NewBank() BankHandle { return func(session *session.Enterprise) *Bank { return &Bank{Enterprise: session} } }