Files
2021-10-27 13:27:01 +08:00

123 lines
3.1 KiB
Go

package user
import (
"SciencesServer/app/api/enterprise/model"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/handle"
"SciencesServer/app/service"
"SciencesServer/utils"
"errors"
)
type Bank struct {
*service.SessionEnterprise
}
type BankHandle func(enterprise *service.SessionEnterprise) *Bank
type (
// BankInfo 银行卡信息
BankInfo struct {
ID string `json:"id"`
*model2.UserManageBank
}
// 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.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(mUserManageBank.UserManageBank, &out, where...); err != nil {
return nil, err
}
list := make([]*BankInfo, 0)
for _, v := range out {
list = append(list, &BankInfo{ID: v.GetEncodeID(), UserManageBank: 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.NewUserManageBank()
var count int64
if err = model2.Count(mUserManageBank.UserManageBank, &count, model2.NewWhere("bank_card", params.BankCard)); err != nil {
return err
} else if count > 0 {
return errors.New("当前银行卡已被注册")
}
mUserManageBank.UID = c.ManageUID
mUserManageBank.Name = params.Name
mUserManageBank.IDCard = params.IDCard
mUserManageBank.BankCard = params.BankCard
mUserManageBank.BankName = params.BankName
if err = model2.Count(mUserManageBank.UserManageBank, &count, model2.NewWhere("uid", c.ManageUID)); err != nil {
return err
} else if count <= 0 {
mUserManageBank.IsDefault = model2.UserManageBankDefaultForYes
}
return model2.Create(mUserManageBank.UserManageBank)
}
// Unbind 解绑,直接删除
func (c *Bank) Unbind(id uint64) error {
mUserManageBank := model.NewUserManageBank()
mUserManageBank.ID = id
isExist, err := model2.FirstField(mUserManageBank.UserManageBank, []string{"id", "uid"})
if err != nil {
return err
} else if !isExist {
return errors.New("操作错误,绑定信息不存在")
} else if mUserManageBank.UID != c.ManageUID {
return errors.New("无权限操作")
}
return model2.Delete(mUserManageBank)
}
func NewBank() BankHandle {
return func(enterprise *service.SessionEnterprise) *Bank {
return &Bank{enterprise}
}
}