github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/modules/apis/version2/FavoriteHandler.go (about) 1 package version2 2 3 import ( 4 "fmt" 5 "github.com/insionng/makross" 6 "github.com/insionng/makross/jwt" 7 "github.com/insionng/yougam/helper" 8 "github.com/insionng/yougam/models" 9 ) 10 11 func GetFavoriteTopicHandler(self *makross.Context) error { 12 herr.Message = "ErrServiceUnavailable" 13 herr.Status = makross.StatusServiceUnavailable 14 15 claims := jwt.GetMapClaims(self) 16 var uid int64 17 if jwtUserId, okay := claims["UserId"].(float64); okay { 18 uid = int64(jwtUserId) 19 if uid <= 0 { 20 herr.Message = "尚未登录" 21 } 22 } 23 24 tid := self.Param("id").MustInt64() 25 if tid <= 0 { 26 tid = self.Args("id").MustInt64() 27 } 28 29 var data = map[string]interface{}{} 30 if tid > 0 { 31 if models.IsTopicMark(uid, tid) { 32 data["IsTopicMark"] = true 33 return self.JSON(data) 34 35 } else { 36 data["IsTopicMark"] = false 37 return self.JSON(data) 38 } 39 } 40 herr.Message = "没有获取到查询参数" 41 return self.JSON(herr, makross.StatusServiceUnavailable) 42 } 43 44 func PostFavoriteTopicHandler(self *makross.Context) error { 45 46 herr.Message = "ErrServiceUnavailable" 47 herr.Status = makross.StatusServiceUnavailable 48 49 claims := jwt.GetMapClaims(self) 50 var uid int64 51 if jwtUserId, okay := claims["UserId"].(float64); okay { 52 uid = int64(jwtUserId) 53 if uid <= 0 { 54 herr.Message = "尚未登录" 55 } 56 } 57 58 tid := self.Param("id").MustInt64() 59 if tid <= 0 { 60 tid = self.Args("id").MustInt64() 61 } 62 cid := self.Args("cid").MustInt64() 63 64 if (tid > 0) && (cid > 0) { 65 if models.IsTopicMark(uid, tid) { 66 herr.Message = "话题已收藏过" 67 herr.Status = makross.StatusInternalServerError 68 return self.JSON(herr, makross.StatusInternalServerError) 69 70 } else { 71 if objs, err := models.GetTopic(tid); err != nil { 72 herr.Message = "此话题不存在,无法收藏!" 73 herr.Status = makross.StatusNotFound 74 return self.JSON(herr, makross.StatusNotFound) 75 } else { 76 objs.Hotup = objs.Hotup + 1 77 objs.Hotscore = helper.Score(objs.Hotup, objs.Hotdown) 78 objs.Hotvote = helper.QhotVote(objs.Hotup, objs.Hotdown) 79 objs.Hotness = helper.Hotness(objs.Hotup, objs.Hotdown, objs.Created) 80 objs.Confidence = helper.Confidence(objs.Hotup, objs.Hotdown) 81 82 models.PutTopic(tid, objs) 83 row, err := models.SetTopicMark(uid, cid, tid) 84 if (row <= 0) || (err != nil) { 85 herr.Message = "收藏话题时数据库发生错误!" 86 herr.Status = makross.StatusInternalServerError 87 return self.JSON(herr, makross.StatusInternalServerError) 88 } 89 herr.Message = "成功收藏话题!" 90 herr.Status = makross.StatusOK 91 return self.JSON(herr) 92 } 93 } 94 } 95 herr.Message = "没有获取到话题ID" 96 return self.JSON(herr, makross.StatusServiceUnavailable) 97 } 98 99 func DelFavoriteTopicHandler(self *makross.Context) error { 100 101 herr.Message = "ErrServiceUnavailable" 102 herr.Status = makross.StatusServiceUnavailable 103 104 claims := jwt.GetMapClaims(self) 105 var uid int64 106 if jwtUserId, okay := claims["UserId"].(float64); okay { 107 uid = int64(jwtUserId) 108 if uid <= 0 { 109 herr.Message = "尚未登录" 110 } 111 } 112 113 tid := self.Param("id").MustInt64() 114 if tid <= 0 { 115 tid = self.Args("id").MustInt64() 116 } 117 118 if tid > 0 { 119 herr.Message = "取消收藏话题成功" 120 herr.Status = makross.StatusOK 121 row, err := models.DelTopicMark(uid, tid) 122 if (row <= 0) || (err != nil) { 123 herr.Message = "取消收藏话题失败" 124 herr.Status = makross.StatusInternalServerError 125 return self.JSON(herr, makross.StatusInternalServerError) 126 } 127 return self.JSON(herr) 128 } 129 herr.Message = "没有获取到话题ID" 130 return self.JSON(herr, makross.StatusServiceUnavailable) 131 } 132 133 func GetFavoriteTopicsHandler(self *makross.Context) error { 134 135 herr.Message = "ErrServiceUnavailable" 136 herr.Status = makross.StatusServiceUnavailable 137 138 offset := self.Args("offset").MustInt() 139 limit := self.Args("limit").MustInt() 140 field := self.Args("field").String() 141 cid := self.Args("cid").MustInt64() 142 143 claims := jwt.GetMapClaims(self) 144 var uid int64 145 if jwtUserId, okay := claims["UserId"].(float64); okay { 146 uid = int64(jwtUserId) 147 if uid <= 0 { 148 herr.Message = "尚未登录" 149 } 150 } 151 152 var questions []*models.Topic 153 var questionMark = new([]*models.TopicMark) 154 var err error 155 if cid > 0 { 156 if questionMark, err = models.GetTopicMarksViaUidWithCid(offset, limit, uid, cid, field); err != nil { 157 herr.Message = fmt.Sprintf("获取收藏数据发生错误:%v", err) 158 return self.JSON(herr, makross.StatusServiceUnavailable) 159 } 160 } else { 161 if questionMark, err = models.GetTopicMarksViaUid(offset, limit, uid, field); err != nil { 162 herr.Message = fmt.Sprintf("获取收藏数据发生错误:%v", err) 163 return self.JSON(herr, makross.StatusServiceUnavailable) 164 } 165 } 166 167 for _, v := range *questionMark { 168 q, _ := models.GetTopic(v.Tid) 169 questions = append(questions, q) 170 } 171 172 if questions != nil { 173 return self.JSON(questions) 174 } 175 176 herr.Message = "没有从数据库中获取到收藏数据" 177 return self.JSON(herr, makross.StatusServiceUnavailable) 178 179 }