package user import ( model2 "SciencesServer/app/common/model" "SciencesServer/app/enterprise/model" "SciencesServer/app/handle" "SciencesServer/app/service" "SciencesServer/utils" "errors" ) type Back struct { *service.SessionEnterprise } type BackHandle func(enterprise *service.SessionEnterprise) *Back type ( // BackInfo 银行卡信息 BackInfo struct { ID string `json:"id"` *model2.UserManageBank } // BackParams 银行卡参数信息 BackParams struct { Name, IDCard, BackCard, BackName string } ) // checkIDCard 验证身份证号 func (c *BackParams) checkIDCard() bool { return utils.ValidateIDCard(c.IDCard) } // checkBankCard 验证银行卡号 func (c *BackParams) checkBankCard() bool { return true } // List 列表信息 func (c *Back) List() ([]*BackInfo, error) { mUserManageBack := model.NewUserManageBank() out := make([]*model2.UserManageBank, 0) where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{ Where: model2.NewWhere("uid", c.ManageUID), Order: model2.NewOrder("is_default", model2.OrderModeToDesc), }} if err := model2.Find(mUserManageBack.UserManageBank, &out, where...); err != nil { return nil, err } list := make([]*BackInfo, 0) for _, v := range out { list = append(list, &BackInfo{ID: v.GetEncodeID(), UserManageBank: v}) } return list, nil } // Bind 绑定 func (c *Back) Bind(params *BackParams, 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("银行卡信息错误") } mUserManageBack := model.NewUserManageBank() var count int64 if err = model2.Count(mUserManageBack.UserManageBank, &count, model2.NewWhere("back_card", params.BackCard)); err != nil { return err } else if count > 0 { return errors.New("当前银行卡已被注册") } mUserManageBack.UID = c.ManageUID mUserManageBack.Name = params.Name mUserManageBack.IDCard = params.IDCard mUserManageBack.BankCard = params.BackCard mUserManageBack.BackName = params.BackName if err = model2.Count(mUserManageBack.UserManageBank, &count, model2.NewWhere("uid", c.ManageUID)); err != nil { return err } else if count <= 0 { mUserManageBack.IsDefault = model2.UserManageBankDefaultForYes } return model2.Create(mUserManageBack.UserManageBank) } // Unbind 解绑,直接删除 func (c *Back) Unbind(id uint64) error { mUserManageBack := model.NewUserManageBank() mUserManageBack.ID = id isExist, err := model2.FirstField(mUserManageBack.UserManageBank, []string{"id", "uid"}) if err != nil { return err } else if !isExist { return errors.New("操作错误,绑定信息不存在") } else if mUserManageBack.UID != c.ManageUID { return errors.New("无权限操作") } return model2.Delete(mUserManageBack) } func NewBack() BackHandle { return func(enterprise *service.SessionEnterprise) *Back { return &Back{enterprise} } }