package service import ( "errors" "fmt" "gorm.io/gorm" "hepa-calc-admin-api/api/dao" "hepa-calc-admin-api/api/model" "hepa-calc-admin-api/extend/aliyun" "io" "math/rand" "net/http" "time" ) type UserService struct { } // HandleUserAvatar 处理用户头像 func (r *UserService) HandleUserAvatar(wxAvatar string) (avatar string, err error) { if wxAvatar == "" { return "", nil } // 发送GET请求 resp, err := http.Get(wxAvatar) if err != nil { return "", err } defer func(Body io.ReadCloser) { _ = Body.Close() }(resp.Body) if resp.StatusCode != 200 { return "", errors.New("请求失败") } // 读取响应体 respBody, err := io.ReadAll(resp.Body) if err != nil { return "", err } // 设置文件名字 now := time.Now() dateTimeString := now.Format("20060102150405") // 当前时间字符串 rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "user/avatar/" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".png" // 上传oss _, err = aliyun.PutObjectByte(ossPath, respBody) if err != nil { return "", err } ossPath = "/" + ossPath return ossPath, nil } // CheckUserMember 检测用户会员 func (r *UserService) CheckUserMember(user *model.User) bool { if user.IsMember == 0 { return false } now := time.Now() if user.MemberExpireDate.Before(now) { return false } return true } // CheckUserBuyOrderMember 检测用户是否购买过会员 func (r *UserService) CheckUserBuyOrderMember(userId int64) bool { orderMemberDao := dao.OrderMemberDao{} orderMember, _ := orderMemberDao.GetUserFirstTimeBuyOrderMember(userId) if orderMember == nil { return false } return true } // AddUserMemberValidDate 增加用户会员过期时间 func (r *UserService) AddUserMemberValidDate(tx *gorm.DB, user *model.User, d int) bool { userData := make(map[string]interface{}) if user.IsMember == 0 { userData["is_member"] = 1 } if user.MemberExpireDate == nil { userData["is_member"] = time.Now().Format("2006-01-02 15:04:05") } else { userData["is_member"] = user.MemberExpireDate.Add(time.Duration(d) * 24 * time.Hour) } userDao := dao.UserDao{} err := userDao.EditUserById(tx, user.UserId, userData) if err != nil { return false } return true }