IndexController.php 7.2 KB

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