Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+288
View File
@@ -0,0 +1,288 @@
package newactivityctrl
import (
"bytes"
"encoding/json"
"net/http"
"strings"
"time"
"91porn-server/common"
"91porn-server/common/constant"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/models/l/operatorlgmod"
"91porn-server/models/v/newactivity"
"91porn-server/models/v/usermod"
"github.com/gin-gonic/gin"
"github.com/tealeg/xlsx"
"go.mongodb.org/mongo-driver/mongo"
)
// @Tags 特制H5活动
// @Summary 导入所有嫩模
// @Description 导入所有嫩模
// @Security ApiKeyAuth
// @Tags web-H5嫩模活动
// @Accept json
// @Produce json
// @Param file formData file false "选择的文件"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/newactivity/importModels [post]
func ImportModels(ctx *gin.Context) {
token := ctx.PostForm("token")
if token != "q7ydjHVIVBYiTqQ&" {
common.ServeJSON(ctx, stderr.ErrNoToken, nil)
return
}
form, err := ctx.MultipartForm()
if err != nil {
log.Warn("request multipart wrong ", log.E(err))
common.ServeJSON(ctx, stderr.ErrUploadError, err.Error())
return
}
fs := form.File["file"]
if len(fs) == 0 {
common.ServeJSON(ctx, stderr.ErrUploadError, err.Error())
return
}
file, err := fs[0].Open()
if err != nil {
common.ServeJSON(ctx, stderr.ErrUploadError, err.Error())
return
}
buffer := bytes.Buffer{}
buffer.Reset()
_, err = buffer.ReadFrom(file)
file.Close()
if err != nil {
common.ServeJSON(ctx, stderr.ErrUploadError, err.Error())
return
}
excelFile, err := xlsx.OpenBinary(buffer.Bytes())
if err != nil {
common.ServeJSON(ctx, stderr.ErrUploadError, err.Error())
return
}
id := uint32(130)
insertSqls := make([]mongo.WriteModel, 0, 50)
stockInsertSqls := make([]mongo.WriteModel, 0, 500)
for _, row := range excelFile.Sheets[0].Rows[1:51] {
excelModel := &struct {
Name string `xlsx:"4"` //姓名
Location string `xlsx:"5"` //地区
BgImg string `xlsx:"6"` //图片
Video string `xlsx:"7"` //视频
}{}
if err = row.ReadStruct(excelModel); err != nil {
continue
}
model := newactivity.Model{
Id: id,
Name: strings.TrimSpace(excelModel.Name),
BgImg: strings.Split(excelModel.BgImg, ","),
Location: strings.TrimSpace(excelModel.Location),
Video: excelModel.Video,
}
insert := mongo.NewInsertOneModel()
insert.SetDocument(&model)
insertSqls = append(insertSqls, insert)
date := time.Date(2020, 6, 20, 0, 0, 0, 0, time.Local)
for i := 0; i < 11; i++ {
stockModel := newactivity.GiftStock{
ModelId: id,
Date: date.Add(time.Duration(i) * 24 * time.Hour),
GiftLeft: 300,
SoldOut: false,
}
stockInsert := mongo.NewInsertOneModel()
stockInsert.SetDocument(&stockModel)
stockInsertSqls = append(stockInsertSqls, stockInsert)
}
id++
}
if err = newactivity.BulkStocks(stockInsertSqls); err != nil {
common.ServeJSON(ctx, stderr.ErrUploadError, err.Error())
return
}
if err = newactivity.BulkAddModels(insertSqls); err != nil {
common.ServeJSON(ctx, stderr.Failure, nil)
return
}
common.ServeJSON(ctx, stderr.Success, nil)
}
// @Tags 特制H5活动
// @Summary 写入参数活动人数
// @Description 写入参数活动人数
// @Security ApiKeyAuth
// @Tags web-H5嫩模活动
// @Accept json
// @Produce json
// @Param num formData integer false "人数"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/newactivity/updateJoinNum [post]
func UpdateJoinNum(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req struct {
Num int64 `json:"num"`
}
if err = ctx.ShouldBind(&req); err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"data": err.Error(), "code": stderr.ErrParamError, "msg": stderr.ErrParamError.Msg()})
return
}
if err = newactivity.UpdateJoinNum(req.Num); err != nil {
common.ServeJSON(ctx, stderr.Failure, nil)
return
}
log, _ := json.Marshal(req)
_ = operatorlgmod.RecordOperation(manager, constant.NewsModel, constant.Modify, string(log), ctx.Request.URL.RequestURI())
common.ServeJSON(ctx, stderr.Success, nil)
}
// @Tags 特制H5活动
// @Summary 获取参加活动人数
// @Description 获取参加活动人数
// @Security ApiKeyAuth
// @Tags web-H5嫩模活动
// @Accept json
// @Produce json
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/newactivity/joinNum [get]
func GetJoinNum(ctx *gin.Context) {
num, err := newactivity.GetJoinNum()
if err != nil {
common.ServeJSON(ctx, stderr.Failure, nil)
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{"num": num})
}
// @Tags 特制H5活动
// @Summary 购买列表
// @Description 购买列表
// @Security ApiKeyAuth
// @Tags web-H5嫩模活动
// @Accept json
// @Produce json
// @Param page formData integer false "页码"
// @Param pageSize formData integer false "条数"
// @Param userId formData integer false "用户id"
// @Param userName formData string false "用户昵称"
// @Param modelId formData integer false "模特id"
// @Param date formData string false "期号"
// @Param start formData string false "开始时间"
// @Param end formData string false "结束时间"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/newactivity/buyPage [post]
func BuyPage(ctx *gin.Context) {
var req newactivity.BuyPageReq
if err := ctx.ShouldBind(&req); err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"data": err.Error(), "code": stderr.ErrParamError, "msg": stderr.ErrParamError.Msg()})
return
}
rs, err := newactivity.BuyPage(req)
if err != nil {
common.ServeJSON(ctx, stderr.Failure, nil)
return
}
common.ServeJSON(ctx, stderr.Success, rs)
}
// @Tags 特制H5活动
// @Summary 添加获奖记录
// @Description 添加获奖记录
// @Security ApiKeyAuth
// @Tags web-H5嫩模活动
// @Accept json
// @Produce json
// @Param date formData string false "日期"
// @Param userId formData uint32 false "用户id"
// @Param userName formData string false "用户昵称"
// @Param userLogo formData string false "用户头像"
// @Param winNum formData uint32 false "中奖号码"
// @Param modelId formData uint32 false "模特Id"
// @Param createdAt formData string false "创建时间"
// @Param updatedAt formData string false "更新时间"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/newactivity/addWinRecord [post]
func AddWinRecord(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req struct {
Quantity uint32 `json:"quantity" bson:"quantity"` //购买份数
newactivity.WinRecords
}
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
exists, err := newactivity.ExistsOrder(req.Quantity, req.WinRecords)
if err != nil {
return
}
if !exists {
common.ServeJSON(ctx, stderr.Failure, "中奖信息有误")
return
}
userInfo, err := usermod.FindUserByUID(uint64(req.UserId))
if err != nil {
common.ServeJSON(ctx, stderr.Failure, err)
return
}
req.UserName = userInfo.Name
req.UserLogo = userInfo.Portrait
req.WinNum = req.Quantity
if err = newactivity.AddWinRecord(req.WinRecords); err != nil {
common.ServeJSON(ctx, stderr.Failure, err)
return
}
log, _ := json.Marshal(req)
_ = operatorlgmod.RecordOperation(manager, constant.RewardList, constant.Add, string(log), ctx.Request.URL.RequestURI())
common.ServeJSON(ctx, stderr.Success, nil)
}
// @Tags 特制H5活动
// @Summary 获奖记录列表
// @Description 获奖记录列表
// @Security ApiKeyAuth
// @Tags web-H5嫩模活动
// @Accept json
// @Produce json
// @Param page formData int64 false "页码"
// @Param pageSize formData int64 false "条数"
// @Param userId formData uint32 false "用户id"
// @Param userName formData string false "用户昵称"
// @Param modelId formData uint32 false "模特id"
// @Param date formData string false "期号"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/newactivity/winRecordPage [post]
func WinRecordPage(ctx *gin.Context) {
var req newactivity.WinRcdPageReq
if err := ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
rs, err := newactivity.WinRecordPage(req)
if err != nil {
common.ServeJSON(ctx, stderr.Failure, nil)
return
}
common.ServeJSON(ctx, stderr.Success, rs)
}