Site.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\model\system;
  4. use app\Request;
  5. use Firebase\JWT\JWT;
  6. use library\basic\BaseModel;
  7. use library\services\UtilService;
  8. use library\traits\JwtAuthModelTrait;
  9. use library\traits\ModelTrait;
  10. use think\db\exception\DbException;
  11. use think\facade\Env;
  12. use think\Model;
  13. /**
  14. * @mixin \think\Model
  15. */
  16. class Site extends BaseModel
  17. {
  18. use ModelTrait;
  19. use JwtAuthModelTrait;
  20. /**
  21. * 具体信息
  22. * @param $page
  23. * @param array $where
  24. * @param int $pageCount
  25. * @param string $filed
  26. * @param string $desc
  27. * @return array|void
  28. */
  29. public function getList($page,$where = [],$pageCount = 20,$filed = '*',$desc = '') {
  30. $data = $this
  31. ->field("*,(select name from table_site where sassid = s.tj_sassid) as tj_name")
  32. ->alias("s")
  33. ->when(1 ==1 ,function ($query) use ($where){
  34. if($where['artType'] == 'open'){
  35. $query->where('status',1);
  36. }
  37. if($where['artType'] == 'stop'){
  38. $query->where('status',0);
  39. }
  40. if(!empty($where['name'])) {
  41. $query->whereLike('name',"%{$where['name']}%");
  42. }
  43. if(!empty($where['i_sassid'])) {
  44. $query->where('sassid','<>',$where['i_sassid']);
  45. }
  46. })
  47. ->order($desc)
  48. ->paginate(['list_rows'=>$pageCount,'page'=>$page])
  49. ->toArray();
  50. // echo $this->getLastSql();
  51. foreach ($data['data'] as $k=>$v) {
  52. $data['data'][$k]['time'] = date('Y-m-d',$v['time']);
  53. }
  54. return [$data['total'],$data['data']];
  55. }
  56. /**
  57. * 具体信息
  58. * @param $page
  59. * @param array $where
  60. * @param int $pageCount
  61. * @param string $filed
  62. * @param string $desc
  63. * @return array|void
  64. */
  65. public function getList2($page,$where = [],$pageCount = 20,$filed = '*',$desc = '') {
  66. $regWhere = '';
  67. $oWhere = "";
  68. if(!empty($where['start_time'])) {
  69. $sTime = strtotime($where['start_time']);
  70. $eTime = strtotime($where['end_time']) + 86400;
  71. $regWhere = " AND regtime >= {$sTime} AND regtime < {$eTime}";
  72. $oWhere = " AND time >= {$sTime} AND time < {$eTime}";
  73. }
  74. $data = $this
  75. ->field("s.*,
  76. (SELECT count(*) from table_member where sassid = s.sassid {$regWhere}) as user_count,
  77. (SELECT count(*) from table_order where status > 0 and sassid = s.sassid {$oWhere}) as order_count,
  78. (SELECT count(*) from table_order_info where status > 0 and sassid = s.sassid {$oWhere}) as sub_order_count,
  79. (SELECT sum(all_price) from table_order where status > 0 and sassid = s.sassid {$oWhere}) as order_money,
  80. (SELECT sum(v) from table_recharge where status = 1 and sassid = s.sassid {$oWhere}) as recharge_money,
  81. (SELECT sum(v) from table_site_detail where type = 1 and sassid = s.sassid {$oWhere}) as commission_money
  82. ")
  83. ->alias("s")
  84. ->order($desc)
  85. ->paginate(['list_rows'=>$pageCount,'page'=>$page])
  86. ->toArray();
  87. foreach ($data['data'] as $k=>$v) {
  88. $data['data'][$k]['time'] = date('Y-m-d',$v['time']);
  89. }
  90. return [$data['total'],$data['data']];
  91. }
  92. /**
  93. * 保存数据
  94. * @param $post
  95. */
  96. public function saveSite($post) {
  97. if(empty($post['sassid'])) {
  98. try {
  99. self::beginTrans();
  100. //判断前缀是否重复
  101. $count = $this->where('sub_domain', $post['sub_domain'])->count();
  102. if ($count > 0) {
  103. self::setErrorInfo('二级域名重复');
  104. return false;
  105. }
  106. $ltSassid = $this->getLastInsID();
  107. $params = ['time' => time(), 'id' => $ltSassid];
  108. [$token, $parm] = JWT::encode($params, Env::get('app.app_key', 'default'));
  109. //生成密钥
  110. $key = md5(time() . $token . $ltSassid);
  111. $post['secret_key'] = $key;
  112. $post['time'] = time();
  113. unset($post['id']);
  114. $sassid = $this->insertGetId($post);
  115. (new AdminRole)->insert([
  116. 'sassid' => $sassid,
  117. 'name' => '超级管理员',
  118. 'module' => '',
  119. 'is_system' => 1
  120. ]);
  121. self::commitTrans();
  122. return true;
  123. }catch (DbException $e) {
  124. self::rollbackTrans();
  125. return false;
  126. }
  127. } else {
  128. $sassid = $post['sassid'];
  129. unset($post['sassid']);
  130. $this->where('sassid',$sassid)->save($post);
  131. return true;
  132. }
  133. }
  134. }