You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
3.2 KiB

4 years ago
package upgrade
4 years ago
import (
"fmt"
"recook/internal/define"
"recook/internal/libs/bean"
"recook/internal/service/baseCode"
"recook/internal/v2/model/recook/user"
"recook/internal/v2/model/upgrade"
"strings"
"time"
"git.oa00.com/go/mysql"
"github.com/golangkit/formatime"
"gorm.io/gorm"
)
4 years ago
type logic struct {
}
var Logic = logic{}
4 years ago
type ApplyList struct {
bean.Page
}
func (o logic) List(args ApplyList) (res []upgrade.ApplyEntry, total int64, err error) {
query := mysql.Db.Table((&upgrade.ApplyEntry{}).TableName())
{
}
query.Count(&total)
query.Limit(args.GetLimit()).Offset(args.GetStart()).Find(&res)
return
}
type ApplySure struct {
ID uint `json:"id" validate:"required"`
}
func (o logic) Sure(args ApplySure) error {
var ae upgrade.ApplyEntry
if err := mysql.Db.First(&ae, "id = ?", args.ID).Error; err != nil {
return err
}
var mu user.RecookUserInfoModel
mysql.Db.First(&mu, "mobile=?")
if mu.Level > 0 {
return nil
}
mobile := ae.Mobile
if len(mobile) != 11 || !strings.HasPrefix(mobile, "1") {
return fmt.Errorf("手机格式不正确")
}
if mu.Id == 0 {
// 没有就创建
if err := mysql.Db.Transaction(func(tx *gorm.DB) error {
sql := `select max(id)+floor(1+rand()*5) from recook_user_info`
var lastId int64
if err := tx.Raw(sql).Count(&lastId).Error; err != nil {
return err
}
info := user.RecookUserInfoModel{
Id: uint(lastId),
Nickname: "左家右厨" + mobile[7:],
Mobile: mobile,
Birthday: formatime.NewSecondFrom(define.DefaultBirthday),
HeadImgUrl: "",
Phone: mobile,
Identifier: time.Now().Format("060102") + baseCode.Encode(uint64(lastId)),
Level: 1,
ParentID: ae.ParentID,
}
if err := tx.Create(&info).Error; err != nil {
tx.Rollback()
err = fmt.Errorf("创建用户错误101:" + err.Error())
return err
}
// 生成邀请码和推荐码
info.InvitationNo = baseCode.Encode(uint64(info.Id))
4 years ago
if err := tx.Save(&info).Error; err != nil {
err = fmt.Errorf("创建用户错误102:" + err.Error())
return err
}
// 建立钱包
wallet := user.RecookUserWalletModel{
UserId: info.Id,
}
if err := tx.Create(&wallet).Error; err != nil {
tx.Rollback()
err = fmt.Errorf("创建用户错误103:" + err.Error())
return err
}
return nil
}); err != nil {
return err
}
} else {
if err := mysql.Db.Transaction(func(tx *gorm.DB) error {
if err := tx.Table((&upgrade.ApplyEntry{}).TableName()).Where("id = ?", args.ID).Updates(upgrade.ApplyEntry{State: 1}).Error; err != nil {
return err
}
if err := tx.Model(&mu).Updates(user.RecookUserInfoModel{
Level: 1,
ParentID: ae.ParentID,
UpgradeTime1: formatime.NewSecondNow()}).Error; err != nil {
return err
}
return nil
}); err != nil {
return err
}
}
return nil
}
type ApplyReject struct {
ID uint `json:"id" validate:"required"`
Reason string `json:"reason" validate:"required,maxLen=20"`
}
func (o logic) Reject(args ApplyReject) error {
mysql.Db.Table((&upgrade.ApplyEntry{}).TableName()).Where("id = ?", args.ID).Updates(upgrade.ApplyEntry{State: 2, Reason: args.Reason})
return nil
}