123 lines
3.1 KiB
Go
123 lines
3.1 KiB
Go
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}
|
|
}
|
|
}
|