VoteJoin.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. *
  4. * @author: wuhaotian<442384644@qq.com>
  5. * @day: 2019/12/07
  6. */
  7. namespace app\admin\model\vote;
  8. use crmeb\basic\BaseModel;
  9. use crmeb\traits\ModelTrait;
  10. use http\Client\Curl\User;
  11. /**
  12. * Class UserGroup
  13. * @package app\admin\model\user
  14. */
  15. class VoteJoin extends BaseModel
  16. {
  17. /**
  18. * 数据表主键
  19. * @var string
  20. */
  21. protected $pk = 'id';
  22. /**
  23. * 模型名称
  24. * @var string
  25. */
  26. protected $name = 'vote_join';
  27. use ModelTrait;
  28. public static function valid($alias = '')
  29. {
  30. return self::where($alias ? $alias . '.status' : 'status', 1);
  31. }
  32. /**
  33. * @param $where
  34. * @return array
  35. */
  36. public static function getList($id, $where)
  37. {
  38. $data = self::alias('a')
  39. ->where('a.vid', $id)
  40. ->join('user u', 'u.uid = a.uid', 'left')
  41. ->field('a.*,u.nickname,u.uid')
  42. ->order('a.status asc,a.id desc')
  43. ->page((int)$where['page'], (int)$where['limit'])
  44. ->select()
  45. ->each(function ($item) use ($id) {
  46. $user = \app\admin\model\user\User::get($item['uid']);
  47. $item['user_name'] = $user['nickname'];
  48. $item['_name'] = $item['name'] . "<br/><font style='color: #997643'>" . $item['company'] . "</font>";
  49. $item['_type'] = $item['type'] == 1 ? '个人' : '企业';
  50. $item['rank'] = self::valid()->where('vid', $id)->where('vote', '>', $item['vote'])->count() + 1;
  51. $item['_add_time'] = date('Y-m-d H:i:s', $item['add_time']);
  52. });
  53. $count = self::alias('a')
  54. ->where('a.vid', $id)
  55. ->join('user u', 'u.uid = a.uid', 'left')->count();
  56. return compact('count', 'data');
  57. }
  58. public static function getValidList($id, $where)
  59. {
  60. $data = self::valid('a')->alias('a')
  61. ->where('a.vid', $id)
  62. ->join('user u', 'u.uid = a.uid', 'left')
  63. ->field('a.*,u.nickname,u.uid')
  64. ->page((int)$where['page'], (int)$where['limit']);
  65. if (isset($where['key_word']) && $where['key_word']) $data = $data->where('a.name|u.uid|a.sub_id', 'like', "%" . $where['key_word'] . "%");
  66. if (isset($where['job']) && $where['job']) $data = $data->where('a.job', $where['job']);
  67. if ($where['rank']) {
  68. $data = $data->order('a.vote desc,a.add_time asc');
  69. } else {
  70. $data = $data->order('a.add_time', 'desc');
  71. }
  72. $data = $data->select()
  73. ->each(function ($item) use ($id) {
  74. $item['rank'] = self::valid()->where('vid', $id)->where('vote', '>', $item['vote'])->count() + 1;
  75. $item['_add_time'] = date('Y-m-d H:i:s', $item['add_time']);
  76. $item['avatar'] = urldecode($item['avatar']);
  77. });
  78. $count = $data->count();
  79. return compact('count', 'data');
  80. }
  81. public static function getValidDetail($id)
  82. {
  83. $data = self::valid('a')->alias('a')
  84. ->where('a.id', $id)
  85. ->join('user u', 'u.uid = a.uid', 'left')
  86. ->field('a.*,u.nickname,u.uid')
  87. ->find();
  88. $data['rank'] = self::valid()->where('vid', $data['vid'])->where('vote', '>', $data['vote'])->count() + 1;
  89. $data['_add_time'] = date('Y-m-d H:i:s', $data['add_time']);
  90. $data['avatar'] = urldecode($data['avatar']);
  91. return $data;
  92. }
  93. }