| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?php
- namespace addons\ScoreExpansion\backend\controllers;
- use addons\Redpack\common\enums\RedpackEnum;
- use addons\ScoreExpansion\backend\logic\ScoreImportLogic;
- use addons\ScoreExpansion\common\enums\ScoreExpansionEnum;
- use addons\ScoreExpansion\common\models\ScoreExpansionWallet;
- use addons\ScoreExpansion\common\models\ScoreExpansionWalletLog;
- use common\components\CsvExport;
- use common\enums\AddonsEnum;
- use common\enums\StatusEnum;
- use common\models\common\ImportFailLog;
- use common\models\common\ImportLog;
- use common\models\user\User;
- use Yii;
- class ScoreLogController extends BaseController
- {
- public $enableCsrfValidation = false;
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- try {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- // 提交等级内容
- if ($request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['page','user_id','user_name','mobile','date_start','date_end','from_type'], 'safe'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $user_ids = [];
- $user_name_ids = [];
- $is_search = false;
- if(!empty($params['user_id'])) $where[] = ['=','user_id',$params['user_id']];
- if(!empty($params['mobile'])) {
- $user_ids[] = User::find()->select("id")->where(['mall_id' => $this->mall_id,'mobile' => $params['mobile']])->scalar();
- $is_search = true;
- }
- if(!empty($params['user_name'])) {
- $user_where[] = ['like','nickname',$params['user_name'] . '%', false];
- $select = 'id,nickname';
- $user_list = User::lists(['where' =>$user_where,'select' => $select],true);
- $user_name_ids = array_column($user_list,'id');
- $is_search = true;
- }
- if($is_search){
- $all_user_ids = array_merge($user_ids,$user_name_ids);
- if(!$all_user_ids){
- $all_user_ids = [-1];
- }
- $where[] = ['in','user_id',$all_user_ids];
- }
- if(!empty($params['from_type'])) $where[] = ['=','from_type',$params['from_type']];
- if($params['date_start'] && $params['date_end']) $where[] = ['between', 'created_at', strtotime($params['date_start']),strtotime($params['date_end'])];
- $where[] = ['=','mall_id',$this->mall_id];
- $where[] = ['>=','status',StatusEnum::DISABLED];
- $order = 'id desc';
- // $list = ScoreExpansionLog::listPage(['where' => $where,'order' => $order,'with' => ['user']],false);
- $list = ScoreExpansionWalletLog::listPage(['where' => $where,'order' => $order,'with' => ['user']],false);
- // echo '<pre>';print_r($where);die;
- $list['from_type'] = ScoreExpansionEnum::getFromType('', $this->mall_id);
- $list['redpack_type'] = ScoreExpansionEnum::getRedpackText('', $this->mall_id);
- $list['score_name'] = Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_SCORE_EXPANSION, 'basic.score_name') ?? '积分';
- return $this->success('操作成功',$list);
- }
- }
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- return $this->render($this->action->id);
- }
- /**
- * 积分统计
- * @Author: wu
- * @DateTime: 2023/2/21 0015 15:00
- * @Copyright: copyright (c) 2023 广东七件事集团
- * @return string|\yii\web\Response
- */
- public function actionTotal()
- {
- $integral_wallet_type = 'frozen_integral';
- $frozen_integral_add = ScoreExpansionWalletLog::find()->where(['mall_id' => $this->mall_id, 'integral_wallet_type' => $integral_wallet_type, 'change_type' => 'add'])->sum('change_num');
- $frozen_integral_sub = ScoreExpansionWalletLog::find()->where(['mall_id' => $this->mall_id, 'integral_wallet_type' => $integral_wallet_type, 'change_type' => 'sub'])->sum('change_num');
- $total_frozen_integral = ($frozen_integral_add ?? 0) - ($frozen_integral_sub ?? 0);
- $integral_wallet_type = 'integral';
- $integral_add = ScoreExpansionWalletLog::find()->where(['mall_id' => $this->mall_id, 'integral_wallet_type' => $integral_wallet_type, 'change_type' => 'add'])->sum('change_num');
- $integral_sub = ScoreExpansionWalletLog::find()->where(['mall_id' => $this->mall_id, 'integral_wallet_type' => $integral_wallet_type, 'change_type' => 'sub'])->sum('change_num');
- $total_integral = ($integral_add ?? 0) - ($integral_sub ?? 0);
- return $this->success('操作成功', ['total' => ['total_frozen_integral' => $total_frozen_integral, 'total_integral' => $total_integral]]);
- }
- public function actionGetImportLog()
- {
- $params = Yii::$app->request->get();
- $params['where'] = [
- ['mall_id' => $this->mall_id],
- ['source' => ScoreExpansionWallet::class]
- ];
- $params['order'] = 'id desc';
- $data = ImportLog::listPage($params, false, true);
- if (!empty($data['list'])) {
- foreach ($data['list'] as &$v) {
- $v['url'] = '';
- if ($v['fail_counts'])
- $v['url'] = Yii::$app->urlManager->createUrl(['score-expansion/score-log/export-fail', 'import_log_id' => $v['id']]);
- }
- }
- return $this->success('操作成功', $data);
- }
- /**
- * @return string|void
- */
- public function actionImport()
- {
- if (!$this->request->isAjax) {
- return $this->render($this->action->id);
- }
- if (!$this->request->isPost) {
- return;
- }
- set_time_limit(0);
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['current_num'], 'required'],
- [['file'], 'file', 'extensions' => ['csv']],
- [['file_path'], 'string'],
- [['sync'], 'safe'],
- ]);
- if ($res === false) {
- return $this->error(Yii::$app->services->validate->getErrorMessage());
- }
- $params['mall_id'] = $this->mall_id;
- $res = ScoreImportLogic::importSync($params);
- if ($res === false) {
- return $this->error(ScoreImportLogic::getStaticError());
- }
- if (empty($res['fail_counts'])) {
- return $this->success('操作成功', $res);
- }
- if (!empty($res['fail_counts'])) {
- return $this->error('导入失败' . $res['fail_counts'] . '条');
- }
- }
- /**
- * 导出失败日志
- */
- public function actionExportFail()
- {
- $params = Yii::$app->request->get();
- $params['head_list'] = ScoreExpansionEnum::HEAD_LIST;
- ImportFailLog::exportFailLog($params);
- }
- /**
- * 导入的模板
- */
- public function actionImportTemplate()
- {
- $csv = new CsvExport();
- $file_name = '积分批量导入模板-' . date('YmdHis', time());
- return $csv->export([], array_column(ScoreExpansionEnum::HEAD_LIST, 'field_name'), $file_name);
- }
- }
|