DigitalController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace backend\modules\mall\controllers;
  3. use backend\controllers\MallController;
  4. use common\enums\DownloadEnum;
  5. use common\enums\StatusEnum;
  6. use common\enums\UserWalletEnum;
  7. use common\helpers\csv\CsvExportHelper;
  8. use common\models\common\CapitalLog;
  9. use common\models\common\GlobalVarMap;
  10. use common\models\order\Order;
  11. use common\models\user\DigitalLog;
  12. use common\models\user\UserDigital;
  13. /**
  14. *
  15. * Class DigitalController
  16. * @package backend\modules\mall\DigitalController
  17. */
  18. class DigitalController extends MallController
  19. {
  20. /**
  21. *
  22. * @return mixed|string|void
  23. */
  24. public function actionIndex()
  25. {
  26. date_default_timezone_set('PRC');
  27. if (\Yii::$app->request->isAjax) {
  28. if (\Yii::$app->request->isPost) {
  29. $filename = '数字币明细-' . date('YmdHis') . '_' . rand(10000, 99999);
  30. $data = \Yii::$app->request->post();
  31. $data['table'] = 'score';
  32. $data['mall_id'] = $this->mall_id;
  33. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_ASSETS, CapitalLog::class, 'exportAssets', $data);
  34. if ($res === false) return $this->error('加入导出任务失败' . CsvExportHelper::getStaticError());
  35. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  36. }
  37. $get = \Yii::$app->request->get();
  38. $params['alias'] = 'b';
  39. $params['joinWith'] = ['user' => function ($query) {
  40. $query->select(['id', 'avatar_url', 'nickname', 'mobile']);
  41. }];
  42. if (isset($get['keyword']) && !empty($get['keyword'])) $params['where'] = [['or', ['like', 'nickname', $get['keyword']], ['=', 'mobile', $get['keyword']]]];
  43. if (isset($get['user_id']) && !empty($get['user_id'])) $params['where'][] = ['=', 'user_id', $get['user_id']];
  44. if (!empty($get['order_no'])) {
  45. $order = Order::getOne([['order_no' => $get['order_no']], ['mall_id' => $this->mall_id]], true, ['detail']);
  46. $order_detail_ids = [];
  47. if (!empty($order)) {
  48. $order_detail_ids = array_column($order['detail'], 'id');
  49. }
  50. $params['where'][] = ['b.source_table_id' => $order_detail_ids];
  51. }
  52. if (isset($get['desc']) && !empty($get['desc'])) $params['where'][] = ['like', 'b.desc', $get['desc']];
  53. if (isset($get['capital_type']) && !empty($get['capital_type'])) $params['where'][] = ['=', 'b.capital_type', $get['capital_type']];
  54. if (!empty($get['date'])) {
  55. $start_time = strtotime($get['date'][0]);
  56. $end_time = strtotime($get['date'][1]);
  57. $params['where'][] = ['>=', 'b.created_at', $start_time];
  58. $params['where'][] = ['<=', 'b.created_at', $end_time];
  59. }
  60. $params['where'][] = ['=', 'b.mall_id', $this->mall_id];
  61. if (!empty($get['status'])) {
  62. $params['where'][] = ['=', 'b.send_status', $get['status']];
  63. } else {
  64. $params['where'][] = ['=', 'b.send_status', DigitalLog::SEND_STATUS_FROZEN];
  65. }
  66. $params['order'] = 'b.created_at desc,b.id desc';
  67. $params['limit'] = 20;
  68. $params['select'] = ['b.change_num', 'b.change_type', 'b.current_num', 'b.desc', 'b.capital_type', 'b.created_at', 'b.user_id', 'b.from_type'];
  69. $params['page'] = empty($get['page']) ? 1 : $get['page'];
  70. $pageData = DigitalLog::listPage($params, false);
  71. if ($pageData === false) return $this->error(DigitalLog::getStaticError());
  72. $from_type_map = GlobalVarMap::getEnumMapByType('FromTypeMap');
  73. $capital_type_map = GlobalVarMap::getEnumMapByType('CapitalTypeMap');
  74. foreach ($pageData['list'] as &$val) {
  75. $val['source_text'] = ($from_type_map[$val['from_type']] ?? '') . ($capital_type_map[$val['capital_type']] ? '-' . $capital_type_map[$val['capital_type']] : '');
  76. }
  77. $pageData['incomeCapitalTypeList'] = $capital_type_map;
  78. $pageData['date'] = $get['date'];
  79. //总发放金豆,待结算金豆
  80. $total = UserDigital::find()->select('sum(digital) as digital,sum(frozen_digital) as frozen_digital')->where(['mall_id' => $this->mall_id,'status' => StatusEnum::ENABLED])->asArray()->one();
  81. //已使用
  82. $used = DigitalLog::find()->where(['mall_id' => $this->mall_id,'status' => StatusEnum::ENABLED,'change_type' => 'sub'])->andWhere(['!=','capital_type',UserWalletEnum::TRANSFER_GIVE])->sum('change_num') ?? 0;
  83. $transfer_charge = DigitalLog::find()->where(['mall_id' => $this->mall_id,'status' => StatusEnum::ENABLED,'change_type' => 'sub'])->andWhere(['=','capital_type',UserWalletEnum::TRANSFER_GIVE])->sum('contributor_money') ?? 0;
  84. $used =bcadd($used,$transfer_charge,2);
  85. $pageData['total'] = ['score' => $total['digital'] ?? 0, 'score_no_used' => $total['frozen_digital'] ?? 0, 'score_used' => $used ?? 0];
  86. return $this->success('操作成功', $pageData);
  87. }
  88. return $this->render($this->action->id);
  89. }
  90. }