LiquidationController.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/12/7
  6. * Time: 下午8:00
  7. */
  8. namespace App\Http\Controllers\Manage\Finance;
  9. use App\Http\Controllers\Manage\Finance\Transformers\LiquidationTransformer;
  10. use App\Modules\Channel\Services\ChannelService;
  11. use App\Modules\Finance\Services\LiquidatedStatService;
  12. use App\Modules\Finance\Services\LiquidationService;
  13. use App\Modules\Trade\Services\PayMerchantService;
  14. use Illuminate\Http\Request;
  15. class LiquidationController extends BaseController
  16. {
  17. /**
  18. * @apiDefine Finance 结算提现模块
  19. */
  20. /**
  21. * @apiVersion 1.0.0
  22. * @apiDescription 添加清算支付渠道金额
  23. * @api {POST} Liquidated/add 添加清算支付渠道金额
  24. * @apiGroup Finance
  25. * @apiName Liquidated/add
  26. * @apiParam {String} pay_merchant_source 支付渠道
  27. * @apiParam {Number} amount 清算金额
  28. * @apiParam {String} [remark] 备注说明.
  29. * @apiSuccess {Number} amount 清算金额.
  30. * @apiSuccessExample {json} Success-Response:
  31. *
  32. * {
  33. * "code": 0,
  34. * "msg": "",
  35. * "data":{}
  36. * }
  37. */
  38. function add_liquidated(Request $request) {
  39. $pay_merchant_source = $request->has('pay_merchant_source') ? $request->input('pay_merchant_source') : '';
  40. if(empty($pay_merchant_source)) {
  41. return response()->error("PARAM_ERROR");
  42. }
  43. $amount = $request->has('amount') ? $request->input('amount') : '';
  44. if(!is_numeric($amount) || (float)$amount <= 0) {
  45. return response()->error("PARAM_ERROR");
  46. }
  47. $remark = $request->has('remark') ? $request->input('remark') : '';
  48. $remark = "[支付渠道清算]{".$remark."}";
  49. $liquidatedStat = LiquidatedStatService::getLiquidatedStatSingleBySource($pay_merchant_source);
  50. if(empty($liquidatedStat)) {
  51. return response()->error("PARAM_ERROR");
  52. }
  53. if($liquidatedStat['amount'] < $amount) {
  54. return response()->error("LIQUIDATED_STAT_AMOUNT_WITHOUT");
  55. }
  56. //添加一条清算记录
  57. LiquidationService::addLiquidation(0, $pay_merchant_source, -$amount, 0, $remark);
  58. //更新支付通道清算金额
  59. LiquidatedStatService::createOrUpdate($pay_merchant_source, -$amount);
  60. return response()->success();
  61. }
  62. /**
  63. * @apiVersion 1.0.0
  64. * @apiDescription 获取清算明细表列表
  65. * @api {GET} Liquidated/list 获取清算明细表列表
  66. * @apiGroup Finance
  67. * @apiName Liquidated/list
  68. * @apiParam {Number} [distribution_channel_id] 渠道id.(可不传,获取所有渠道)
  69. * @apiParam {String} [distribution_channel_name] 渠道名称.(可不传,获取所有渠道)
  70. * @apiParam {String} [pay_merchant_source] 支付通道渠道(可不传,获取所有通道)
  71. * @apiParam {String} [search_name] 搜索名称(可不传)
  72. * @apiParam {String} [start_time] 开始时间(可不传)
  73. * @apiParam {String} [end_time] 结束时间(可不传)
  74. * @apiSuccess {Number} id 清算ID
  75. * @apiSuccess {Number} channel_id 渠道ID
  76. * @apiSuccess {String} channel_name 渠道名称
  77. * @apiSuccess {String} pay_merchant_source 渠道支付通道
  78. * @apiSuccess {String} pay_merchant_source_name 渠道支付通道
  79. * @apiSuccess {Number} amount 清算金额.
  80. * @apiSuccess {Number} payment_id 打款ID
  81. * @apiSuccess {String} date 清算时间
  82. * @apiSuccess {String} remark 清算备注
  83. * @apiSuccess {String} phone 渠道联系
  84. * @apiSuccess {String} created_time
  85. * @apiSuccess {String} pay_merchant_id
  86. * @apiSuccess {String} nickname
  87. * @apiSuccess {String} person_in_charge_name 渠道负责人
  88. * @apiSuccessExample {json} Success-Response:
  89. *
  90. * {
  91. * "code": 0,
  92. * "msg": "",
  93. * "data":
  94. * [
  95. * {
  96. * "id": 21,
  97. * "channel_id": 11,
  98. * "channel_name": "weixiao",
  99. * "pay_merchant_source": "ALIPAY",
  100. * "pay_merchant_source_name": "通联支付",
  101. * "amount": "11.0000",
  102. * "payment_id": 0,
  103. * "date": "2017-12-07 00:00:00",
  104. * "remark": "每日结算",
  105. * "phone": "13732291699",
  106. * "created_time": "2017-12-07 18:22:29",
  107. * "pay_merchant_id": 0,
  108. * "nickname": "是的方式",
  109. * "person_in_charge_name": "大波哥"
  110. * }
  111. * ]
  112. * }
  113. */
  114. function get_list(Request $request) {
  115. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  116. $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
  117. $pay_merchant_source = $request->has('pay_merchant_source') ? $request->input('pay_merchant_source') : '';
  118. $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd',strtotime($request->input('start_time'))) : '';
  119. $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd',strtotime($request->input('end_time'))) : '';
  120. $end_time = self::getMaxDay($end_time);
  121. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  122. $params = [
  123. 'channel_id'=>$distribution_channel_id,
  124. 'channel_name'=>$distribution_channel_name,
  125. 'pay_merchant_source'=>$pay_merchant_source,
  126. 'start_date'=>$start_time,
  127. 'end_date'=>$end_time,
  128. 'search_name'=>$search_name,
  129. ];
  130. $result = LiquidationService::getLiquidationList($params);
  131. return response()->pagination(new LiquidationTransformer(), $result);
  132. }
  133. /**
  134. * @apiVersion 1.0.0
  135. * @apiDescription 获取清算明细表列表导出
  136. * @api {GET} Liquidated/listExport 获取清算明细表列表导出
  137. * @apiGroup Finance
  138. * @apiName Liquidated/listExport
  139. * @apiParam {Number} [distribution_channel_id] 渠道id.(可不传,获取所有渠道)
  140. * @apiParam {String} [distribution_channel_name] 渠道名称.(可不传,获取所有渠道)
  141. * @apiParam {String} [pay_merchant_source] 支付通道渠道(可不传,获取所有通道)
  142. * @apiParam {String} [search_name] 搜索名称(可不传)
  143. * @apiParam {String} [start_time] 开始时间(可不传)
  144. * @apiParam {String} [end_time] 结束时间(可不传)
  145. *
  146. */
  147. function get_list_export(Request $request) {
  148. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  149. $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
  150. $pay_merchant_source = $request->has('pay_merchant_source') ? $request->input('pay_merchant_source') : '';
  151. $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd',strtotime($request->input('start_time'))) : '';
  152. $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd',strtotime($request->input('end_time'))) : '';
  153. $end_time = self::getMaxDay($end_time);
  154. $search_name = $request->has('search_name') ? $request->input('search_name') : '';
  155. $params = [
  156. 'channel_id'=>$distribution_channel_id,
  157. 'channel_name'=>$distribution_channel_name,
  158. 'pay_merchant_source'=>$pay_merchant_source,
  159. 'start_date'=>$start_time,
  160. 'end_date'=>$end_time,
  161. 'search_name'=>$search_name,
  162. ];
  163. $result = LiquidationService::getLiquidationList($params, true);
  164. header("Content-type:application/vnd.ms-excel");
  165. header("Content-Disposition:attachment;filename=" . "清算明细" . date("YmdHis") . ".csv");
  166. echo iconv("UTF-8","GBK","\"操作日期\",\"渠道ID\",\"渠道名称\",\"支付通道\",\"清算金额(元)\",\"备注\"\r\n");
  167. if($result)
  168. {
  169. foreach($result as $item)
  170. {
  171. echo("\"" . iconv("UTF-8","GBK",date('Y-m-d H:i:s',strtotime($item->date))) . "\",");
  172. echo("\"" . $item->distribution_channel_id . "\",");
  173. echo("\"" . iconv("UTF-8","GBK",$item->distribution_channel_name) . "\",");
  174. echo("\"" . iconv("UTF-8","GBK",ChannelService::getSourceName(isset($item->pay_merchant_source) ? $item->pay_merchant_source : "")) . "\",");
  175. echo("\"" . ($item->amount) . "\",");
  176. echo("\"" . iconv("UTF-8","GBK",$item->remark) . "\"\r\n");
  177. }
  178. }
  179. exit();
  180. }
  181. }