ExportController.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Log;
  5. use Illuminate\Support\Facades\Auth;
  6. use Illuminate\Support\Facades\DB;
  7. class ExportController extends Controller
  8. {
  9. //导出流水账单
  10. public function exportSalesWaterBills(Request $request)
  11. {
  12. $input = $request->all();
  13. switch ($input['type']) {
  14. case '0':
  15. $starttime = date("Y-m-d 00:00:00", strtotime($input['time'][0]));
  16. $endtime = date("Y-m-d 00:00:00", strtotime($input['time'][1] . "+1 days"));
  17. break;
  18. case '1':
  19. $starttime = date("Y-m-01 00:00:00", strtotime($input['time']));
  20. $endtime = date("Y-m-01 00:00:00", strtotime($input['time'] . "+1 months"));
  21. break;
  22. case '2':
  23. $starttime = date("Y-01-01 00:00:00", strtotime($input['time']));
  24. $endtime = date("Y-01-01 00:00:00", strtotime($input['time'] . "+1 year"));
  25. break;
  26. }
  27. $time = [$starttime, $endtime];
  28. $list = DB::table('order')
  29. ->select('order.id', 'order.ordersn', DB::raw('SUM(order_goods.totalprice) as account'), DB::raw('SUM(order_goods.num) as total'), 'order.created_at')
  30. ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
  31. ->where('order.status', 2)
  32. ->whereBetween('order.created_at', $time)
  33. ->groupBy('order.id')
  34. ->orderBy('account', 'desc')
  35. ->get()->toarray();
  36. if ($list) {
  37. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出流水账单成功,导出时间段:'.$time[0].'-'.$time[1]);
  38. return $this->success($list);
  39. } else {
  40. return $this->error();
  41. }
  42. }
  43. //导出奖励支出(进货奖励)
  44. public function exportRewardSpending(Request $request){
  45. $input=$request->all();
  46. switch($input['type']){
  47. case '0':
  48. $starttime=date("Y-m-d 00:00:00",strtotime($input['time'][0]));
  49. $endtime= date("Y-m-d 00:00:00",strtotime($input['time'][1] ."+1 days"));
  50. break;
  51. case '1':
  52. $starttime=date("Y-m-01 00:00:00",strtotime($input['time']));
  53. $endtime= date("Y-m-01 00:00:00",strtotime($input['time'] ."+1 months"));
  54. break;
  55. case '2':
  56. $starttime=date("Y-01-01 00:00:00",strtotime($input['time']));
  57. $endtime= date("Y-01-01 00:00:00",strtotime($input['time'] ."+1 year"));
  58. break;
  59. }
  60. $time = [$starttime, $endtime];
  61. $list=DB::table('rewards')
  62. ->select('rewards.id','uu.nickname as agent_name','users.nickname as recom_name','rewards.bonus','rewards.created_at')
  63. ->leftJoin('users','users.id','=','rewards.recom_id')
  64. ->leftJoin('users as uu','uu.id','=','rewards.agent_id')
  65. ->where('rewards.type',1)
  66. ->whereBetween('rewards.created_at',$time)
  67. ->orderBy('rewards.id','desc')
  68. ->get();
  69. if ($list) {
  70. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出奖励支出成功,导出时间段:'.$time[0].'-'.$time[1]);
  71. return $this->success($list);
  72. } else {
  73. return $this->error();
  74. }
  75. }
  76. //导出业绩奖励
  77. public function exportPerformanceReward(Request $request)
  78. {
  79. $input = $request->all();
  80. switch ($input['type']) {
  81. case '0':
  82. $starttime = date("Y-m-d 00:00:00", strtotime($input['time'][0]));
  83. $endtime = date("Y-m-d 00:00:00", strtotime($input['time'][1] . "+1 days"));
  84. break;
  85. case '1':
  86. $starttime = date("Y-m-01 00:00:00", strtotime($input['time']));
  87. $endtime = date("Y-m-01 00:00:00", strtotime($input['time'] . "+1 months"));
  88. break;
  89. case '2':
  90. $starttime = date("Y-01-01 00:00:00", strtotime($input['time']));
  91. $endtime = date("Y-01-01 00:00:00", strtotime($input['time'] . "+1 year"));
  92. break;
  93. }
  94. $time = [$starttime, $endtime];
  95. $list= DB::table('rewards')
  96. ->select('rewards.id','users.nickname', 'rewards.bonus','rewards.month','rewards.created_at')
  97. ->leftJoin('users', 'users.id', '=', 'rewards.recom_id')
  98. ->where('rewards.type', 2)
  99. ->whereBetween('rewards.created_at', $time)
  100. ->orderBy('rewards.id', 'desc')
  101. ->get();
  102. if ($list) {
  103. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出业绩奖励成功,导出时间段:'.$time[0].'-'.$time[1]);
  104. return $this->success($list);
  105. } else {
  106. return $this->error();
  107. }
  108. }
  109. //导出店铺奖励
  110. public function exportStoreReward(Request $request)
  111. {
  112. $input = $request->all();
  113. switch ($input['type']) {
  114. case '0':
  115. $starttime = date("Y-m-d 00:00:00", strtotime($input['time'][0]));
  116. $endtime = date("Y-m-d 00:00:00", strtotime($input['time'][1] . "+1 days"));
  117. break;
  118. case '1':
  119. $starttime = date("Y-m-01 00:00:00", strtotime($input['time']));
  120. $endtime = date("Y-m-01 00:00:00", strtotime($input['time'] . "+1 months"));
  121. break;
  122. case '2':
  123. $starttime = date("Y-01-01 00:00:00", strtotime($input['time']));
  124. $endtime = date("Y-01-01 00:00:00", strtotime($input['time'] . "+1 year"));
  125. break;
  126. }
  127. $time = [$starttime, $endtime];
  128. $list = DB::table('rewards')
  129. ->select('store.id', 'store.name','goods.name as goodsname','rewards.*')
  130. ->leftJoin('goods', 'goods.id', '=', 'rewards.goods_id')
  131. ->leftJoin('store', 'store.id', '=', 'rewards.store_id')
  132. ->where('rewards.type', 3)
  133. ->whereBetween('rewards.created_at', $time)
  134. ->orderBy('rewards.id', 'desc')
  135. ->get();
  136. if ($list) {
  137. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出店铺奖励成功,导出时间段:'.$time[0].'-'.$time[1]);
  138. return $this->success($list);
  139. } else {
  140. return $this->error();
  141. }
  142. }
  143. //导出战区销售额排行
  144. public function exportWareaSalesResults(Request $request){
  145. $input=$request->all();
  146. switch($input['type']){
  147. case '0':
  148. $starttime=date("Y-m-d 00:00:00",strtotime($input['time'][0]));
  149. $endtime= date("Y-m-d 00:00:00",strtotime($input['time'][1] ."+1 days"));
  150. break;
  151. case '1':
  152. $starttime=date("Y-m-01 00:00:00",strtotime($input['time']));
  153. $endtime= date("Y-m-01 00:00:00",strtotime($input['time'] ."+1 months"));
  154. break;
  155. case '2':
  156. $starttime=date("Y-01-01 00:00:00",strtotime($input['time']));
  157. $endtime= date("Y-01-01 00:00:00",strtotime($input['time'] ."+1 year"));
  158. break;
  159. }
  160. $time = [$starttime, $endtime];
  161. $list =DB::table('warea')->distinct('warea.id')
  162. ->select('warea.name as warea', DB::raw('SUM(order_goods.totalprice) as account'))
  163. ->leftJoin('users', function ($join) {
  164. $join->on('users.warea_id', '=', 'warea.id')
  165. ->where('users.level', '=', 3);
  166. })
  167. ->leftJoin('order', 'order.user_id', '=', 'users.id')
  168. ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
  169. ->where('order.status', 2)
  170. ->whereBetween('order.created_at',$time)
  171. ->groupBy('warea.id')
  172. ->orderBy('account','desc')
  173. ->get()->toArray();
  174. if ($list) {
  175. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出战区销售额排行成功,导出时间段:'.$time[0].'-'.$time[1]);
  176. return $this->success($list);
  177. } else {
  178. return $this->error();
  179. }
  180. }
  181. //导出皇冠代理团队业绩排行
  182. public function exportCrownTeamSalesResults(Request $request){
  183. $input=$request->all();
  184. switch($input['type']){
  185. case '0':
  186. $starttime=date("Y-m-d 00:00:00",strtotime($input['time'][0]));
  187. $endtime= date("Y-m-d 00:00:00",strtotime($input['time'][1] ."+1 days"));
  188. break;
  189. case '1':
  190. $starttime=date("Y-m-01 00:00:00",strtotime($input['time']));
  191. $endtime= date("Y-m-01 00:00:00",strtotime($input['time'] ."+1 months"));
  192. break;
  193. case '2':
  194. $starttime=date("Y-01-01 00:00:00",strtotime($input['time']));
  195. $endtime= date("Y-01-01 00:00:00",strtotime($input['time'] ."+1 year"));
  196. break;
  197. }
  198. $time = [$starttime, $endtime];
  199. $list= DB::table('users')
  200. ->select('users.nickname as crowteam', DB::raw('SUM(order_goods.totalprice) as account'))
  201. ->leftJoin('users as uu', 'users.id', '=', 'uu.agent_id')
  202. ->leftJoin('order', 'order.user_id', '=', 'uu.id')
  203. ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
  204. ->where('order.status', 2)
  205. ->whereBetween('order.created_at',$time)
  206. ->where('users.level', '=', 3)
  207. ->groupBy('users.id')
  208. ->orderBy('account','desc')
  209. ->get()->toArray();
  210. if ($list) {
  211. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出皇冠代理团队业绩排行成功,导出时间段:'.$time[0].'-'.$time[1]);
  212. return $this->success($list);
  213. } else {
  214. return $this->error();
  215. }
  216. }
  217. //导出皇冠团队新增代理人数
  218. public function exportCrownAddAgentNum(Request $request){
  219. $input=$request->all();
  220. switch($input['type']){
  221. case '0':
  222. $starttime=date("Y-m-d 00:00:00",strtotime($input['time'][0]));
  223. $endtime= date("Y-m-d 00:00:00",strtotime($input['time'][1] ."+1 days"));
  224. break;
  225. case '1':
  226. $starttime=date("Y-m-01 00:00:00",strtotime($input['time']));
  227. $endtime= date("Y-m-01 00:00:00",strtotime($input['time'] ."+1 months"));
  228. break;
  229. case '2':
  230. $starttime=date("Y-01-01 00:00:00",strtotime($input['time']));
  231. $endtime= date("Y-01-01 00:00:00",strtotime($input['time'] ."+1 year"));
  232. break;
  233. }
  234. $time = [$starttime, $endtime];
  235. $list = DB::table('users')
  236. ->select('users.nickname as teamName','users.id', DB::raw('COUNT(uu.id) as count'))
  237. ->where('users.level', '=', 3)
  238. ->leftJoin('users as uu', 'users.id', '=', 'uu.crown_id')
  239. ->whereBetween('uu.created_at',$time)
  240. ->groupBy('users.id')
  241. ->orderBy('count','desc')
  242. ->get()->toArray();
  243. if ($list) {
  244. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出皇冠团队新增代理人数成功,导出时间段:'.$time[0].'-'.$time[1]);
  245. return $this->success_list($list);
  246. } else {
  247. return $this->error();
  248. }
  249. }
  250. //导出店铺业绩排行榜
  251. public function exportStoreSalesResults(Request $request){
  252. $input=$request->all();
  253. switch($input['type']){
  254. case '0':
  255. $starttime=date("Y-m-d 00:00:00",strtotime($input['time'][0]));
  256. $endtime= date("Y-m-d 00:00:00",strtotime($input['time'][1] ."+1 days"));
  257. break;
  258. case '1':
  259. $starttime=date("Y-m-01 00:00:00",strtotime($input['time']));
  260. $endtime= date("Y-m-01 00:00:00",strtotime($input['time'] ."+1 months"));
  261. break;
  262. case '2':
  263. $starttime=date("Y-01-01 00:00:00",strtotime($input['time']));
  264. $endtime= date("Y-01-01 00:00:00",strtotime($input['time'] ."+1 year"));
  265. break;
  266. }
  267. $time = [$starttime, $endtime];
  268. $list = DB::table('store')
  269. ->select('store.name as storename', DB::raw('SUM(order_goods.totalprice) as account'))
  270. ->leftJoin('users', function ($join) {
  271. $join->on('users.store_id', '=', 'store.id');
  272. })
  273. ->leftJoin('order', 'order.user_id', '=', 'users.id')
  274. ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
  275. ->where('order.status', 2)
  276. ->whereBetween('order.created_at',$time)
  277. ->groupBy('store.id')
  278. ->orderBy('account','desc')
  279. ->get()->toArray();
  280. if ($list) {
  281. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出店铺业绩排行榜成功,导出时间段:'.$time[0].'-'.$time[1]);
  282. return $this->success($list);
  283. } else {
  284. return $this->error();
  285. }
  286. }
  287. //导出代理业绩排行榜
  288. public function exportAgentSalesResults(Request $request){
  289. $input=$request->all();
  290. switch($input['type']){
  291. case '0':
  292. $starttime=date("Y-m-d 00:00:00",strtotime($input['time'][0]));
  293. $endtime= date("Y-m-d 00:00:00",strtotime($input['time'][1] ."+1 days"));
  294. break;
  295. case '1':
  296. $starttime=date("Y-m-01 00:00:00",strtotime($input['time']));
  297. $endtime= date("Y-m-01 00:00:00",strtotime($input['time'] ."+1 months"));
  298. break;
  299. case '2':
  300. $starttime=date("Y-01-01 00:00:00",strtotime($input['time']));
  301. $endtime= date("Y-01-01 00:00:00",strtotime($input['time'] ."+1 year"));
  302. break;
  303. }
  304. $search_name=$input["search_name"];
  305. $time = [$starttime, $endtime];
  306. $list=DB::table('users')
  307. ->select('users.nickname','users.level','warea.name as warea','uu.nickname as agent',DB::raw('SUM(order_goods.totalprice) as account'))
  308. ->leftJoin('order','order.user_id','=','users.id')
  309. ->leftJoin('order_goods','order.id','=','order_goods.order_id')
  310. ->leftJoin('warea','warea.id','=','users.warea_id')
  311. ->leftJoin('users as uu','uu.id','=','users.agent_id')
  312. ->where('order.status',2)
  313. ->whereBetween('order.created_at',$time)
  314. ->where('users.nickname', 'like', '%' . $search_name . '%')
  315. ->groupBy('users.id')
  316. ->orderBy('account','desc')
  317. ->get();
  318. if($list){
  319. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')导出代理业绩排行榜成功,导出时间段:'.$time[0].'-'.$time[1]);
  320. return $this->success($list);
  321. }else{
  322. return $this->error();
  323. }
  324. }
  325. }