FinancialStatController.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/11/22
  6. * Time: 上午10:14
  7. */
  8. namespace App\Http\Controllers\Manage\Finance;
  9. use App\Http\Controllers\Manage\Finance\Transformers\FinancialStatDetailTransformer;
  10. use App\Http\Controllers\Manage\Finance\Transformers\FinancialStatTransformer;
  11. use App\Modules\Finance\Services\FinancialStatService;
  12. use Illuminate\Http\Request;
  13. class FinancialStatController extends BaseController
  14. {
  15. /**
  16. * @apiDefine Finance 结算提现模块
  17. */
  18. /**
  19. * @apiVersion 1.0.0
  20. * @apiDescription 获取提现汇总信息
  21. * @api {GET} getFinancialStat 获取提现汇总信息
  22. * @apiGroup Finance
  23. * @apiName getFinancialStat
  24. * @apiParam {Number} distribution_channel_id 渠道id.
  25. * @apiSuccess {String} channel_id 渠道id.
  26. * @apiSuccess {Number} accumulative_amount 累计提现金额.
  27. * @apiSuccess {Number} enable_amount 可提现金额.
  28. * @apiSuccess {Number} latest_amount 最近提现金额.
  29. * @apiSuccess {Number} pending_amount 提现中金额.
  30. * @apiSuccess {String} latest_time 最后提现时间.
  31. * @apiSuccess {String} rate 当前佣金比例.
  32. * @apiSuccessExample {json} Success-Response:
  33. *
  34. * {
  35. * "code": 0,
  36. * "msg": "",
  37. * "data":{
  38. * "channel_id": 1,
  39. * "accumulative_amount": "0.00",
  40. * "enable_amount": "2170.00",
  41. * "latest_amount": "0.00",
  42. * "latest_time": "",
  43. * "pending_amount": "0.00",
  44. * "rate": "0.60%"
  45. * }
  46. * }
  47. */
  48. function get_FinancialStatInfo(Request $request) {
  49. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  50. if(empty($distribution_channel_id)) {
  51. return response()->error("PARAM_EMPTY");
  52. }
  53. $result = FinancialStatService::getFinancialStatSingle($distribution_channel_id);
  54. return response()->item(new FinancialStatTransformer(), $result);
  55. }
  56. /**
  57. * @apiVersion 1.0.0
  58. * @apiDescription 获取账号信息列表
  59. * @api {GET} financialStats 获取账号信息列表
  60. * @apiGroup Finance
  61. * @apiName financialStats
  62. * @apiParam {Number} [distribution_channel_id] 渠道id.
  63. * @apiParam {String} [distribution_channel_name] 渠道名称.
  64. * @apiParam {String} [person_in_charge_name] 渠道负责人名称.
  65. * @apiParam {String} [search_name] 搜索名称.
  66. * @apiParam {Number} [is_frozen] 0:解冻; -1:冻结状态.
  67. * @apiParam {String} [ac_start_time] 账号创建开始时间2017-01-01
  68. * @apiParam {String} [ac_end_time] 账号创建结束时间2017-02-01
  69. * @apiParam {String} [frozen_start_time] 账号冻结开始时间2017-01-01
  70. * @apiParam {String} [frozen_end_time] 账号冻结结束时间2017-02-01
  71. * @apiParam {Number} [is_company] 0:对私, 1:对公司.(可不传,获取所有渠道)
  72. * @apiSuccess {String} channel_id 渠道id.
  73. * @apiSuccess {Number} accumulative_amount 累计提现金额.
  74. * @apiSuccess {Number} enable_amount 可提现金额.
  75. * @apiSuccess {Number} latest_amount 最近提现金额.
  76. * @apiSuccess {Number} pending_amount 提现中金额.
  77. * @apiSuccess {String} latest_time 最后提现时间.
  78. * @apiSuccess {String} rate 当前佣金比例.
  79. * @apiSuccess {String} phone 电话号码.
  80. * @apiSuccess {String} name 渠道名称.
  81. * @apiSuccess {String} pay_merchant 支付方式.
  82. * @apiSuccess {String} nickname 渠道昵称.
  83. * @apiSuccess {String} channel_remark 渠道备注.
  84. * @apiSuccess {String} channel_created_time 渠道创建时间.
  85. * @apiSuccess {String} fc_remark 冻结备注.
  86. * @apiSuccess {String} person_in_charge_name 渠道负责人
  87. * @apiSuccess {String} frozen_time 渠道冻结解冻时间
  88. * @apiSuccess {Number} is_company 0:对私, 1:对公司
  89. * @apiSuccessExample {json} Success-Response:
  90. *
  91. * {
  92. * "code": 0,
  93. * "msg": "",
  94. * "data":{
  95. * "list": [
  96. * {
  97. * "channel_id": 1,
  98. * "accumulative_amount": "1000.00",
  99. * "enable_amount": "11170.00",
  100. * "latest_amount": "0.00",
  101. * "latest_time": "2017-11-28 15:43:39",
  102. * "pending_amount": "1600.00",
  103. * "rate": "0.60%",
  104. * "phone": "",
  105. * "name": "sfsd",
  106. * "pay_merchant": "34",
  107. * "nickname": "",
  108. * "channel_remark": ""
  109. * "channel_created_time": "2017-11-28 15:43:39",
  110. * "frozen_time": "2017-11-28 15:43:39",
  111. * "person_in_charge_name": "",
  112. * "fc_remark": ""
  113. * "is_company": 0
  114. * }
  115. * "meta": {
  116. * ],
  117. * "total": 2,
  118. * "per_page": 15,
  119. * "current_page": 1,
  120. * "last_page": 1,
  121. * "next_page_url": "",
  122. * "prev_page_url": ""
  123. * }
  124. * }
  125. * }
  126. */
  127. function get_FinancialStatListDetail(Request $request) {
  128. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  129. $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
  130. $person_in_charge_name = $request->has('person_in_charge_name') ? $request->input('person_in_charge_name') : '';
  131. $isFrozen = $request->has('is_frozen') ? $request->input('is_frozen') : '';
  132. $is_frozen = '';
  133. if(is_numeric($isFrozen) && ($isFrozen == -1 || $isFrozen == 0)) {
  134. $is_frozen = $isFrozen;
  135. }
  136. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  137. $ac_start_time = $request->has('ac_start_time') && !empty($request->input('ac_start_time')) ? date('Ymd',strtotime($request->input('ac_start_time'))) : '';
  138. $ac_end_time = $request->has('ac_end_time') && !empty($request->input('ac_end_time')) ? date('Ymd',strtotime($request->input('ac_end_time'))) : '';
  139. $ac_end_time = self::getMaxDay($ac_end_time);
  140. $frozen_start_time = $request->has('frozen_start_time') && !empty($request->input('frozen_start_time')) ? date('Ymd',strtotime($request->input('frozen_start_time'))) : '';
  141. $frozen_end_time = $request->has('frozen_end_time') && !empty($request->input('frozen_end_time')) ? date('Ymd',strtotime($request->input('frozen_end_time'))) : '';
  142. $frozen_end_time = self::getMaxDay($frozen_end_time);
  143. $is_company = $request->has('is_company') ? $request->input('is_company') : '';
  144. $params = [
  145. 'channel_id'=>$distribution_channel_id,
  146. 'channel_name'=>$distribution_channel_name,
  147. 'person_in_charge_name'=>$person_in_charge_name,
  148. 'search_name'=>$search_name,
  149. 'ac_start_time'=>$ac_start_time,
  150. 'ac_end_time'=>$ac_end_time,
  151. 'is_frozen'=>$is_frozen,
  152. 'frozen_start_time'=>$frozen_start_time,
  153. 'frozen_end_time'=>$frozen_end_time,
  154. 'is_company'=>$is_company,
  155. ];
  156. $result = FinancialStatService::getFrozenFinancialStatListParam($params);
  157. return response()->pagination(new FinancialStatDetailTransformer(), $result);
  158. }
  159. /**
  160. * @apiVersion 1.0.0
  161. * @apiDescription 结算明细
  162. * @api {GET} financialStatSettlementPriceDetail 结算明细
  163. * @apiGroup Finance
  164. * @apiName financialStatSettlementPriceDetail
  165. * @apiParam {Number} [distribution_channel_id] 渠道id.
  166. * @apiParam {String} [distribution_channel_name] 渠道名称.
  167. * @apiParam {String} [person_in_charge_name] 渠道负责人名称.
  168. * @apiParam {String} [search_name] 搜索名称.
  169. * @apiParam {Number} [is_frozen] 0:解冻; -1:冻结状态.
  170. * @apiParam {String} [ac_start_time] 账号创建开始时间2017-01-01
  171. * @apiParam {String} [ac_end_time] 账号创建结束时间2017-02-01
  172. * @apiParam {String} [frozen_start_time] 账号冻结开始时间2017-01-01
  173. * @apiParam {String} [frozen_end_time] 账号冻结结束时间2017-02-01
  174. * @apiParam {Number} [is_company] 0:对私, 1:对公司.(可不传,获取所有渠道)
  175. * @apiSuccess {String} channel_id 渠道id.
  176. * @apiSuccess {Number} accumulative_amount 累计提现金额.
  177. * @apiSuccess {Number} enable_amount 可提现金额.
  178. * @apiSuccess {Number} latest_amount 最近提现金额.
  179. * @apiSuccess {Number} pending_amount 提现中金额.
  180. * @apiSuccess {String} latest_time 最后提现时间.
  181. * @apiSuccess {String} rate 当前佣金比例.
  182. * @apiSuccess {String} phone 电话号码.
  183. * @apiSuccess {String} name 渠道名称.
  184. * @apiSuccess {String} pay_merchant 支付方式.
  185. * @apiSuccess {String} nickname 渠道昵称.
  186. * @apiSuccess {String} channel_remark 渠道备注.
  187. * @apiSuccess {String} channel_created_time 渠道创建时间
  188. * @apiSuccess {String} person_in_charge_name 渠道负责人
  189. * @apiSuccess {String} frozen_time 渠道冻结解冻时间
  190. * @apiSuccess {String} fc_remark 冻结备注.
  191. * @apiSuccess {Number} recharge_amount_count 总充值金额.
  192. * @apiSuccess {Number} settlement_price_count 总结算金额.
  193. * @apiSuccess {Number} tallage 手续费
  194. * @apiSuccess {Number} is_company 0:对私, 1:对公司
  195. * @apiSuccessExample {json} Success-Response:
  196. *
  197. * {
  198. * "code": 0,
  199. * "msg": "",
  200. * "data":{
  201. * "list": [
  202. * {
  203. * "channel_id": 1,
  204. * "accumulative_amount": "1000.00",
  205. * "enable_amount": "11170.00",
  206. * "latest_amount": "0.00",
  207. * "latest_time": "2017-11-28 15:43:39",
  208. * "pending_amount": "1600.00",
  209. * "rate": "0.60%",
  210. * "phone": "",
  211. * "name": "sfsd",
  212. * "pay_merchant": "34",
  213. * "nickname": "",
  214. * "channel_remark": "",
  215. * "channel_created_time": "2017-11-28 15:43:39",
  216. * "frozen_time": "2017-11-28 15:43:39",
  217. * "person_in_charge_name": "",
  218. * "fc_remark": "",
  219. * "recharge_amount_count": "6300.00",
  220. * "settlement_price_count": "6300.00",
  221. * "tallage": 0
  222. * "is_company": 0
  223. * }
  224. * "meta": {
  225. * ],
  226. * "total": 2,
  227. * "per_page": 15,
  228. * "current_page": 1,
  229. * "last_page": 1,
  230. * "next_page_url": "",
  231. * "prev_page_url": ""
  232. * }
  233. * }
  234. * }
  235. */
  236. function settlement_price_detail(Request $request) {
  237. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  238. $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
  239. $person_in_charge_name = $request->has('person_in_charge_name') ? $request->input('person_in_charge_name') : '';
  240. $isFrozen = $request->has('is_frozen') ? $request->input('is_frozen') : '';
  241. $is_frozen = '';
  242. if(is_numeric($isFrozen) && ($isFrozen == -1 || $isFrozen == 0)) {
  243. $is_frozen = $isFrozen;
  244. }
  245. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  246. $ac_start_time = $request->has('ac_start_time') && !empty($request->input('ac_start_time')) ? date('Ymd',strtotime($request->input('ac_start_time'))) : '';
  247. $ac_end_time = $request->has('ac_end_time') && !empty($request->input('ac_end_time')) ? date('Ymd',strtotime($request->input('ac_end_time'))) : '';
  248. $ac_end_time = self::getMaxDay($ac_end_time);
  249. $frozen_start_time = $request->has('frozen_start_time') && !empty($request->input('frozen_start_time')) ? date('Ymd',strtotime($request->input('frozen_start_time'))) : '';
  250. $frozen_end_time = $request->has('frozen_end_time') && !empty($request->input('frozen_end_time')) ? date('Ymd',strtotime($request->input('frozen_end_time'))) : '';
  251. $frozen_end_time = self::getMaxDay($frozen_end_time);
  252. $is_company = $request->has('is_company') ? $request->input('is_company') : '';
  253. $params = [
  254. 'channel_id'=>$distribution_channel_id,
  255. 'channel_name'=>$distribution_channel_name,
  256. 'person_in_charge_name'=>$person_in_charge_name,
  257. 'search_name'=>$search_name,
  258. 'ac_start_time'=>$ac_start_time,
  259. 'ac_end_time'=>$ac_end_time,
  260. 'is_frozen'=>$is_frozen,
  261. 'frozen_start_time'=>$frozen_start_time,
  262. 'frozen_end_time'=>$frozen_end_time,
  263. 'is_company'=>$is_company,
  264. ];
  265. $result = FinancialStatService::getFrozenFinancialStatPriceListDetail($params);
  266. return response()->pagination(new FinancialStatDetailTransformer(), $result);
  267. }
  268. /**
  269. * @apiVersion 1.0.0
  270. * @apiDescription 结算明细导出
  271. * @api {GET} financialStatSettlementPriceDetailExport 结算明细导出
  272. * @apiGroup Finance
  273. * @apiName financialStatSettlementPriceDetailExport
  274. * @apiParam {Number} [distribution_channel_id] 渠道id.
  275. * @apiParam {String} [distribution_channel_name] 渠道名称.
  276. * @apiParam {String} [person_in_charge_name] 渠道负责人名称.
  277. * @apiParam {String} [search_name] 搜索名称.
  278. * @apiParam {Number} [is_frozen] 0:解冻; -1:冻结状态.
  279. * @apiParam {String} [ac_start_time] 账号创建开始时间2017-01-01
  280. * @apiParam {String} [ac_end_time] 账号创建结束时间2017-02-01
  281. * @apiParam {String} [frozen_start_time] 账号冻结开始时间2017-01-01
  282. * @apiParam {String} [frozen_end_time] 账号冻结结束时间2017-02-01
  283. * @apiParam {Number} [is_company] 0:对私, 1:对公司.(可不传,获取所有渠道)
  284. */
  285. function settlement_price_detail_export(Request $request) {
  286. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  287. $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
  288. $person_in_charge_name = $request->has('person_in_charge_name') ? $request->input('person_in_charge_name') : '';
  289. $isFrozen = $request->has('is_frozen') ? $request->input('is_frozen') : '';
  290. $is_frozen = '';
  291. if(is_numeric($isFrozen) && ($isFrozen == -1 || $isFrozen == 0)) {
  292. $is_frozen = $isFrozen;
  293. }
  294. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  295. $ac_start_time = $request->has('ac_start_time') && !empty($request->input('ac_start_time')) ? date('Ymd',strtotime($request->input('ac_start_time'))) : '';
  296. $ac_end_time = $request->has('ac_end_time') && !empty($request->input('ac_end_time')) ? date('Ymd',strtotime($request->input('ac_end_time'))) : '';
  297. $ac_end_time = self::getMaxDay($ac_end_time);
  298. $frozen_start_time = $request->has('frozen_start_time') && !empty($request->input('frozen_start_time')) ? date('Ymd',strtotime($request->input('frozen_start_time'))) : '';
  299. $frozen_end_time = $request->has('frozen_end_time') && !empty($request->input('frozen_end_time')) ? date('Ymd',strtotime($request->input('frozen_end_time'))) : '';
  300. $frozen_end_time = self::getMaxDay($frozen_end_time);
  301. $is_company = $request->has('is_company') ? $request->input('is_company') : '';
  302. $params = [
  303. 'channel_id'=>$distribution_channel_id,
  304. 'channel_name'=>$distribution_channel_name,
  305. 'person_in_charge_name'=>$person_in_charge_name,
  306. 'search_name'=>$search_name,
  307. 'ac_start_time'=>$ac_start_time,
  308. 'ac_end_time'=>$ac_end_time,
  309. 'is_frozen'=>$is_frozen,
  310. 'frozen_start_time'=>$frozen_start_time,
  311. 'frozen_end_time'=>$frozen_end_time,
  312. 'is_company'=>$is_company,
  313. ];
  314. $result = FinancialStatService::getFrozenFinancialStatPriceListDetail($params);
  315. header("Content-type:application/vnd.ms-excel");
  316. header("Content-Disposition:attachment;filename=" . "结算明细" . date("YmdHis") . ".csv");
  317. echo iconv("UTF-8","GBK","\"渠道ID\",\"渠道名称\",\"对私、对公\",\"充值金额\",\"佣金比例\",\"结算金额(元)\",\"扣税金额(元)\",\"提现金额(元)\",\"账户最新余额(元)\"\r\n");
  318. if($result)
  319. {
  320. foreach($result as $item)
  321. {
  322. echo("\"" . $item->id . "\",");
  323. echo("\"" . iconv("UTF-8","GBK",$item->name) . "\",");
  324. echo("\"" . $item->is_company . "\",");
  325. echo("\"" . $item->recharge_amount_count . "\",");
  326. echo("\"" . ($item->commission_rate * 100)."%" . "\",");
  327. echo("\"" . $item->settlement_price_count . "\",");
  328. echo("\"" . $item->tallage . "\",");
  329. echo("\"" . $item->accumulative_withdrawal_amount . "\",");
  330. echo("\"" . $item->enable_withdrawal_amount . "\"\r\n");
  331. }
  332. }
  333. exit();
  334. }
  335. }