289 lines
9.4 KiB
Go
289 lines
9.4 KiB
Go
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)
|
|
}
|