123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- package controllers
-
- import (
- "annual-lottery2/models"
- "annual-lottery2/models/model"
- "annual-lottery2/utils"
- "encoding/json"
- "errors"
- "net/http"
- "strconv"
-
- "github.com/astaxie/beego"
- )
-
-
- type LotteryController struct {
- dao *models.LotteryModel
- BaseController
- }
-
-
- func (c *LotteryController) Constructor() {
- c.dao = new(models.LotteryModel)
- }
-
-
-
- func (c *LotteryController) UserList() {
- users, err := c.dao.UserList()
- if err != nil {
- beego.Error("获取人员名单失败,", err)
- c.ResponseJson(errors.New("获取人员名单失败"))
- return
- }
-
- c.ResponseJson(map[string]interface{}{
- "users": users,
- })
- }
-
-
-
- func (c *LotteryController) PrizeSettingList() {
- ps, err := c.dao.PrizeSettingList()
- if err != nil {
- beego.Error("获取抽奖设置列表失败,", err)
- c.ResponseJson(errors.New("获取抽奖设置列表失败"))
- return
- }
-
- c.ResponseJson(map[string]interface{}{
- "settings": ps,
- })
- }
-
-
-
- func (c *LotteryController) PrizeSetting() {
- id := c.GetString(":id")
- bt := []byte(c.GetString("data"))
-
- ps := model.TaPrizeSetting{}
- mp := make(map[string]interface{})
- if err := json.Unmarshal(bt, &mp); err != nil {
- beego.Error("转换抽奖设置数据失败,", err)
- c.ResponseJson(errors.New("接收抽奖配置失败"))
- return
- }
-
- utils.Map2Struct(mp, &ps)
-
- switch c.Ctx.Input.Method() {
- case http.MethodPost:
- ps.SettingId = 0
- if err := c.dao.PrizeSetting(&ps, models.DATA_ADD); err != nil {
- beego.Error("新增抽奖设置失败,", err)
- c.ResponseJson(errors.New("新增抽奖设置失败"))
- return
- }
- case http.MethodPut:
- if id == "" {
- c.ResponseJson(errors.New("抽奖设置ID不能为空"), http.StatusBadRequest)
- return
- }
-
- ps.SettingId, _ = strconv.Atoi(id)
- if err := c.dao.PrizeSetting(&ps, models.DATA_UPDATE); err != nil {
- beego.Error("更新抽奖设置失败,", err)
- c.ResponseJson(errors.New("更新抽奖设置失败"))
- return
- }
- case http.MethodDelete:
- if id == "" {
- c.ResponseJson(errors.New("抽奖设置ID不能为空"), http.StatusBadRequest)
- return
- }
-
- ps.PrizeId, _ = strconv.Atoi(id)
- if err := c.dao.PrizeSetting(&ps, models.DATA_DELETE); err != nil {
- beego.Error("删除抽奖设置失败,", err)
- c.ResponseJson(errors.New("删除抽奖设置失败"))
- return
- }
- default:
- c.ResponseJson(errors.New("404"), http.StatusNotFound)
- return
- }
-
-
- c.PrizeSettingList()
- }
-
-
-
- func (c *LotteryController) Draw() {
- pw, err := c.dao.Draw()
- if err != nil {
- beego.Error("抽奖失败,", err)
- c.ResponseJson(errors.New("抽奖失败, 请重试"))
- return
- }
-
- c.ResponseJson(map[string]interface{}{
- "winner": pw,
- })
- }
-
-
-
- func (c *LotteryController) PrizeList() {
- pl, err := c.dao.PrizeList()
- if err != nil {
- beego.Error("获取奖品列表失败,", err)
- c.ResponseJson(errors.New("获取奖品列表失败"))
- return
- }
-
- c.ResponseJson(map[string]interface{}{
- "prizes": pl,
- })
- }
-
-
-
- func (c *LotteryController) PrizeEdit() {
- id := c.GetString(":id")
- bt := []byte(c.GetString("data"))
-
- ps := model.TaPrize{}
- mp := make(map[string]interface{})
- if err := json.Unmarshal(bt, &mp); err != nil {
- beego.Error("转换奖品数据失败,", err)
- c.ResponseJson(errors.New("接收奖品数据失败"))
- return
- }
-
- utils.Map2Struct(mp, &ps)
-
- switch c.Ctx.Input.Method() {
- case http.MethodPost:
- ps.PrizeId = 0
- if err := c.dao.PrizeEdit(&ps, models.DATA_ADD); err != nil {
- beego.Error("新增奖品数据失败,", err)
- c.ResponseJson(errors.New("新增奖品数据失败"))
- return
- }
- case http.MethodPut:
- if id == "" {
- c.ResponseJson(errors.New("奖品数据ID不能为空"), http.StatusBadRequest)
- return
- }
-
- ps.PrizeId, _ = strconv.Atoi(id)
- if err := c.dao.PrizeEdit(&ps, models.DATA_UPDATE); err != nil {
- beego.Error("更新奖品数据失败,", err)
- c.ResponseJson(errors.New("更新奖品数据失败"))
- return
- }
- case http.MethodDelete:
- if id == "" {
- c.ResponseJson(errors.New("奖品数据ID不能为空"), http.StatusBadRequest)
- return
- }
-
- ps.PrizeId, _ = strconv.Atoi(id)
- if err := c.dao.PrizeEdit(&ps, models.DATA_DELETE); err != nil {
- beego.Error("删除奖品数据失败,", err)
- c.ResponseJson(errors.New("删除奖品数据失败"))
- return
- }
- default:
- c.ResponseJson(errors.New("404"), http.StatusNotFound)
- return
- }
-
-
- c.PrizeList()
- }
-
-
-
- func (c *LotteryController) WinnerList() {
- typ := c.GetString("type")
- name := c.GetString("name")
- delStr := c.GetString("del")
- del, _ := strconv.Atoi(delStr)
-
- var wl []model.TaPrizeWinner
- var err error
-
- if delStr == "" {
- wl, err = c.dao.WinnerList(typ, name)
- if err != nil {
- beego.Error("获取中奖人员名单失败,", err)
- c.ResponseJson(errors.New("获取中奖人员名单失败"))
- return
- }
- } else {
- wl, err = c.dao.WinnerList(typ, name, del)
- if err != nil {
- beego.Error("获取中奖人员名单失败,", err)
- c.ResponseJson(errors.New("获取中奖人员名单失败"))
- return
- }
- }
-
- c.ResponseJson(map[string]interface{}{
- "winners": wl,
- })
- }
-
-
-
- func (c *LotteryController) CancelWinner() {
- pid, _ := c.GetInt("pid")
- uid, _ := c.GetInt(":uid")
-
- if err := c.dao.CancelWinner(pid, uid); err != nil {
- beego.Error("作废中奖人员失败,", err)
- c.ResponseJson(errors.New("作废中奖人员失败"))
- return
- }
-
- c.ResponseJson(map[string]interface{}{
- "result": "success",
- })
- }
-
-
-
- func (c *LotteryController) ExportWinners() {
- typ := c.GetString("type")
- del := models.STATUS_NORMAL
-
- wl, err := c.dao.WinnerList(typ, "", del)
- if err != nil {
- beego.Error("获取中奖人员名单失败,", err)
- c.ResponseJson(errors.New("获取中奖人员名单失败"))
- return
- }
-
- excel, err := utils.NewTinyXLSXEngine()
- if err != nil {
- beego.Error("导出中奖人员名单失败,", err)
- c.ResponseJson(errors.New("导出中奖人员名单失败"))
- return
- }
-
- excel.SetCell(
- excel.InsertRow(),
- []string{
- "序号",
- "中奖人",
- "公司",
- "部门",
- "分类",
- "奖品",
- },
- )
-
- for k, w := range wl {
- row := excel.InsertRow()
-
- excel.SetCell(row, []string{
- strconv.Itoa(k + 1),
- w.UserName,
- w.UserOrg,
- w.UserDept,
- w.PrizeType,
- w.PrizeName,
- })
- }
-
- c.SaveToExcel("中奖名单.xlsx", excel)
- }
|