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  }