DefaultController.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. namespace addons\HandBouns\backend\controllers;
  3. use addons\HandBouns\common\listeners\BounsListener;
  4. use addons\HandBouns\common\models\AddonsHandBouns;
  5. use addons\HandBouns\common\models\AddonsHandBounsLog;
  6. use common\components\export\CsvTool;
  7. use common\enums\DownloadEnum;
  8. use common\enums\RabbitMqEnum;
  9. use common\enums\StatusEnum;
  10. use common\helpers\csv\CsvExportHelper;
  11. use common\helpers\LockHelper;
  12. use Yii;
  13. use yii\db\Exception;
  14. use common\controllers\AddonsController;
  15. /**
  16. * 默认控制器
  17. *
  18. * Class DefaultController
  19. * @package addons\HandBouns\backend\controllers
  20. */
  21. class DefaultController extends BaseController
  22. {
  23. public $enableCsrfValidation = false;
  24. /**
  25. * 首页
  26. *
  27. * @return string
  28. */
  29. public function actionIndex()
  30. {
  31. if (\Yii::$app->request->isAjax) {
  32. if (\Yii::$app->request->isPost) {
  33. $params = Yii::$app->request->post();
  34. $rules = [
  35. [['bouns_file'], 'required'],
  36. [['bouns_file'], 'string'],
  37. ];
  38. $res = Yii::$app->services->validate->validate($params, $rules);
  39. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  40. try {
  41. // 查询当前用户上一个文件状态是否改变
  42. $hand_bonus = AddonsHandBouns::find()->where(['mall_id' => $this->mall_id])->orderBy('id desc')->one();
  43. if ($hand_bonus && $hand_bonus->export_status == 0) {
  44. return $this->error('上次提交文件还未完全导入,请稍后在试');
  45. }
  46. $params['operator_id'] = $this->admin->id;
  47. $params['operator_name'] = $this->admin->account;
  48. $params['mall_id'] = $this->mall_id;
  49. $model = AddonsHandBouns::setData($params);
  50. if ($model == false) throw new Exception(AddonsHandBouns::getStaticError());
  51. // 提交到异步处理
  52. Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, ['id' => $model->id], BounsListener::class, 'async_handle');
  53. $this->success('提交成功,正在处理异步处理');
  54. } catch (Exception $e) {
  55. $this->error('提交失败:' . $e->getMessage());
  56. }
  57. }else{
  58. $params = Yii::$app->request->get();
  59. $rules = [
  60. [['export_status'], 'integer'],
  61. [['start_time','end_time','operator_name'], 'string'],
  62. ];
  63. $res = Yii::$app->services->validate->validate($params, $rules);
  64. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  65. // 条件组合
  66. $where = [['mall_id' => $this->mall_id]];
  67. $where[] = ['=', 'status', StatusEnum::ENABLED];
  68. isset($params['start_time']) && isset($params['end_time']) && $where[] = ['between', 'created_at', strtotime($params['start_time']), strtotime($params['end_time'])];
  69. isset($params['operator_name']) && $where[] = ['=', 'operator_name', $params['operator_name']];
  70. isset($params['export_status']) && $where[] = ['=', 'export_status', $params['export_status']];
  71. $order = "id desc";
  72. $list_params = compact('where', 'order');
  73. $list = AddonsHandBouns::listPage($list_params, false, true);
  74. if ($list === false) return $this->error(AddonsHandBouns::getStaticError());
  75. $is_allow_minus = Yii::$app->services->setting->mall->get($this->mall_id, 'hand_bonus.is_allow_minus');
  76. if (!$is_allow_minus) $is_allow_minus = false;
  77. return $this->success('操作成功', compact('list', 'is_allow_minus'));
  78. }
  79. }
  80. return $this->render($this->action->id);
  81. }
  82. public function actionExportError(){
  83. if (\Yii::$app->request->isPost) {
  84. $params = Yii::$app->request->post();
  85. // 失败订单导出
  86. if(\Yii::$app->request->post('flag') == 'EXPORT'){
  87. $rules = [[['export_id'], 'required'], [['export_id'], 'integer']];
  88. $res = Yii::$app->services->validate->validate($params, $rules);
  89. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  90. $download['mall_id'] = $this->mall_id;
  91. $download['hand_bouns_id'] = $params['export_id'];
  92. $download['style'] = 2;
  93. $filename = '手动分红失败记录-' . date('YmdHis').'_'.rand(10000,99999);
  94. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id,$filename,DownloadEnum::TYPE_HAND_BOUNS,AddonsHandBounsLog::class,'exportHandle',$download);
  95. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  96. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  97. }
  98. }else{
  99. $params = Yii::$app->request->get();
  100. $rules = [
  101. [['export_id'], 'integer'],
  102. ];
  103. $res = Yii::$app->services->validate->validate($params, $rules);
  104. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  105. // 条件组合
  106. $where = [['mall_id' => $this->mall_id]];
  107. $where[] = ['=', 'status', StatusEnum::ENABLED];
  108. $where[] = ['=', 'export_status', 2];
  109. $where[] = ['=','hand_bouns_id',$params['export_id']];
  110. $order = "id desc";
  111. $list_params = compact('where', 'order');
  112. $list = AddonsHandBounsLog::listPage($list_params, false, true);
  113. if ($list === false) return $this->error(AddonsHandBounsLog::getStaticError());
  114. return $this->success('操作成功', $list);
  115. }
  116. }
  117. public function actionExportSuccess(){
  118. if (\Yii::$app->request->isPost) {
  119. $params = Yii::$app->request->post();
  120. // 失败订单导出
  121. if(\Yii::$app->request->post('flag') == 'EXPORT'){
  122. $rules = [[['export_id'], 'required'], [['export_id'], 'integer']];
  123. $res = Yii::$app->services->validate->validate($params, $rules);
  124. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  125. $download['mall_id'] = $this->mall_id;
  126. $download['hand_bouns_id'] = $params['export_id'];
  127. $download['style'] = 1;
  128. $filename = '手动分红成功记录-' . date('YmdHis').'_'.rand(10000,99999);
  129. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id,$filename,DownloadEnum::TYPE_HAND_BOUNS,AddonsHandBounsLog::class,'exportHandle',$download);
  130. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  131. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  132. }
  133. }else{
  134. $params = Yii::$app->request->get();
  135. $rules = [
  136. [['export_id'], 'integer'],
  137. ];
  138. $res = Yii::$app->services->validate->validate($params, $rules);
  139. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  140. // 条件组合
  141. $where = [['mall_id' => $this->mall_id]];
  142. $where[] = ['=', 'status', StatusEnum::ENABLED];
  143. $where[] = ['=', 'export_status', 1];
  144. $where[] = ['=','hand_bouns_id',$params['export_id']];
  145. $order = "id desc";
  146. $list_params = compact('where', 'order');
  147. $list = AddonsHandBounsLog::listPage($list_params, false, true);
  148. if ($list === false) return $this->error(AddonsHandBounsLog::getStaticError());
  149. return $this->success('操作成功', $list);
  150. }
  151. }
  152. /**
  153. * @Author: ltm
  154. * @DateTime: 2022/3/7 0007 11:42
  155. * @Copyright: copyright (c) 2021 广东七件事集团
  156. * @param $data
  157. * @return string
  158. */
  159. public function actionDownloadHandBounsTemplate()
  160. {
  161. $csv = new CsvTool();
  162. $csv->filename = '手动分红模板';
  163. $csv->file_dirname = DownloadEnum::getTypeStorageDirMap(DownloadEnum::TYPE_HAND_BOUNS);
  164. $csv->export_mode = CsvTool::EXPORT_MODE_SYNC;
  165. $csv->header = ['会员ID', '手机号码', '余额','佣金','积分', '备注'];
  166. $csv->export(true);
  167. }
  168. /**
  169. * 手动分红导入负数开关
  170. * @return mixed|null
  171. */
  172. public function actionAllowMinus()
  173. {
  174. $is_allow_minus = Yii::$app->request->post('is_allow_minus', false);
  175. $data['hand_bonus']['is_allow_minus']= $is_allow_minus;
  176. $res = Yii::$app->services->setting->mall->set($this->mall_id, $data);
  177. if ($res === false) return $this->error(Yii::$app->services->setting->mall->getError());
  178. return $this->success("更改成功");
  179. }
  180. }