VoteJoin.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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('status asc,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 = $data->count();
  54. return compact('count', 'data');
  55. }
  56. public static function getValidList($id, $where)
  57. {
  58. $data = self::valid('a')->alias('a')
  59. ->where('a.vid', $id)
  60. ->join('user u', 'u.uid = a.uid', 'left')
  61. ->field('a.*,u.nickname,u.uid')
  62. ->page((int)$where['page'], (int)$where['limit']);
  63. if (isset($where['key_word']) && $where['key_word']) $data = $data->where('a.name|u.uid|a.sub_id', 'like', "%" . $where['key_word'] . "%");
  64. if (isset($where['job']) && $where['job']) $data = $data->where('a.job', $where['job']);
  65. if ($where['rank']) {
  66. $data = $data->order('a.vote desc,a.add_time asc');
  67. } else {
  68. $data = $data->order('a.add_time', 'desc');
  69. }
  70. $data = $data->select()
  71. ->each(function ($item) use ($id) {
  72. $item['rank'] = self::valid()->where('vid', $id)->where('vote', '>', $item['vote'])->count() + 1;
  73. $item['_add_time'] = date('Y-m-d H:i:s', $item['add_time']);
  74. $item['avatar'] = urldecode($item['avatar']);
  75. });
  76. $count = $data->count();
  77. return compact('count', 'data');
  78. }
  79. }