BusinessChannelController.php 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/12/26
  6. * Time: 下午5:32
  7. */
  8. namespace App\Http\Controllers\Manage\Channel;
  9. use App\Http\Controllers\Manage\Channel\Transformers\BusinessChannelDayStatTransformer;
  10. use App\Http\Controllers\Manage\Channel\Transformers\BusinessChannelStatTransformer;
  11. use App\Http\Controllers\Manage\Channel\Transformers\BusinessCompanyStatTransformer;
  12. use App\Http\Controllers\Manage\Channel\Transformers\BusinessStatDataTransformer;
  13. use App\Http\Controllers\Manage\Finance\BaseController;
  14. use App\Modules\Channel\Models\BusinessChannelStat;
  15. use App\Modules\Channel\Services\BusinessChannelDayStatService;
  16. use App\Modules\Channel\Services\BusinessChannelStatService;
  17. use App\Modules\Channel\Services\ChannelService;
  18. use App\Modules\Channel\Services\CompanyService;
  19. use App\Modules\Manage\Services\ManageService;
  20. use App\Modules\SendOrder\Services\SendOrderService;
  21. use App\Modules\Trade\Services\OrderDayStatService;
  22. use App\Modules\Trade\Services\OrderService;
  23. use App\Modules\Trade\Services\OrderStatService;
  24. use App\Modules\User\Services\UserService;
  25. use DB;
  26. use Illuminate\Http\Request;
  27. class BusinessChannelController extends BaseController
  28. {
  29. /**
  30. * @apiVersion 1.0.0
  31. * @apiDescription 商务渠道数据统计每日列表
  32. * @api {GET} channel/getBusinessChannelDayList 商务渠道数据统计每日列表
  33. * @apiGroup channel
  34. * @apiName channel/getBusinessChannelDayList
  35. * @apiParam {Number} [distribution_channel_id] 渠道id.(可不传,获取所有渠道)
  36. * @apiParam {String} [distribution_channel_name] 渠道名称.(可不传,获取所有渠道)
  37. * @apiParam {String} [search_name] 搜索名称
  38. * @apiParam {String} [start_time] 开始时间(可不传)
  39. * @apiParam {String} [end_time] 结束时间(可不传)
  40. * @apiParam {Number} [is_enabled] 0:待审核; 1:已审核.(可不传)
  41. * @apiParam {Number} [distribution_manages_id] 管理员ID.(可不传)
  42. * @apiSuccess {Number} id 渠道ID.
  43. * @apiSuccess {String} name 渠道名称.
  44. * @apiSuccess {String} phone 手机号码.
  45. * @apiSuccess {String} pay_merchant 支付商户.
  46. * @apiSuccess {String} nickname 昵称.
  47. * @apiSuccess {String} latest_login_time 最后登陆时间.
  48. * @apiSuccess {String} latest_login_ip 最后登陆IP.
  49. * @apiSuccess {String} remark 备注.
  50. * @apiSuccess {String} register_ip 注册IP.
  51. * @apiSuccess {String} person_in_charge_name 负责人.
  52. * @apiSuccess {String} create_time 注册时间
  53. * @apiSuccess {Number} distribution_manages_id 管理员ID
  54. * @apiSuccess {String} distribution_manages_account 管理员
  55. * @apiSuccess {String} distribution_manages_number 管理员
  56. * @apiSuccess {String} distribution_manages_nickname 管理员昵称
  57. * @apiSuccess {String} business_channel_day_stats_date 统计时间
  58. * @apiSuccess {String} business_channel_day_stats_register_user_num 注册用户数
  59. * @apiSuccess {String} business_channel_day_stats_send_order_num 派单数
  60. * @apiSuccessExample {json} Success-Response:
  61. *
  62. * {
  63. * "code": 0,
  64. * "msg": "",
  65. * "data": [
  66. * {
  67. * "id": 1,
  68. * "phone": "",
  69. * "name": "121",
  70. * "pay_merchant_id": 1,
  71. * "nickname": "是说",
  72. * "latest_login_time": "",
  73. * "latest_login_ip": "",
  74. * "is_enabled": 1,
  75. * "register_ip": "",
  76. * "remark": "",
  77. * "person_in_charge_name": "波哥帅",
  78. * "create_time": "2017-11-20 18:34:17",
  79. * "distribution_manages_id": 0,
  80. * "distribution_manages_account": "zsy_finance",
  81. * "distribution_manages_number": "",
  82. * "distribution_manages_nickname": "3333",
  83. * "business_channel_day_stats_date": "2017-12-25",
  84. * "business_channel_day_stats_register_user_num": 0,
  85. * "business_channel_day_stats_send_order_num": 0
  86. * }
  87. * ]
  88. * }
  89. */
  90. public function getBusinessChannelDayList(Request $request)
  91. {
  92. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  93. $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
  94. $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd', strtotime($request->input('start_time'))) : '';
  95. $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd', strtotime($request->input('end_time'))) : '';
  96. $end_time = self::getMaxDay($end_time);
  97. $distribution_manages_id = $request->has('distribution_manages_id') ? $request->input('distribution_manages_id') : '';
  98. $isEnabled = $request->has('is_enabled') ? $request->input('is_enabled') : '';
  99. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  100. //商务,只获取到当前商务下的渠道列表
  101. if ($this->getLoginUserRole() == "business") {
  102. $distribution_manages_id = $this->getLoginUserId();
  103. }
  104. // dd($this->getLoginUserId());
  105. $params = [
  106. 'channel_id' => $distribution_channel_id,
  107. 'channel_name' => $distribution_channel_name,
  108. 'start_date' => $start_time,
  109. 'end_date' => $end_time,
  110. 'distribution_manages_id' => $distribution_manages_id,
  111. 'is_enabled' => $isEnabled,
  112. 'search_name' => $search_name,
  113. ];
  114. $result = BusinessChannelDayStatService::getList($params);
  115. return response()->pagination(new BusinessChannelDayStatTransformer(), $result);
  116. }
  117. /**
  118. * @apiVersion 1.0.0
  119. * @apiDescription 获商务渠道数据统计列表
  120. * @api {GET} channel/getBusinessChannelList 商务渠道数据统计列表
  121. * @apiGroup channel
  122. * @apiName channel/getBusinessChannelList
  123. * @apiParam {Number} [distribution_channel_id] 渠道id.(可不传,获取所有渠道)
  124. * @apiParam {String} [distribution_channel_name] 渠道名称.(可不传,获取所有渠道)
  125. * @apiParam {String} [search_name] 搜索名称
  126. * @apiParam {String} [start_time] 开始时间(可不传)
  127. * @apiParam {String} [end_time] 结束时间(可不传)
  128. * @apiParam {Number} [is_enabled] 0:待审核; 1:已审核.(可不传)
  129. * @apiParam {Number} [distribution_manages_id] 管理员ID.(可不传)
  130. * @apiParam {Number} [yesterday_register_user_num_sort] 昨日注册用户数排序 0:升序,1:降序.(可不传)
  131. * @apiParam {Number} [current_month_register_user_num_sort] 当月注册用户数排序 0:升序,1:降序.(可不传)
  132. * @apiParam {Number} [last_month_register_user_num_sort] 上月注册用户数排序 0:升序,1:降序.(可不传)
  133. * @apiParam {Number} [total_register_user_num_sort] 总注册用户数排序 0:升序,1:降序.(可不传)
  134. * @apiParam {Number} [total_send_order_num_sort] 总派单数 0:升序,1:降序.(可不传)
  135. * @apiSuccess {Number} id 渠道ID.
  136. * @apiSuccess {String} name 渠道名称.
  137. * @apiSuccess {String} phone 手机号码.
  138. * @apiSuccess {String} pay_merchant 支付商户.
  139. * @apiSuccess {String} nickname 昵称.
  140. * @apiSuccess {String} latest_login_time 最后登陆时间.
  141. * @apiSuccess {String} latest_login_ip 最后登陆IP.
  142. * @apiSuccess {String} remark 备注.
  143. * @apiSuccess {String} register_ip 注册IP.
  144. * @apiSuccess {String} person_in_charge_name 负责人.
  145. * @apiSuccess {String} create_time 注册时间
  146. * @apiSuccess {Number} distribution_manages_id 管理员ID
  147. * @apiSuccess {String} distribution_manages_account 管理员
  148. * @apiSuccess {String} distribution_manages_number 管理员
  149. * @apiSuccess {String} distribution_manages_nickname 管理员昵称
  150. * @apiSuccess {String} business_channel_stats_today_register_user_num 今日注册用户数
  151. * @apiSuccess {String} business_channel_stats_yesterday_register_user_num 昨日注册用户数
  152. * @apiSuccess {String} business_channel_stats_current_month_register_user_num 当月注册用户数
  153. * @apiSuccess {String} business_channel_stats_last_month_register_user_num 上月注册用户数
  154. * @apiSuccess {String} business_channel_stats_total_register_user_num 总注册用户数
  155. * @apiSuccess {String} business_channel_stats_total_send_order_num 总派单数
  156. * @apiSuccessExample {json} Success-Response:
  157. *
  158. * {
  159. * "code": 0,
  160. * "msg": "",
  161. * "data": [
  162. * {
  163. * "id": 1,
  164. * "phone": "",
  165. * "name": "121",
  166. * "pay_merchant_id": 1,
  167. * "nickname": "是说",
  168. * "latest_login_time": "",
  169. * "latest_login_ip": "",
  170. * "is_enabled": 1,
  171. * "register_ip": "",
  172. * "remark": "",
  173. * "person_in_charge_name": "波哥帅",
  174. * "create_time": "2017-11-20 18:34:17",
  175. * "distribution_manages_id": 0,
  176. * "distribution_manages_account": "zsy_finance",
  177. * "distribution_manages_number": "",
  178. * "distribution_manages_nickname": "3333",
  179. * "business_channel_stats_today_register_user_num": 4,
  180. * "business_channel_stats_yesterday_register_user_num": 0,
  181. * "business_channel_stats_current_month_register_user_num": 0,
  182. * "business_channel_stats_last_month_register_user_num": 0,
  183. * "business_channel_stats_total_register_user_num": 0,
  184. * "business_channel_stats_total_send_order_num": 0
  185. * }
  186. * ]
  187. * }
  188. */
  189. public function getBusinessChannelList(Request $request)
  190. {
  191. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  192. $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
  193. $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd', strtotime($request->input('start_time'))) : '';
  194. $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd', strtotime($request->input('end_time'))) : '';
  195. $end_time = self::getMaxDay($end_time);
  196. $distribution_manages_id = $request->has('distribution_manages_id') ? $request->input('distribution_manages_id') : '';
  197. $isEnabled = $request->has('is_enabled') ? $request->input('is_enabled') : '';
  198. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  199. //商务,只获取到当前商务下的渠道列表
  200. if ($this->getLoginUserRole() == "business") {
  201. $distribution_manages_id = $this->getLoginUserId();
  202. }
  203. $yesterday_register_user_num_sort = $request->has('yesterday_register_user_num_sort') ? $request->input('yesterday_register_user_num_sort') : '';
  204. $current_month_register_user_num_sort = $request->has('current_month_register_user_num_sort') ? $request->input('current_month_register_user_num_sort') : '';
  205. $last_month_register_user_num_sort = $request->has('last_month_register_user_num_sort') ? $request->input('last_month_register_user_num_sort') : '';
  206. $total_register_user_num_sort = $request->has('total_register_user_num_sort') ? $request->input('total_register_user_num_sort') : '';
  207. $total_send_order_num_sort = $request->has('total_send_order_num_sort') ? $request->input('total_send_order_num_sort') : '';
  208. $params = [
  209. 'channel_id' => $distribution_channel_id,
  210. 'channel_name' => $distribution_channel_name,
  211. 'start_date' => $start_time,
  212. 'end_date' => $end_time,
  213. 'distribution_manages_id' => $distribution_manages_id,
  214. 'is_enabled' => $isEnabled,
  215. 'search_name' => $search_name,
  216. 'yesterday_register_user_num_sort' => $yesterday_register_user_num_sort,
  217. 'current_month_register_user_num_sort' => $current_month_register_user_num_sort,
  218. 'last_month_register_user_num_sort' => $last_month_register_user_num_sort,
  219. 'total_register_user_num_sort' => $total_register_user_num_sort,
  220. 'total_send_order_num_sort' => $total_send_order_num_sort,
  221. ];
  222. $result = BusinessChannelStatService::getList($params);
  223. $today = date('Y-m-d');
  224. if ($result) {
  225. foreach ($result as $item) {
  226. $item['business_channel_stats_today_register_user_num'] = UserService::getChannelDayTotal($item['id'], $today);
  227. $item['business_channel_stats_total_register_user_num'] = UserService::getChannelTotal($item['id']);
  228. }
  229. }
  230. return response()->pagination(new BusinessChannelStatTransformer(), $result);
  231. }
  232. /**
  233. * @apiVersion 1.0.0
  234. * @apiDescription 获商务所有渠道数据统计汇总
  235. * @api {GET} channel/getBusinessChannelSingle 获商务所有渠道数据统计汇总
  236. * @apiGroup channel
  237. * @apiName channel/getBusinessChannelSingle
  238. * @apiParam {Number} [distribution_manages_id] 管理员ID.(可不传)
  239. * @apiSuccess {String} today_register_user_num 今日注册用户数
  240. * @apiSuccess {String} yesterday_register_user_num 昨日注册用户数
  241. * @apiSuccess {String} current_month_register_user_num 当月注册用户数
  242. * @apiSuccess {String} last_month_register_user_num 上月注册用户数
  243. * @apiSuccess {String} stats_total_register_user_num 总注册用户数
  244. * @apiSuccess {String} stats_total_send_order_num 总派单数
  245. * @apiSuccessExample {json} Success-Response:
  246. *
  247. * {
  248. * "code": 0,
  249. * "msg": "",
  250. * "data": {
  251. * "today_register_user_num": 4,
  252. * "yesterday_register_user_num": 0,
  253. * "current_month_register_user_num": 0,
  254. * "last_month_register_user_num": 0,
  255. * "total_register_user_num": 0,
  256. * "total_send_order_num": 0
  257. * }
  258. * }
  259. */
  260. public function getBusinessChannelSingle(Request $request)
  261. {
  262. $distribution_manages_id = $request->has('distribution_manages_id') ? $request->input('distribution_manages_id') : '';
  263. //商务,只获取到当前商务下的渠道列表
  264. if ($this->getLoginUserRole() == "business") {
  265. $distribution_manages_id = $this->getLoginUserId();
  266. }
  267. if ($this->getLoginUserRole() == "admin") {
  268. $distribution_manages_id = '';
  269. }
  270. $channelIds = ChannelService::getChannelIdList($distribution_manages_id);
  271. $yesterStartDay = date('Y-m-d', strtotime(date("Y-m-d") . " -1 day")) . " 00:00:00";
  272. $yesterEndDay = date('Y-m-d', strtotime(date("Y-m-d"))) . " 00:00:00";
  273. $toDayEndDay = date('Y-m-d', strtotime(date("Y-m-d"))) . " 23:59:59";
  274. $last_monthStartDay = date('Y-m', strtotime(date("Y-m") . " -1 month")) . "-01 00:00:00";
  275. $current_monthStartDay = date('Y-m', strtotime(date("Y-m"))) . "-01 00:00:00";
  276. $lastMonthStart = date('Y-m-01 00:00:00',strtotime('-1 month'));
  277. $lastMonthEnd = date('Y-m-d 23:59:59',strtotime(date('Y-m-01').'-1 day'));
  278. $today_register_user_num = UserService::getChannelsDayToDayTotal($channelIds, $yesterEndDay, $toDayEndDay);
  279. $currentMonthStart = date('Y-m-01 00:00:00');
  280. // $yesterday_register_user_num = UserService::getChannelsDayToDayTotal($channelIds, $yesterStartDay, $yesterEndDay);
  281. // $current_month_register_user_num = UserService::getChannelsDayToDayTotal($channelIds, $current_monthStartDay, $yesterEndDay);
  282. // $last_month_register_user_num = UserService::getChannelsDayToDayTotal($channelIds, $last_monthStartDay, $current_monthStartDay);
  283. // $total_register_user_num = UserService::getChannelsDayToDayTotal($channelIds);
  284. // $total_send_order_num = SendOrderService::getTotalPromotionCountByChannelIds($channelIds);
  285. $yesterday_register_user_num = BusinessChannelStat::whereIn('distribution_channel_id', $channelIds)
  286. // ->where('created_at', '>=', $yesterStartDay)
  287. // ->where('created_at', '<', $yesterEndDay)
  288. ->sum('yesterday_register_user_num');
  289. $current_month_register_user_num = BusinessChannelStat::whereIn('distribution_channel_id', $channelIds)
  290. // ->where('created_at', '>=', $current_monthStartDay)
  291. // ->where('created_at', '<', $yesterEndDay)
  292. ->sum('current_month_register_user_num');
  293. $last_month_register_user_num = BusinessChannelStat::whereIn('distribution_channel_id', $channelIds)
  294. // ->where('created_at', '>=', $last_monthStartDay)
  295. // ->where('created_at', '<', $current_monthStartDay)
  296. ->sum('last_month_register_user_num');
  297. $total_register_user_num = BusinessChannelStat::whereIn('distribution_channel_id', $channelIds)
  298. ->sum('total_register_user_num');
  299. $total_send_order_num = BusinessChannelStat::whereIn('distribution_channel_id', $channelIds)
  300. ->sum('total_send_order_num');
  301. $yesterday_new_companies_num = BusinessChannelStat::getNewAddedCompaniesNum($yesterStartDay,$yesterEndDay,$channelIds);
  302. $yesterday_new_channel_num = BusinessChannelStat::getNewwAddedChannelNum($yesterStartDay,$yesterEndDay,$channelIds);
  303. $last_month_new_companies_num = BusinessChannelStat::getNewAddedCompaniesNum($currentMonthStart,date('Y-m-d H:i:s'),$channelIds);
  304. $last_month_new_channel_num = BusinessChannelStat::getNewwAddedChannelNum($currentMonthStart,date('Y-m-d H:i:s'),$channelIds);
  305. $recharge_data = OrderStatService::getRechargeAmount($channelIds);
  306. $manage_company_total_charge_amount = $recharge_data->total_recharge_amount_sum;
  307. $month_begin_time = date('Y-m-01 00:00:00');
  308. $manage_company_total_charge_amount_current_month = $recharge_data->current_month_recharge_amount_sum;//OrderDayStatService::getRechargeByChannels($channelIds,$time_range=['begin_time' => $month_begin_time, 'end_time' => $yesterEndDay]);
  309. //$manage_company_total_charge_amount_current_month = OrderService::getAmount($manage_order_params_current_month);
  310. return response()->success(compact(
  311. 'today_register_user_num',
  312. 'yesterday_register_user_num',
  313. 'current_month_register_user_num',
  314. 'last_month_register_user_num',
  315. 'total_register_user_num',
  316. 'total_send_order_num',
  317. 'last_month_new_companies_num',
  318. 'last_month_new_channel_num',
  319. 'yesterday_new_companies_num',
  320. 'yesterday_new_channel_num',
  321. 'manage_company_total_charge_amount',
  322. 'manage_company_total_charge_amount_current_month'
  323. ));
  324. }
  325. /**
  326. * @apiVersion 1.0.0
  327. * @apiDescription 获商务数据统计列表
  328. * @api {GET} channel/getBusinessDataList 商务数据统计列表
  329. * @apiGroup channel
  330. * @apiName channel/getBusinessDataList
  331. * @apiParam {String} [search_name] 搜索名称
  332. * @apiParam {String} [start_time] 开始时间(可不传)
  333. * @apiParam {String} [end_time] 结束时间(可不传)
  334. * @apiParam {Number} [is_enabled]: 0:不可用; 1:可用
  335. *
  336. * @apiSuccess {Number} distribution_manages_id 管理员ID
  337. * @apiSuccess {String} distribution_manages_account 管理员
  338. * @apiSuccess {String} distribution_manages_number 管理员
  339. * @apiSuccess {String} distribution_manages_nickname 管理员昵称
  340. * @apiSuccess {String} today_register_user_num 今日注册用户数
  341. * @apiSuccess {String} yesterday_register_user_num 昨日注册用户数
  342. * @apiSuccess {String} current_month_register_user_num 当月注册用户数
  343. * @apiSuccess {String} last_month_register_user_num 上月注册用户数
  344. * @apiSuccess {String} total_register_user_num 总注册用户数
  345. * @apiSuccess {String} total_send_order_num 总派单数
  346. * @apiSuccessExample {json} Success-Response:
  347. *
  348. * {
  349. * "code": 0,
  350. * "msg": "",
  351. * "data": [
  352. * {
  353. * "distribution_manages_id": 0,
  354. * "distribution_manages_account": "zsy_finance",
  355. * "distribution_manages_nickname": "3333",
  356. * "distribution_manages_latest_login_time": "",
  357. * "distribution_manages_latest_login_ip": "",
  358. * "distribution_manages_is_enabled": 1,
  359. * "distribution_manages_remark": "",
  360. * "distribution_manages_register_ip": "",
  361. * "distribution_manages_create_time": "",
  362. * "distribution_manages_update_time": "",
  363. * "distribution_manages_number": "",
  364. * "today_register_user_num": 4,
  365. * "yesterday_register_user_num": 0,
  366. * "current_month_register_user_num": 0,
  367. * "last_month_register_user_num": 0,
  368. * "total_register_user_num": 0,
  369. * "total_send_order_num": 0
  370. * }
  371. * ]
  372. * }
  373. */
  374. public function getBusinessDataList(Request $request)
  375. {
  376. $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd', strtotime($request->input('start_time'))) : '';
  377. $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd', strtotime($request->input('end_time'))) : '';
  378. $end_time = self::getMaxDay($end_time);
  379. $isEnabled = $request->has('is_enabled') ? $request->input('is_enabled') : '';
  380. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  381. $params = [
  382. 'start_date' => $start_time,
  383. 'end_date' => $end_time,
  384. 'is_enabled' => $isEnabled,
  385. 'search_name' => $search_name,
  386. ];
  387. $business = ManageService::getBusinessManageList($params);
  388. $today = date('Y-m-d');
  389. $todayEnd = $today . " 23:59:59";
  390. if ($business) {
  391. foreach ($business as $item) {
  392. $channelIds = ChannelService::getChannelIdList($item['id']);
  393. $business_channel_stats = BusinessChannelStatService::getBusinessChannelStatSingle($channelIds);
  394. $item['yesterday_register_user_num'] = $business_channel_stats->yesterday_register_user_num;
  395. $item['current_month_register_user_num'] = $business_channel_stats->current_month_register_user_num;
  396. $item['last_month_register_user_num'] = $business_channel_stats->last_month_register_user_num;
  397. $item['total_register_user_num'] = $business_channel_stats->total_register_user_num;
  398. $item['total_send_order_num'] = $business_channel_stats->total_send_order_num;
  399. $item['current_month_new_channels_recharge'] = $business_channel_stats->current_month_new_channels_recharge_sum;
  400. $item['current_month_channels_recharge'] = $business_channel_stats->current_month_channels_recharge_sum;
  401. $item['last_month_channels_recharge_sum'] = $business_channel_stats->last_month_channels_recharge_sum;
  402. $item['last_month_new_channels_recharge_sum'] = $business_channel_stats->last_month_new_channels_recharge_sum;
  403. $item['today_register_user_num'] = UserService::getChannelsDayToDayTotal($channelIds, $today, $todayEnd);
  404. $item['current_month_companies_num'] = BusinessChannelStat::getNewAddedCompaniesNum(date('Y-m-01 00:00:00', time()), date('Y-m-d H:i:s'), $channelIds);
  405. $item['current_month_channel_num'] = BusinessChannelStat::getNewwAddedChannelNum(date('Y-m-01 00:00:00', time()), date('Y-m-d H:i:s'), $channelIds);
  406. $item['last_month_companies_num'] = BusinessChannelStat::getNewAddedCompaniesNum(date('Y-m-01',strtotime('-1 month')),date('Y-m-d H:i:s',strtotime(date('Y-m-01 23:59:59').' -1 day')),$channelIds);
  407. $item['last_month_channel_num'] = BusinessChannelStat::getNewwAddedChannelNum(date('Y-m-01',strtotime('-1 month')),date('Y-m-d H:i:s',strtotime(date('Y-m-01 23:59:59').' -1 day')),$channelIds);
  408. }
  409. }
  410. return response()->pagination(new BusinessStatDataTransformer(), $business);
  411. }
  412. /**
  413. * @apiVersion 1.0.0
  414. * @apiDescription 获商务渠道数据统计列表
  415. * @api {GET} channel/getBusinessChannelList2 商务渠道数据统计列表
  416. * @apiGroup channel
  417. * @apiName channel/getBusinessChannelList2
  418. * @apiParam {Number} [distribution_channel_id] 渠道id.(可不传,获取所有渠道)
  419. * @apiParam {String} [distribution_channel_name] 渠道名称.(可不传,获取所有渠道)
  420. * @apiParam {String} [search_name] 搜索名称
  421. * @apiParam {String} [start_time] 开始时间(可不传)
  422. * @apiParam {String} [end_time] 结束时间(可不传)
  423. * @apiParam {Number} [is_enabled] 0:待审核; 1:已审核.(可不传)
  424. * @apiParam {Number} [distribution_manages_id] 管理员ID.(可不传)
  425. * @apiParam {Number} [yesterday_register_user_num_sort] 昨日注册用户数排序 0:升序,1:降序.(可不传)
  426. * @apiParam {Number} [current_month_register_user_num_sort] 当月注册用户数排序 0:升序,1:降序.(可不传)
  427. * @apiParam {Number} [last_month_register_user_num_sort] 上月注册用户数排序 0:升序,1:降序.(可不传)
  428. * @apiParam {Number} [total_register_user_num_sort] 总注册用户数排序 0:升序,1:降序.(可不传)
  429. * @apiParam {Number} [total_send_order_num_sort] 总派单数 0:升序,1:降序.(可不传)
  430. * @apiSuccess {Number} id 渠道ID.
  431. * @apiSuccess {String} name 渠道名称.
  432. * @apiSuccess {String} phone 手机号码.
  433. * @apiSuccess {String} pay_merchant 支付商户.
  434. * @apiSuccess {String} nickname 昵称.
  435. * @apiSuccess {String} latest_login_time 最后登陆时间.
  436. * @apiSuccess {String} latest_login_ip 最后登陆IP.
  437. * @apiSuccess {String} remark 备注.
  438. * @apiSuccess {String} register_ip 注册IP.
  439. * @apiSuccess {String} person_in_charge_name 负责人.
  440. * @apiSuccess {String} create_time 注册时间
  441. * company_name--公司名
  442. * business_channel_stats_today_register_user_num 今日注册数
  443. * business_channel_stats_yesterday_register_user_num 昨日注册用户数
  444. * business_channel_stats_current_month_register_user_num 当月注册用户数
  445. * business_channel_stats_last_month_register_user_num 上月注册用户数
  446. * business_channel_stats_total_register_user_num 总注册用户数
  447. * business_channel_stats_total_send_order_num 总派单数
  448. * business_channel_stats_service_account_sum 服务号数
  449. * business_channel_stats_last_week_actual_send_orders_sum 上周实际派单
  450. * business_channel_stats_current_week_actual_send_orders_sum 本周实际派单
  451. * business_channel_stats_yesterday_create_orders_sum 昨日创建派单
  452. * business_channel_stats_last_week_login_day_sum 上周登录天数
  453. * business_channel_stats_current_week_login_days_sum 本周登录天数
  454. * business_channel_stats_is_yesterday_login 昨日是否登录
  455. *
  456. * @apiSuccess {Number} distribution_manages_id 管理员ID
  457. * @apiSuccess {String} distribution_manages_account 管理员
  458. * @apiSuccess {String} distribution_manages_number 管理员
  459. * @apiSuccess {String} distribution_manages_nickname 管理员昵称
  460. * @apiSuccess {String} business_channel_stats_today_register_user_num 今日注册用户数
  461. * @apiSuccess {String} business_channel_stats_yesterday_register_user_num 昨日注册用户数
  462. * @apiSuccess {String} business_channel_stats_current_month_register_user_num 当月注册用户数
  463. * @apiSuccess {String} business_channel_stats_last_month_register_user_num 上月注册用户数
  464. * @apiSuccess {String} business_channel_stats_total_register_user_num 总注册用户数
  465. * @apiSuccess {String} business_channel_stats_total_send_order_num 总派单数
  466. * @apiSuccessExample {json} Success-Response:
  467. *
  468. * {
  469. * "code": 0,
  470. * "msg": "",
  471. * "data": [
  472. * {
  473. * "id": 1,
  474. * "phone": "",
  475. * "name": "121",
  476. * "pay_merchant_id": 1,
  477. * "nickname": "是说",
  478. * "latest_login_time": "",
  479. * "latest_login_ip": "",
  480. * "is_enabled": 1,
  481. * "register_ip": "",
  482. * "remark": "",
  483. * "person_in_charge_name": "波哥帅",
  484. * "create_time": "2017-11-20 18:34:17",
  485. * "distribution_manages_id": 0,
  486. * "distribution_manages_account": "zsy_finance",
  487. * "distribution_manages_number": "",
  488. * "distribution_manages_nickname": "3333",
  489. * "business_channel_stats_today_register_user_num": 4,
  490. * "business_channel_stats_yesterday_register_user_num": 0,
  491. * "business_channel_stats_current_month_register_user_num": 0,
  492. * "business_channel_stats_last_month_register_user_num": 0,
  493. * "business_channel_stats_total_register_user_num": 0,
  494. * "business_channel_stats_total_send_order_num": 0
  495. * }
  496. * ]
  497. * }
  498. */
  499. public function getBusinessCompanyList(Request $request)
  500. {
  501. $distribution_channel_id = $request->has('company_id') ? $request->input('company_id') : '';
  502. $distribution_channel_name = $request->has('company_name') ? $request->input('company_name') : '';
  503. $distribution_manages_name = $request->has('manager_name') ? $request->input('manager_name') : '';
  504. $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd', strtotime($request->input('start_time'))) : '';
  505. $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd', strtotime($request->input('end_time'))) : '';
  506. $end_time = self::getMaxDay($end_time);
  507. $distribution_manages_id = $request->has('distribution_manages_id') ? $request->input('distribution_manages_id') : '';
  508. $isEnabled = $request->has('is_enabled') ? $request->input('is_enabled') : '';
  509. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  510. //商务,只获取到当前商务下的渠道列表
  511. if ($this->getLoginUserRole() == "business") {
  512. $distribution_manages_id = $this->getLoginUserId();
  513. }
  514. $yesterday_register_user_num_sort = $request->has('yesterday_register_user_num_sort') ? $request->input('yesterday_register_user_num_sort') : '';
  515. $current_month_register_user_num_sort = $request->has('current_month_register_user_num_sort') ? $request->input('current_month_register_user_num_sort') : '';
  516. $last_month_register_user_num_sort = $request->has('last_month_register_user_num_sort') ? $request->input('last_month_register_user_num_sort') : '';
  517. $total_register_user_num_sort = $request->has('total_register_user_num_sort') ? $request->input('total_register_user_num_sort') : '';
  518. $total_send_order_num_sort = $request->has('total_send_order_num_sort') ? $request->input('total_send_order_num_sort') : '';
  519. $params = [
  520. 'company_id' => $distribution_channel_id,
  521. 'company_name' => $distribution_channel_name,
  522. 'manager_name' => $distribution_manages_name,
  523. 'start_date' => $start_time,
  524. 'end_date' => $end_time,
  525. 'distribution_manages_id' => $distribution_manages_id,
  526. 'is_enabled' => $isEnabled,
  527. 'search_name' => $search_name,
  528. 'yesterday_register_user_num_sort' => $yesterday_register_user_num_sort,
  529. 'current_month_register_user_num_sort' => $current_month_register_user_num_sort,
  530. 'last_month_register_user_num_sort' => $last_month_register_user_num_sort,
  531. 'total_register_user_num_sort' => $total_register_user_num_sort,
  532. 'total_send_order_num_sort' => $total_send_order_num_sort,
  533. ];
  534. //\Log::info('time_check:getListNew:before--:'.time());
  535. $result = BusinessChannelStatService::getListNew($params);
  536. // \Log::info('time_check:getListNew:after--:'.time());
  537. $today = date('Y-m-d');
  538. //\Log::info('businessChannelStats:' . json_encode($result));
  539. if ($result) {
  540. foreach ($result as $item) {
  541. $company = DB::table('companies')->where('id', $item['company_id'])->first();
  542. $distribution_channel_ids = [];
  543. if ($company) {
  544. $company_id = $company->id;
  545. $company_name = $company->name;
  546. // \Log::info('time_check:getCompanyServiceAccounts:before--'.time());
  547. $company_service_account = CompanyService::getCompanyServiceAccounts($company_id);
  548. // \Log::info('time_check:getCompanyServiceAccounts:after--'.time());
  549. foreach ($company_service_account as $company_service_account_item) {
  550. $distribution_channel_ids[] = $company_service_account_item->distribution_channel_id;
  551. }
  552. $yesterdayEnd = date('Y-m-d', strtotime(date("Y-m-d") . " -1 day")) . " 23:59:59";
  553. $recharge_data = OrderStatService::getRechargeAmount($distribution_channel_ids);
  554. $item['company_total_charge_amount'] = $recharge_data->total_recharge_amount_sum;// OrderStatService::getRechargeAmount($distribution_channel_ids);
  555. $month_begin_time = date('Y-m-01 00:00:00');
  556. $item['company_total_charge_amount_current_month'] = $recharge_data->current_month_recharge_amount_sum;//OrderDayStatService::getRechargeByChannels($distribution_channel_ids,$time_range=['begin_time' => $month_begin_time, 'end_time' => $yesterdayEnd]); //OrderService::getAmount($company_order_params_current_month);
  557. $item['company_name'] = $company_name;
  558. $fans_gender = $company->fans_gender;
  559. switch ($fans_gender) {
  560. case 1:
  561. $item['fans_gender'] = '男粉';
  562. break;
  563. case 2:
  564. $item['fans_gender'] = '女粉';
  565. break;
  566. case 3:
  567. $item['fans_gender'] = '混合粉';
  568. break;
  569. default:
  570. $item['fans_gender'] = '';
  571. }
  572. } else {
  573. $item['company_name'] = '';
  574. $item['fans_gender'] = '';
  575. //\Log::info('company error:' . $item['company_id']);
  576. }
  577. //\Log::info('time_check:UserService::getCompanyDayTotal:before:'.time());
  578. $item['business_channel_stats_today_register_user_num'] = UserService::getCompanyDayTotal($today, $item['company_id']);
  579. //\Log::info('time_check:UserService::getCompanyTotal:before:'.time());
  580. $item['business_channel_stats_total_register_user_num'] = UserService::getCompanyTotal($item['company_id']);
  581. //\Log::info('time_check:UserService::getCompanyTotal:after:'.time());
  582. }
  583. }
  584. return response()->pagination(new BusinessCompanyStatTransformer(), $result);
  585. }
  586. public function getCompanyLastWeekPromotion(Request $request)
  587. {
  588. $company_id = $request->input('company_id', '');
  589. if (!$company_id) {
  590. return response()->error('PARAM_EMPTY');
  591. }
  592. $time = $request->input('time', '');
  593. if (!$time) {
  594. return response()->error('PARAM_EMPTY');
  595. }
  596. if (!in_array($time, ['current', 'last'])) {
  597. return response()->error('PARAM_ERROR');
  598. }
  599. $books = [];
  600. if ($time == 'current') {
  601. $current_week_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")));
  602. $current_week_end = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y")));
  603. $books = SendOrderService::getCompanyPromotionBooks($company_id, $current_week_start, $current_week_end);
  604. //return response()->success($books);
  605. }
  606. if ($time == 'last') {
  607. $beginLastweek = date('Y-m-d H:i:s', mktime(0, 0, 0, date('m'), date('d') - date('w') + 1 - 7, date('Y')));
  608. $endLastweek = date('Y-m-d H:i:s', mktime(23, 59, 59, date('m'), date('d') - date('w') + 7 - 7, date('Y')));
  609. $books = SendOrderService::getCompanyPromotionBooks($company_id, $beginLastweek, $endLastweek);
  610. }
  611. return response()->success($books);
  612. }
  613. public function getServiceAccount(Request $request)
  614. {
  615. $company_id = $request->input('company_id', '');
  616. if (empty($company_id)) {
  617. return response()->error('PARAM_EMPTY');
  618. }
  619. $accounts = CompanyService::getCompanyServiceAccounts($company_id);
  620. return response()->success($accounts);
  621. }
  622. }