service负责复杂的业务逻辑处理
package service
import (
"Gin_demo/CloudRestaurant/dao"
"Gin_demo/CloudRestaurant/model"
"Gin_demo/CloudRestaurant/param"
"Gin_demo/CloudRestaurant/tool"
"fmt"
"math/rand"
"time"
)
type MemberService struct {
}
func (ms *MemberService)UploadAvator(memberId int64, fileName string) string {
memberDao := dao.MemberDao{tool.DbEngine}
result := memberDao.UploadAvator(memberId,fileName)
if result == 0 {
return ""
}
return fileName
}
//用户名密码登录
func (ms *MemberService)Login(name string, password string) *model.Member {
md := dao.MemberDao{tool.DbEngine}
member := md.Query(name, password)
//1. 用户存在
if member != nil && member.Id != 0 {
if member.PassWord != tool.EncoderSha256(password) {
return nil
}
return member
}
user := model.Member{}
user.UserName = name
user.PassWord = tool.EncoderSha256(password)
user.RegisterTime = time.Now().Unix()
//2. 用户不存在, 作为新用户直接插入
user.Id = md.InsertMember(&user)
return &user
}
func (ms *MemberService)SendCode(phone string) bool {
//1. 产生一个code
code := fmt.Sprintf("%06v",rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))
fmt.Println("code:", code)
//2. 使用第三方平台发送短信
smsModel := model.SmsCode{
Phone: phone,
BizId: "123",
Code: code,
CreateTime: time.Now().Unix(),
}
memberDao := dao.MemberDao{tool.DbEngine}
result := memberDao.InsertCode(smsModel)
if result > 0 {//123456
fmt.Println("插入成功")
return true
}else{
return false
}
}
func (ms *MemberService)SmsLogin(smsLoginParam param.SmsLoginParam) *model.Member {
md := dao.MemberDao{tool.DbEngine}
//1.查询校验
sms := md.ValidateSmsCode(smsLoginParam.Phone, smsLoginParam.Code)
if sms.Id == 0 {
return nil
}
//2.获取用户信息
member := md.QueryByPhone(smsLoginParam.Phone)
if member.Id != 0 {//查询到用户信息, 直接返回
return member
}
//3.查询不到用户信息, 则将用户信息添加到数据库
user := model.Member{}
user.UserName = smsLoginParam.Phone
user.Mobile = smsLoginParam.Phone
user.RegisterTime = time.Now().Unix()
user.Id = md.InsertMember(&user)
return &user
}