CommissionController.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace addons\BossThree\backend\controllers;
  3. use addons\BossThree\common\enums\BossThreeEnum;
  4. use common\enums\DownloadEnum;
  5. use common\enums\StatusEnum;
  6. use common\helpers\csv\CsvExportHelper;
  7. use common\models\common\CapitalLog;
  8. use common\models\common\CapitalStatistics;
  9. use common\models\common\CommissionLog;
  10. use common\models\goods\Goods;
  11. use common\models\user\User;
  12. use Yii;
  13. use common\controllers\AddonsController;
  14. use common\enums\UserWalletEnum;
  15. /**
  16. * 佣金明细控制器
  17. *
  18. * Class CommissionController
  19. * @package addons\BossThree\backend\controllers
  20. */
  21. class CommissionController extends BaseController
  22. {
  23. public $enableCsrfValidation = false;
  24. /**
  25. * 首页
  26. *
  27. * @return string
  28. */
  29. public function actionIndex()
  30. {
  31. CapitalLog::$capitalType = 'commission';
  32. if (\Yii::$app->request->isAjax) {
  33. if (\Yii::$app->request->isPost) {
  34. $filename = '佣金列表-' . date('YmdHis').'_'.rand(10000,99999);
  35. $data = \Yii::$app->request->post();
  36. $data['mall_id'] = $this->mall_id;
  37. $data['from_type'] = BossThreeEnum::ADDONS_NAME;
  38. $data['table'] = CapitalLog::$capitalType;
  39. if (!empty($data['date'])) {
  40. $date = date($data['date'] . '-01');
  41. $end_time = date('Y-m-d H:i:s',strtotime($date . '+1 month -1 day 23:59:59'));
  42. $data['date'] = [$date,$end_time];
  43. }
  44. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id,$filename,DownloadEnum::TYPE_ASSETS,CapitalLog::class,'exportAssets',$data);
  45. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  46. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  47. }
  48. $page = \Yii::$app->request->get('page') ?? 1;
  49. $limit = \Yii::$app->request->get('page_size') ?? $this->pageSize;
  50. $get = \Yii::$app->request->get();
  51. $params[] = ['log.mall_id' => $this->mall_id];
  52. $params[] = ['log.from_type' => BossThreeEnum::ADDONS_NAME];
  53. if (!empty($get['user_id'])) $params[] = ['log.user_id' => $get['user_id']];
  54. if (!empty($get['capital_type'])) $params[] = ['log.capital_type' => $get['capital_type']];
  55. if (!empty($get['remark'])) $params[] = ['like', 'log.desc', $get['remark']];
  56. if (!empty($get['keyword'])) $params[] = ['or', ['like', 'user.nickname', $get['keyword']], ['like', 'user.mobile', $get['keyword']]];
  57. if (!empty($get['date'])) {
  58. $date = date($get['date'] . '-01');
  59. $start_time = strtotime($date);
  60. $end_time = strtotime($date . '+1 month -1 day 23:59:59');
  61. $params[] = ['>=', 'log.created_at', $start_time];
  62. $params[] = ['<=', 'log.created_at', $end_time];
  63. }
  64. $join = [
  65. ['LEFT JOIN', User::tableName() . ' as user', 'user.id = log.user_id and log.mall_id = user.mall_id'],
  66. ];
  67. $params = [
  68. 'alias' => 'log',
  69. 'select' => 'log.id,log.mall_id,log.user_id,log.change_type,log.change_num,log.current_num,log.desc,log.from_type,log.capital_type,log.created_at,user.nickname,user.avatar_url,user.mobile,user.username,log.order_no',
  70. 'join' => $join,
  71. 'where' => $params,
  72. 'order' => 'id desc',
  73. 'page' => $page,
  74. 'limit' => $limit,
  75. ];
  76. $list = CapitalLog::listPage($params, false, true);
  77. $commission_map = UserWalletEnum::getCommissionMap();
  78. $list['date'] = explode('-',$date)[0] . '-' . explode('-', $date)[1];
  79. $capital_type_map = UserWalletEnum::getCapitalTypeMapByCommission();
  80. if (!empty($list['list'])) {
  81. foreach ($list['list'] as &$lv) {
  82. $lv['source_text'] = ($commission_map[$lv['from_type']] ?? '').($capital_type_map[$lv['capital_type']]?'-'.$capital_type_map[$lv['capital_type']]:'');
  83. $lv['created_at'] = date('Y-m-d H:i:s', $lv['created_at']);
  84. if($lv['order_no']){
  85. $lv['desc'] = $lv['desc'].',订单号:'.$lv['order_no'];
  86. }
  87. }
  88. }
  89. // 业务类型
  90. $list['commissionFromTypeList'] = $commission_map;//来源类型
  91. // 导出字段列表
  92. $list['export_list'] = CommissionLog::EXPORT_FIELD_LIST;
  93. $where['where'] = [['=', 'mall_id', $this->mall_id], ['=', 'type', CapitalStatistics::COMMISSIOIN]];
  94. $total = CapitalStatistics::statistics($where,
  95. ['sum(capital_total) capital_total', //总额
  96. 'sum(invalid_capital_total) invalid_capital_total']);//无效额
  97. $statistics_data['commission_total'] = $total[0]['capital_total'] ? round($total[0]['capital_total'], 2) : 0;
  98. $statistics_data['invalid_capital_total'] = $total[0]['invalid_capital_total'] ? round($total[0]['invalid_capital_total'], 2) : 0;
  99. CapitalLog::$capitalType = 'commission_frozen';
  100. $statistics_list = CapitalLog::find()->where(['mall_id' => $this->mall_id, 'status' => 0])->asArray()->all();
  101. if (empty($statistics_list)) {
  102. $statistics_data['frozen_capital_total'] = 0;
  103. } else {
  104. foreach ($statistics_list as $val) {
  105. if ($val['change_type'] == 'add') $statistics_data['frozen_capital_total'] += $val['change_num'];
  106. if ($val['change_type'] == 'sub') $statistics_data['frozen_capital_total'] -= $val['change_num'];
  107. }
  108. $statistics_data['frozen_capital_total'] = round($statistics_data['frozen_capital_total'], 2);
  109. }
  110. $list['statistics_data'] = $statistics_data;
  111. $list['export_list'] = CapitalLog::exportFieldsList();
  112. return $this->success('操作成功', $list);
  113. } else {
  114. $flag = \Yii::$app->request->post('flag');
  115. if (empty($flag)) {
  116. return $this->render('index');
  117. } else {
  118. // 导出数据
  119. }
  120. }
  121. }
  122. }