RewardController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace addons\BusinessBonus\backend\controllers;
  3. use addons\BusinessBonus\common\models\BusinessBonusReward;
  4. use common\enums\DownloadEnum;
  5. use common\enums\StatusEnum;
  6. use common\helpers\csv\CsvExportHelper;
  7. use common\models\user\User;
  8. use Yii;
  9. use yii\db\Exception;
  10. class RewardController extends BaseController
  11. {
  12. public function actionIndex()
  13. {
  14. if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
  15. $params = Yii::$app->request->post();
  16. $res = Yii::$app->services->validate->validate($params, [
  17. [['page', 'bonus_status', 'user_id'], 'integer'],
  18. [['created_at', 'nickname', 'bonus_time'], 'safe'],
  19. ]);
  20. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  21. $where = [
  22. ['=', 'mall_id', $this->mall_id],
  23. ['=', 'status', StatusEnum::ENABLED],
  24. ];
  25. if ($params['bonus_status'] !== '' && $params['bonus_status'] !== null) {
  26. $where[] = ['=', 'bonus_status', $params['bonus_status']];
  27. }
  28. if ($params['nickname']) {
  29. $user_ids = User::find()
  30. ->orWhere(['like', 'nickname', "%" . $params['nickname'] . "%", false])
  31. ->orWhere(['like', 'mobile', "%" . $params['nickname'] . "%", false])
  32. ->select('id')
  33. ->asArray()
  34. ->column();
  35. $where[] = ['in', 'user_id', $user_ids];
  36. }
  37. if ($params['user_id']) {
  38. $where[] = ['=', 'user_id', (int)$params['user_id']];
  39. }
  40. // 创建时间
  41. $start_time = strtotime($params['created_at'][0] ?? 0);
  42. $end_time = strtotime($params['created_at'][1] ?? 0);
  43. if ($start_time > 0 && $end_time > 0 && $end_time >= $start_time) {
  44. $where[] = ['>=', 'created_at', $start_time];
  45. $where[] = ['<=', 'created_at', $end_time];
  46. }
  47. // 结算时间
  48. $bonus_start = strtotime($params['bonus_time'][0] ?? 0);
  49. $bonus_end = strtotime($params['bonus_time'][1] ?? 0);
  50. if ($start_time > 0 && $end_time > 0 && $end_time >= $start_time) {
  51. $where[] = ['>=', 'created_at', $bonus_start];
  52. $where[] = ['<=', 'created_at', $bonus_end];
  53. }
  54. $condition = ['where' => $where, 'with' => 'user', 'order' => 'id desc'];
  55. if (Yii::$app->request->post('flag') == 'EXPORT') {
  56. $filename = '招商分红明细-' . date('YmdHis').'_'.rand(10000,99999);
  57. $post = Yii::$app->request->post();
  58. $post['condition'] = $condition;
  59. $post['mall_id'] = $this->mall_id;
  60. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_HAND_BOUNS, BusinessBonusReward::class,'exportHandle', $post);
  61. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  62. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  63. }
  64. $page_data = BusinessBonusReward::listPage($condition, false, true);
  65. $page_data['list'] = is_array($page_data['list']) ? $page_data['list'] : [];
  66. $page_data['list'] = BusinessBonusReward::dealRewardList($page_data['list'], $this->mall_id, false);
  67. $page_data['export_list'] = BusinessBonusReward::fieldsList();
  68. $this->success('获取成功', compact('page_data'));
  69. } else {
  70. return $this->render('index');
  71. }
  72. }
  73. }