github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/routers/FriendHandler.go (about) 1 package routers 2 3 import ( 4 "errors" 5 "github.com/insionng/makross" 6 7 "log" 8 "github.com/insionng/yougam/models" 9 ) 10 11 func GetFriendHandler(self *makross.Context) error { 12 13 _usr_, okay := self.Session.Get("SignedUser").(*models.User) 14 if !okay { 15 return self.NoContent(401) 16 } 17 18 fid := self.Param("uid").MustInt64() 19 if fid <= 0 { 20 fid = self.Args("uid").MustInt64() 21 } 22 23 if fid <= 0 { 24 self.Flash.Error("错误参数!") 25 return self.Redirect("/contact/") 26 } 27 28 if kind := self.Param("kind").String(); len(kind) > 0 && (fid > 0) { 29 switch { 30 case kind == "add": 31 { 32 33 if _usr_.Id == fid { 34 self.Flash.Error("不能添加自己为好友!") 35 return self.Redirect("/contact/") 36 } 37 38 usr, err := models.GetUser(fid) 39 if (err != nil) || (usr == nil) { 40 log.Println(err) 41 if err != nil { 42 self.Flash.Error(err.Error()) 43 } 44 return self.Redirect("/contact/") 45 } 46 47 if models.IsFriend(_usr_.Id, fid) { 48 self.Flash.Warning("已经是好友,无须再度添加!") 49 return self.Redirect("/contact/") 50 51 } else { 52 self.Set("theUser", usr) 53 self.Set("relationship", models.GetRelationship(_usr_.Id, fid)) 54 goto render 55 56 } 57 58 render: 59 self.Set("messager", true) 60 return self.Render("add-friend") 61 } 62 case kind == "delete": 63 { 64 usr, err := models.GetUser(fid) 65 if (err != nil) || (usr == nil) { 66 log.Println(err) 67 return self.Redirect("/contact/") 68 } 69 70 r, e := models.DelFriend(_usr_.Id, fid) 71 if (e != nil) || (r <= 0) { 72 self.Flash.Error("删除好友失败!") 73 } else { 74 self.Flash.Success("删除好友成功!") 75 } 76 return self.Redirect("/contact/") 77 } 78 case kind == "allow": 79 { 80 r, e := models.SetFriend(_usr_.Id, fid, 2, "", "default") 81 if (e != nil) || (r <= 0) { 82 log.Println(e) 83 self.Flash.Error("允许好友申请时发生错误!") 84 } else { 85 friz := models.GetFriendsByUidJoinUser(_usr_.Id, 0, 0, "", "id") 86 self.Set("friends", friz) 87 self.Flash.Success("经已允许好友申请!今天下英雄﹐惟使君与操耳。本初之徒﹐不足数也。") 88 89 } 90 91 return self.Redirect("/contact/") 92 } 93 case kind == "deny": 94 { 95 r, e := models.SetFriend(_usr_.Id, fid, -1, "", "default") 96 if (e != nil) || (r <= 0) { 97 log.Println(e) 98 self.Flash.Error("拒绝好友申请时发生错误!") 99 } else { 100 friz := models.GetFriendsByUidJoinUser(_usr_.Id, 0, 0, "", "id") 101 self.Set("friends", friz) 102 self.Flash.Success("经己拒绝好友申请!") 103 104 } 105 106 return self.Redirect("/contact/") 107 } 108 } 109 110 } 111 112 return errors.New("FriendGetHandler Errors") 113 } 114 115 func PostFriendHandler(self *makross.Context) error { 116 117 _usr_, okay := self.Session.Get("SignedUser").(*models.User) 118 if !okay { 119 return self.NoContent(401) 120 } 121 122 fid := self.Param("uid").MustInt64() 123 if fid <= 0 { 124 fid = self.Args("uid").MustInt64() 125 } 126 127 if fid <= 0 { 128 self.Flash.Error("错误参数!") 129 return self.Redirect("/contact/") 130 } 131 132 if kind := self.Param("kind").String(); len(kind) > 0 && (fid > 0) { 133 switch { 134 case kind == "add": 135 { 136 137 content := self.FormValue("content") 138 r, e := models.SetFriendTo(_usr_.Id, fid, 1, content, "default") 139 if (e != nil) || (r <= 0) { 140 log.Println(e) 141 self.Flash.Error("发送好友申请错误!") 142 goto render 143 } else { 144 friz := models.GetFriendsByUidJoinUser(_usr_.Id, 0, 0, "", "id") 145 self.Set("friends", friz) 146 self.Flash.Success("发送好友申请成功,请耐心等待对方通过!") 147 return self.Redirect("/contact/") 148 } 149 150 render: 151 self.Set("messager", true) 152 return self.Render("add-friend") 153 } 154 } 155 } 156 157 return errors.New("FriendPostHandler Errors") 158 159 }