parent
6319ba64b8
commit
0693c1d6d3
@ -0,0 +1,39 @@
|
||||
package jyy
|
||||
|
||||
import (
|
||||
"recook/internal/back"
|
||||
"recook/internal/libs/bean"
|
||||
"recook/internal/v2/logic/manage/jyy"
|
||||
"recook/tools"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func (o Proxy) User(c *gin.Context) {
|
||||
var args jyy.AppUserReq
|
||||
if err := tools.Params(&args, c); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
if data, total, err := jyy.Logic.AppUser(args); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
} else {
|
||||
back.Suc(c, "ok", bean.ResultLists{
|
||||
List: data,
|
||||
Total: int(total),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (o Proxy) Vip(c *gin.Context) {
|
||||
var args jyy.AppUserReq
|
||||
if err := tools.Params(&args, c); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
return
|
||||
}
|
||||
if err := jyy.Logic.Vip(args); err != nil {
|
||||
back.Fail(c, err.Error())
|
||||
} else {
|
||||
back.Suc(c, "ok", "")
|
||||
}
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
package jyy
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"recook/internal/define"
|
||||
"recook/internal/libs/bean"
|
||||
"recook/internal/service/baseCode"
|
||||
"recook/internal/v2/model/recook/user"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.oa00.com/go/mysql"
|
||||
"github.com/golangkit/formatime"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type AppUserReq struct {
|
||||
bean.Page
|
||||
AppUserInfo
|
||||
Start string `json:"start"`
|
||||
End string `json:"end"`
|
||||
Kind uint `json:"kind"`
|
||||
}
|
||||
|
||||
type AppUserInfo struct {
|
||||
Mobile string `json:"mobile"`
|
||||
Nickname string `json:"nickname"`
|
||||
Level uint `json:"level"`
|
||||
IsOffline bool `json:"is_offline"`
|
||||
CreatedAt formatime.Second `json:"created_at"`
|
||||
}
|
||||
|
||||
func (o logic) AppUser(args AppUserReq) (res []AppUserInfo, total int64, err error) {
|
||||
query := mysql.Db.Table((&user.RecookUserInfoModel{}).TableName()).Where("LENGTH(mobile) =11")
|
||||
{
|
||||
if args.Mobile != "" {
|
||||
query = query.Where("mobile = ?", args.Mobile)
|
||||
}
|
||||
|
||||
if args.Nickname != "" {
|
||||
query = query.Where("nickname = ?", args.Nickname)
|
||||
}
|
||||
if args.Start != "" {
|
||||
query = query.Where("created_at > ?", args.Start)
|
||||
}
|
||||
if args.End != "" {
|
||||
query = query.Where("created_at < ?", args.End)
|
||||
}
|
||||
if args.Kind != 0 {
|
||||
switch args.Kind {
|
||||
case 1: // 会员
|
||||
query = query.Where("level = 0")
|
||||
case 2: // 店主
|
||||
query = query.Where("level = 1")
|
||||
case 3: // 云店铺
|
||||
query = query.Where("level = 2")
|
||||
case 4: // vip店铺
|
||||
query = query.Where("level = 2 and is_offline = 1")
|
||||
case 5: // 子公司
|
||||
query = query.Where("level = 10")
|
||||
}
|
||||
}
|
||||
}
|
||||
query.Count(&total)
|
||||
var temp []user.RecookUserInfoModel
|
||||
query.Offset(args.GetStart()).Limit(args.GetLimit()).Find(&temp)
|
||||
for _, v := range temp {
|
||||
res = append(res, AppUserInfo{
|
||||
Mobile: v.Mobile,
|
||||
Nickname: v.Nickname,
|
||||
Level: uint(v.Level),
|
||||
IsOffline: v.IsOffline,
|
||||
CreatedAt: v.CreatedAt,
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (o logic) Vip(args AppUserReq) error {
|
||||
|
||||
if len(args.Mobile) != 11 || !strings.HasPrefix(args.Mobile, "1") {
|
||||
return errors.New("手机格式异常")
|
||||
}
|
||||
var u user.RecookUserInfoModel
|
||||
mysql.Db.First(&u, "mobile = ?", args.Mobile)
|
||||
if u.Level > 2 {
|
||||
return nil
|
||||
}
|
||||
mobile := args.Mobile
|
||||
if u.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: 2,
|
||||
ParentID: 0,
|
||||
RootID: 3212341,
|
||||
IsOffline: true,
|
||||
UpgradeTime2: formatime.NewSecondNow(),
|
||||
}
|
||||
|
||||
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))
|
||||
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.Model(&u).Updates(map[string]interface{}{
|
||||
"level": 2,
|
||||
"parent_id": 0,
|
||||
"root_id": 3212341,
|
||||
"upgrade_time1": formatime.NewSecondNow(),
|
||||
"is_offline": true,
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
Loading…
Reference in new issue