Buddy.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. namespace app\newhome\controller;
  3. use think\Controller;
  4. use app\user\model\UserBuddy;
  5. use app\user\model\User;
  6. class Buddy extends Controller{
  7. private $buddyModel, $userModel;
  8. public function _initialize(){
  9. parent::_initialize();
  10. $this->buddyModel = new UserBuddy();
  11. $this->userModel = new User();
  12. }
  13. public function index(){
  14. $data = decode($this->request->post());
  15. $user = $data['u'];
  16. $res = $this->buddyModel->findUserBuddy($user);
  17. return json(['l'=>$res]);
  18. }
  19. public function blist(){
  20. $data = decode($this->request->post());
  21. $user = $data['u'];
  22. $res = $this->buddyModel->findUserBuddy($user, UserBuddy::Apply);
  23. return json(['l'=>$res]);
  24. }
  25. public function recommend(){
  26. $data = decode($this->request->post());
  27. $user = $data['u'];
  28. $res = $this->userModel->recommendUser($user);
  29. return json(['l'=>$res]);
  30. }
  31. public function apply(){
  32. $data = decode($this->request->post());
  33. $buddy = $data['b'];
  34. $user = $data['u'];
  35. $this->checkBuddyNum($user, $buddy);
  36. $info = $this->buddyModel->getBuddy($user, $buddy);
  37. if(empty($info)){
  38. $this->buddyModel->addAndSave(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Wait]);
  39. }
  40. $res = $this->buddyModel->getBuddy($buddy, $user);
  41. if(empty($res)){
  42. $this->buddyModel->addAndSave(['user_id'=>$buddy, 'buddy_id'=>$user]);
  43. }
  44. return json(['error'=>0]);
  45. }
  46. public function find(){
  47. }
  48. public function agree(){
  49. $data = decode($this->request->post());
  50. $buddy = $data['b'];
  51. $user = $data['u'];
  52. $this->checkBuddyNum($user, $buddy);
  53. $info = $this->buddyModel->getBuddy($user, $buddy);
  54. if($info){
  55. $this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$info['id']]);
  56. }else{
  57. $this->buddyModel->save(['user_id'=>$user, 'buddy_id'=>$buddy, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]);
  58. }
  59. $res = $this->buddyModel->getBuddy($buddy, $user);
  60. if($res){
  61. $this->buddyModel->update(['status'=>UserBuddy::Friend, 'updatetime'=>getCurrentTime()], ['id'=>$res['id']]);
  62. }else{
  63. $this->buddyModel->save(['user_id'=>$buddy, 'buddy_id'=>$user, 'status'=>UserBuddy::Friend, 'inputtime'=>getCurrentTime(), 'updatetime'=>getCurrentTime()]);
  64. }
  65. return json(['error'=>0]);
  66. }
  67. public function remove(){
  68. $data = decode($this->request->post());
  69. $buddy = $data['b'];
  70. $user = $data['u'];
  71. $info = $this->buddyModel->getBuddy($user, $buddy);
  72. if($info){
  73. $this->buddyModel->remove($info->toArray());
  74. }
  75. $res = $this->buddyModel->getBuddy($buddy, $user);
  76. if($res){
  77. $this->buddyModel->remove($res->toArray());
  78. }
  79. return json(['error'=>0]);
  80. }
  81. public function like(){
  82. $data = decode($this->request->post());
  83. $user = $data['u'];
  84. $nick = $data['n'];
  85. $res = $this->userModel->likeUserByNick($user, $nick);
  86. return json(['l'=>$res]);
  87. }
  88. private function checkBuddyNum($user, $buddy){
  89. if($user == $buddy) exit(json_encode(['error'=>1020]));
  90. $info = $this->userModel->getUserById($user);
  91. if(empty($info)) exit(json_encode(['error'=>1023]));
  92. $count = $this->buddyModel->getBuddyCount($user);
  93. // 个人超出好友指定数量则返回错误
  94. if($count >= $info['buddy']) exit(json_encode(['error'=>1011]));
  95. $buddy_info = $this->userModel->getUserById($buddy);
  96. if(empty($buddy_info)) exit(json_encode(['error'=>1023]));
  97. $buddy_count = $this->buddyModel->getBuddyCount($buddy);
  98. // 好友数量超出指定数量则返回错误
  99. if($buddy_count >= $buddy_info['buddy']) exit(json_encode(['error'=>1012]));
  100. }
  101. }