roll.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. // roll房
  2. package controllers
  3. import (
  4. "box-gm/models"
  5. "box-gm/utils"
  6. "encoding/json"
  7. "fmt"
  8. "log"
  9. "time"
  10. "github.com/astaxie/beego"
  11. )
  12. type RollController struct {
  13. beego.Controller
  14. }
  15. func (c *RollController) Get() {
  16. userinfo := c.GetSession("user")
  17. if userinfo == nil {
  18. c.Ctx.Redirect(302, "/accountlogin")
  19. return
  20. }
  21. c.Data["username"] = userinfo.(*LoginInfo).Username
  22. c.Data["token"] = models.GetToken()
  23. userPermission := models.GetPermission(userinfo.(*LoginInfo).Username)
  24. if (userPermission & (1 << uint(models.ModelSystem))) == 0 {
  25. c.Ctx.Redirect(302, "/accountlogin")
  26. return
  27. }
  28. action := c.GetString("action")
  29. if action == "update" {
  30. c.Data["json"] = &map[string]interface{}{"status": true}
  31. c.ServeJSON()
  32. return
  33. }
  34. c.Data["AwardList"] = models.GetRollAwardInfo()
  35. c.Data["infoList"] = models.GetRollInfoList()
  36. c.Data["ConditionList"] = models.GetRollConditionList()
  37. c.Data["ItemList"] = models.GetItemInfoList()
  38. c.TplName = "roll.tpl"
  39. }
  40. func (c *RollController) Post() {
  41. userinfo := c.GetSession("user")
  42. log.Printf("RollController Post userinfo[%v]", userinfo)
  43. if userinfo == nil {
  44. c.Ctx.Redirect(302, "/accountlogin")
  45. return
  46. }
  47. name := c.GetString("name")
  48. bandShareCode := c.GetString("bandShareCode")
  49. showStartTime := c.GetString("showStartTime")
  50. signupStartTime := c.GetString("signupStartTime")
  51. signupEndTime := c.GetString("signupEndTime")
  52. awardTime := c.GetString("awardTime")
  53. conditionList := c.GetString("conditionList")
  54. awardId, _ := c.GetInt("awardId")
  55. log.Printf("RollController Post conditionList[%s]", conditionList)
  56. var _conditions []*models.RollConditionInfo
  57. err := json.Unmarshal([]byte(conditionList), &_conditions)
  58. if err != nil {
  59. log.Printf("RollController Post conditionList[%s] err[%v]", conditionList, err)
  60. c.Data["json"] = &map[string]interface{}{"status": false, "info": err.Error()}
  61. c.ServeJSON()
  62. return
  63. }
  64. for _, v := range _conditions {
  65. log.Printf("RollController Post _conditions Conditions[%s] CValue[%d]", v.Conditions, v.CValue)
  66. }
  67. itemIdList := models.GetRollAwardItemIdList(awardId)
  68. if itemIdList == nil {
  69. log.Printf("RollController Post awardId[%d] 奖励列表空", awardId)
  70. c.Data["json"] = &map[string]interface{}{"status": false, "info": "奖励列表空"}
  71. c.ServeJSON()
  72. return
  73. }
  74. _ShowStartTime := utils.GetTime64(showStartTime)
  75. _SignupStartTime := utils.GetTime64(signupStartTime)
  76. _SignupEndTime := utils.GetTime64(signupEndTime)
  77. _AwardTime := utils.GetTime64(awardTime)
  78. currTime := time.Now().Unix()
  79. if _ShowStartTime > _ShowStartTime {
  80. c.Data["json"] = &map[string]interface{}{"status": false, "info": "展示时间超过报名开始时间"}
  81. c.ServeJSON()
  82. return
  83. }
  84. if currTime > _SignupEndTime {
  85. c.Data["json"] = &map[string]interface{}{"status": false, "info": "报名结束时间错误!已报名结束"}
  86. c.ServeJSON()
  87. return
  88. }
  89. if currTime > _AwardTime || _ShowStartTime > _AwardTime || _SignupEndTime > _AwardTime {
  90. c.Data["json"] = &map[string]interface{}{"status": false, "info": "开奖时间错误!已开奖"}
  91. c.ServeJSON()
  92. return
  93. }
  94. // 奖励方案道具列表
  95. u := new(models.RollInfo)
  96. u.Id = models.CreateRollId()
  97. u.Name = name
  98. u.BandShareCode = bandShareCode
  99. u.ShowStartTime = _ShowStartTime
  100. u.SignupStartTime = _SignupStartTime
  101. u.SignupEndTime = _SignupEndTime
  102. u.AwardTime = _AwardTime
  103. u.Conditions = _conditions
  104. u.ItemIdList = itemIdList
  105. err = models.AddRollInfo(u)
  106. if err != nil {
  107. c.Data["json"] = &map[string]interface{}{"status": false, "info": err.Error()}
  108. c.ServeJSON()
  109. return
  110. }
  111. c.Data["json"] = &map[string]interface{}{"status": true, "info": "新增roll房成功"}
  112. c.ServeJSON()
  113. }
  114. func (c *RollController) Put() {
  115. userinfo := c.GetSession("user")
  116. if userinfo == nil {
  117. c.Ctx.Redirect(302, "/accountlogin")
  118. return
  119. }
  120. id, _ := c.GetInt("id")
  121. log.Printf("RollController Put id[%d]", id)
  122. hf := models.GetRollInfoById(id)
  123. if hf == nil {
  124. c.Data["json"] = &map[string]interface{}{"status": false, "info": "修改失败:奖池方案不存在"}
  125. c.ServeJSON()
  126. return
  127. }
  128. currTime := time.Now().Unix()
  129. if currTime >= hf.ShowStartTime {
  130. c.Data["json"] = &map[string]interface{}{"status": false, "info": "已开始展示给玩家,请勿变动"}
  131. c.ServeJSON()
  132. return
  133. }
  134. name := c.GetString("name")
  135. bandShareCode := c.GetString("bandShareCode")
  136. showStartTime := c.GetString("showStartTime")
  137. signupStartTime := c.GetString("signupStartTime")
  138. signupEndTime := c.GetString("signupEndTime")
  139. awardTime := c.GetString("awardTime")
  140. conditionList := c.GetString("conditionList")
  141. awardId, _ := c.GetInt("awardId")
  142. var _conditions []*models.RollConditionInfo
  143. err := json.Unmarshal([]byte(conditionList), &_conditions)
  144. if err != nil {
  145. log.Printf("RollController Post conditionList[%s] err[%v]", conditionList, err)
  146. c.Data["json"] = &map[string]interface{}{"status": false, "info": err.Error()}
  147. c.ServeJSON()
  148. return
  149. }
  150. itemIdList := models.GetRollAwardItemIdList(awardId)
  151. if itemIdList == nil {
  152. log.Printf("RollController Post awardId[%d] 奖励列表空", awardId)
  153. c.Data["json"] = &map[string]interface{}{"status": false, "info": "奖励列表空"}
  154. c.ServeJSON()
  155. return
  156. }
  157. hf.Name = name
  158. hf.BandShareCode = bandShareCode
  159. hf.ShowStartTime = utils.GetTime64(showStartTime)
  160. hf.SignupStartTime = utils.GetTime64(signupStartTime)
  161. hf.SignupEndTime = utils.GetTime64(signupEndTime)
  162. hf.AwardTime = utils.GetTime64(awardTime)
  163. hf.Conditions = _conditions
  164. hf.ItemIdList = itemIdList
  165. err = models.UpdateRollInfo(hf)
  166. if err != nil {
  167. c.Data["json"] = &map[string]interface{}{"status": false, "info": err}
  168. c.ServeJSON()
  169. return
  170. }
  171. c.Data["json"] = &map[string]interface{}{"status": true, "info": fmt.Sprintf("修改roll房[%d]成功", id)}
  172. c.ServeJSON()
  173. }
  174. func (c *RollController) Delete() {
  175. userinfo := c.GetSession("user")
  176. if userinfo == nil {
  177. c.Ctx.Redirect(302, "/accountlogin")
  178. return
  179. }
  180. id, _ := c.GetInt("id")
  181. log.Printf("RollController Post Delete id[%d]", id)
  182. hf := models.GetRollInfoById(id)
  183. if hf == nil {
  184. c.Data["json"] = &map[string]interface{}{"status": false, "info": "修改失败:roll房不存在"}
  185. c.ServeJSON()
  186. return
  187. }
  188. currTime := time.Now().Unix()
  189. if currTime >= hf.ShowStartTime {
  190. c.Data["json"] = &map[string]interface{}{"status": false, "info": "已开始展示给玩家,请勿变动"}
  191. c.ServeJSON()
  192. return
  193. }
  194. models.DelRollInfoById(id)
  195. c.Data["json"] = &map[string]interface{}{"status": true, "info": "删除roll房成功"}
  196. c.ServeJSON()
  197. }