Files

123 lines
3.0 KiB
Go
Raw Normal View History

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