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"`
|
2021-12-01 14:12:23 +08:00
|
|
|
*model2.UserBank
|
2021-10-13 17:17:28 +08:00
|
|
|
}
|
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) {
|
2021-12-01 14:12:23 +08:00
|
|
|
mUserManageBank := model.NewUserBank()
|
2021-10-13 17:17:28 +08:00
|
|
|
|
2021-12-01 14:12:23 +08:00
|
|
|
out := make([]*model2.UserBank, 0)
|
2021-10-13 17:17:28 +08:00
|
|
|
|
|
|
|
where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{
|
2021-11-30 17:33:05 +08:00
|
|
|
Where: model2.NewWhere("uid", c.UID),
|
2021-10-13 17:17:28 +08:00
|
|
|
Order: model2.NewOrder("is_default", model2.OrderModeToDesc),
|
|
|
|
}}
|
2021-12-01 14:12:23 +08:00
|
|
|
if err := model2.Find(mUserManageBank.UserBank, &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-12-01 14:12:23 +08:00
|
|
|
list = append(list, &BankInfo{ID: v.GetEncodeID(), UserBank: 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-12-01 14:12:23 +08:00
|
|
|
mUserManageBank := model.NewUserBank()
|
2021-10-13 17:17:28 +08:00
|
|
|
|
|
|
|
var count int64
|
|
|
|
|
2021-12-01 14:12:23 +08:00
|
|
|
if err = model2.Count(mUserManageBank.UserBank, &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-30 17:33:05 +08:00
|
|
|
mUserManageBank.UID = c.UID
|
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-12-01 14:12:23 +08:00
|
|
|
if err = model2.Count(mUserManageBank.UserBank, &count, model2.NewWhere("uid", c.UID)); err != nil {
|
2021-10-13 17:17:28 +08:00
|
|
|
return err
|
|
|
|
} else if count <= 0 {
|
2021-12-01 14:12:23 +08:00
|
|
|
mUserManageBank.IsDefault = model2.UserBankDefaultForYes
|
2021-10-13 17:17:28 +08:00
|
|
|
}
|
2021-12-01 14:12:23 +08:00
|
|
|
return model2.Create(mUserManageBank.UserBank)
|
2021-10-13 17:17:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// Unbind 解绑,直接删除
|
2021-10-27 13:27:01 +08:00
|
|
|
func (c *Bank) Unbind(id uint64) error {
|
2021-12-01 14:12:23 +08:00
|
|
|
mUserManageBank := model.NewUserBank()
|
2021-10-27 13:27:01 +08:00
|
|
|
mUserManageBank.ID = id
|
2021-10-13 17:17:28 +08:00
|
|
|
|
2021-12-01 14:12:23 +08:00
|
|
|
isExist, err := model2.FirstField(mUserManageBank.UserBank, []string{"id", "uid"})
|
2021-10-13 17:17:28 +08:00
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
} else if !isExist {
|
|
|
|
return errors.New("操作错误,绑定信息不存在")
|
2021-11-30 17:33:05 +08:00
|
|
|
} else if mUserManageBank.UID != c.UID {
|
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
|
|
|
}
|
|
|
|
}
|