IndexController.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Laravel框架 [ Laravel ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2017~2021 Laravel研发中心
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://www.laravel.cn
  8. // +----------------------------------------------------------------------
  9. // | Author: wesmiler <12345678@qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace App\Http\Controllers;
  12. use App\Models\EnshrineOrdersModel;
  13. use App\Models\GongdengOrderModel;
  14. use App\Models\MemberModel;
  15. use App\Models\OrdersModel;
  16. use App\Models\UserModel;
  17. use App\Models\AdminRomModel;
  18. use App\Services\AdminService;
  19. use App\Services\EnshrineOrdersService;
  20. use App\Services\GongdengOrderService;
  21. use App\Services\MemberService;
  22. use App\Services\MenuService;
  23. use App\Services\OrdersService;
  24. use App\Services\RedisService;
  25. use App\Services\TradeService;
  26. use App\Services\UserService;
  27. /**
  28. * 系统主页控制器
  29. * @author wesmiler
  30. * @since 2020/11/10
  31. * Class IndexController
  32. * @package App\Http\Controllers
  33. */
  34. class IndexController extends Backend
  35. {
  36. /**
  37. * 构造函数
  38. * @author wesmiler
  39. * @since 2020/11/10
  40. * IndexController constructor.
  41. */
  42. public function __construct()
  43. {
  44. parent::__construct();
  45. }
  46. /**
  47. * 后台主页
  48. * @author wesmiler
  49. * @since 2020/11/10
  50. */
  51. public function getMenuList()
  52. {
  53. $menuService = new MenuService();
  54. $menuList = $menuService->getPermissionList($this->userId);
  55. return $menuList;
  56. }
  57. /**
  58. * 获取个人信息
  59. * @return array
  60. * @since 2020/11/10
  61. * @author wesmiler
  62. */
  63. public function getUserInfo()
  64. {
  65. $userService = new UserService();
  66. $result = $userService->getUserInfo($this->userId);
  67. return $result;
  68. }
  69. /**
  70. * 更新个人资料
  71. * @return mixed
  72. * @since 2020/11/11
  73. * @author wesmiler
  74. */
  75. public function updateUserInfo()
  76. {
  77. $userService = new UserService();
  78. $result = $userService->updateUserInfo($this->userId);
  79. return $result;
  80. }
  81. /**
  82. * 更新密码
  83. * @return mixed
  84. * @since 2020/11/11
  85. * @author wesmiler
  86. */
  87. public function updatePwd()
  88. {
  89. $userService = new UserService();
  90. $result = $userService->updatePwd($this->userId);
  91. return $result;
  92. }
  93. /**
  94. * 工作台统计数据
  95. * @return array
  96. */
  97. public function counts(){
  98. $data = [
  99. 'gdCount'=> GongdengOrderModel::where(['mark'=> 1,'status'=> 2])
  100. ->count('id'),
  101. 'shopCount'=> OrdersModel::where(['mark'=> 1])
  102. ->whereIn('status',[2,3,4])
  103. ->count('id'),
  104. 'memberCount'=> MemberModel::where(['mark'=> 1,'status'=> 1])
  105. ->where('create_time','>', strtotime(date('Y-m-d')))
  106. ->count('id')
  107. ];
  108. return message(MESSAGE_OK,true, $data);
  109. }
  110. /**
  111. * 数据分析统计
  112. * @return array
  113. */
  114. public function statistics(){
  115. $cacheKey = "caches:statistics:counts";
  116. $datas = RedisService::get($cacheKey);
  117. $datas = $datas? json_decode($datas, true) : [];
  118. if($datas){
  119. return message(MESSAGE_OK, true, $datas);
  120. }
  121. $datas = [
  122. 'gdCount'=> GongdengOrderModel::where(['mark'=> 1,'status'=> 2])
  123. ->count('id'),
  124. 'gdDayCount'=> GongdengOrderModel::where(['mark'=> 1,'status'=> 2])
  125. ->where('pay_at','>=', date('Y-m-d'))
  126. ->where('pay_at','<=', date('Y-m-d H:i:s'))
  127. ->count('id'),
  128. 'shopCount'=> OrdersModel::where(['mark'=> 1])
  129. ->whereIn('status',[2,3,4])
  130. ->count('id'),
  131. 'shopDayCount'=> OrdersModel::where(['mark'=> 1])
  132. ->whereIn('status',[2,3,4])
  133. ->where('pay_at','>=', date('Y-m-d'))
  134. ->where('pay_at','<=', date('Y-m-d H:i:s'))
  135. ->count('id'),
  136. 'memberCount'=> MemberModel::where(['mark'=> 1,'status'=> 1])
  137. ->count('id'),
  138. 'memberDayCount'=> MemberModel::where(['mark'=> 1,'status'=> 1])
  139. ->where('create_time','>=', strtotime(date('Y-m-d')))
  140. ->where('create_time','<=', time())
  141. ->count('id'),
  142. 'enshrineTotal'=> intval(EnshrineOrdersModel::where(['mark'=> 1,'status'=> 2])
  143. ->sum('total')),
  144. 'enshrineDayTotal'=> intval(EnshrineOrdersModel::where(['mark'=> 1,'status'=> 2])
  145. ->where('pay_at','>=', date('Y-m-d'))
  146. ->where('pay_at','<=', date('Y-m-d H:i:s'))
  147. ->sum('total')),
  148. ];
  149. RedisService::set($cacheKey, json_encode($datas, 256), rand(5, 10));
  150. return message(MESSAGE_OK,true, $datas);
  151. }
  152. /**
  153. * 获取消费排名
  154. * @return array
  155. */
  156. public function tradeRank(){
  157. $dateType = request()->get('dateType', 0);
  158. $datas = TradeService::make()->ranks($dateType);
  159. return message(MESSAGE_OK,true, $datas);
  160. }
  161. /**
  162. * 统计表数据
  163. * @return array
  164. */
  165. public function tableData(){
  166. $type = request()->get('type', 'trade');
  167. $dateType = request()->get('dateType', 0);
  168. $datas = [];
  169. switch($type){
  170. case 'trade': // 消费
  171. $datas = TradeService::make()->tableData($dateType);
  172. break;
  173. case 'gd': // 供灯交易量
  174. $datas = GongdengOrderService::make()->tableData($dateType);
  175. break;
  176. case 'member': // 用户注册
  177. $datas = MemberService::make()->tableData($dateType);
  178. break;
  179. case 'shop': // 商城交易量
  180. $datas = OrdersService::make()->tableData($dateType);
  181. break;
  182. case 'enshrine': // 供奉订单交易额
  183. $datas = EnshrineOrdersService::make()->tableData($dateType);
  184. break;
  185. }
  186. return message(MESSAGE_OK,true, $datas);
  187. }
  188. /**
  189. * 清除缓存
  190. * @return array
  191. */
  192. public function clearCache(){
  193. RedisService::keyDel("caches:config:*");
  194. RedisService::keyDel("caches:index:*");
  195. RedisService::keyDel("caches:articles:*");
  196. RedisService::keyDel("caches:qrcodes:*");
  197. RedisService::keyDel("caches:statistics:*");
  198. return message(MESSAGE_OK, true);
  199. }
  200. }