Party.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4. use Redis;
  5. /**
  6. * 模型
  7. */
  8. class Party extends Model
  9. {
  10. // 开启自动写入时间戳字段
  11. protected $autoWriteTimestamp = 'int';
  12. // 定义时间戳字段名
  13. protected $createTime = 'createtime';
  14. protected $updateTime = 'updatetime';
  15. /**
  16. * 根据partyid 获取 party 信息
  17. */
  18. public function getPatyInfoByPartyId($party_id,$room_type,$type_id,$is_recommend,$all,$start = 0,$end = 9,$index) {
  19. if(!$party_id) return false;
  20. // 判断派对是否存在
  21. $redis = new Redis();
  22. $redisconfig = config("redis");
  23. $redis->connect($redisconfig["host"], $redisconfig["port"]);
  24. if ($redisconfig['redis_pwd']) {
  25. $redis->auth($redisconfig['redis_pwd']);
  26. }
  27. if($redisconfig['redis_selectdb'] > 0){
  28. $redis->select($redisconfig['redis_selectdb']);
  29. }
  30. if(!is_array($party_id)) {
  31. return [];
  32. }
  33. $redisPartyInfo = [];
  34. foreach($party_id as $k => $v) {
  35. //rediskey:派对详情
  36. $getredisPartyInfo = $redis->get($room_type.'_'.$k);
  37. $foreachData = json_decode($getredisPartyInfo,true);
  38. if(!$foreachData || $foreachData["is_close"] == 1) continue;
  39. if(!$foreachData || $foreachData["is_online"] == 0) continue;
  40. if(!$foreachData || $foreachData["party_pass"] != '') continue;
  41. $mod = isset($foreachData["party_type"])?intval($foreachData["party_type"])%5:1;
  42. if(isset($foreachData["type_name"]) && $foreachData["type_name"]) {
  43. $type_name = $foreachData["type_name"];
  44. } else {
  45. $type_name = "普通房";
  46. }
  47. $hasdata = false;
  48. if($all == 1) {
  49. if($is_recommend == 1) {
  50. if($foreachData["is_recommend"] == 1) $hasdata = true;
  51. } else {
  52. $hasdata = true;
  53. }
  54. } elseif($type_id > 0) {
  55. if($type_id == $foreachData["party_type"]) $hasdata = true;
  56. }
  57. if($foreachData["status"] != 1) $hasdata = false;
  58. $hasdata && $redisPartyInfo[] = [
  59. "id" => $foreachData["id"],
  60. "party_id" => $foreachData["party_id"],
  61. "r_id" => $foreachData["party_id"],
  62. "party_name" => $foreachData["party_name"],
  63. "party_pass" => $foreachData["party_pass"]?$foreachData["party_pass"]:"",
  64. "party_hot" => $v,
  65. "party_logo" => localpath_to_netpath($foreachData["party_logo"]),
  66. "party_type" => $type_name,
  67. "avatar" => $room_type == 2 ? $foreachData["avatar"]:"",
  68. "party_type_color" => $mod == 0?5:$mod,
  69. "party_user" => isset($foreachData["party_user"]) ? array_values($foreachData["party_user"]) : [] // 当前麦位人头像
  70. ];
  71. }
  72. $resdata = [];
  73. if($index == 1) {
  74. $num = $end - $start + 1;
  75. $countData = count($redisPartyInfo);
  76. if($num > $countData) $num = $countData;
  77. if($redisPartyInfo) {
  78. $dataRand = array_rand($redisPartyInfo,$num);
  79. $dataRand = is_array($dataRand)?$dataRand:[$dataRand];
  80. if($redisPartyInfo) foreach($redisPartyInfo as $k => $v) if(in_array($k,$dataRand)) $resdata[] = $v;
  81. }
  82. } else {
  83. if($redisPartyInfo) foreach($redisPartyInfo as $k => $v) if($k >= $start && $k <= $end) $resdata[] = $v;
  84. }
  85. return $resdata;
  86. }
  87. }