BonusController.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: leo
  5. * Date: 2018/3/9
  6. * Time: 上午11:56
  7. */
  8. namespace console\controllers;
  9. use backendApi\modules\v1\models\lists\bonus\BalanceList;
  10. use backendApi\modules\v1\models\lists\bonus\CfLxAuditList;
  11. use backendApi\modules\v1\models\lists\bonus\FlowBalanceList;
  12. use backendApi\modules\v1\models\lists\bonus\FlowBonusList;
  13. use backendApi\modules\v1\models\lists\bonus\FlowCfList;
  14. use backendApi\modules\v1\models\lists\bonus\FlowLxList;
  15. use backendApi\modules\v1\models\lists\bonus\FlowReconsumePointsList;
  16. use backendApi\modules\v1\models\lists\bonus\OtherPeriodBonusList;
  17. use backendApi\modules\v1\models\lists\bonus\PerfMonthList;
  18. use backendApi\modules\v1\models\lists\bonus\PerfOrderList;
  19. use backendApi\modules\v1\models\lists\bonus\PerfPeriodList;
  20. use backendApi\modules\v1\models\lists\bonus\PerfStandardList;
  21. use backendApi\modules\v1\models\lists\bonus\PeriodBonusList;
  22. use backendApi\modules\v1\models\lists\bonus\ResendQyAuditList;
  23. use backendApi\modules\v1\models\lists\bonus\ResendQyList;
  24. use backendApi\modules\v1\models\lists\bonus\ScoreMonthList;
  25. use backendApi\modules\v1\models\lists\bonus\TraceBtList;
  26. use backendApi\modules\v1\models\lists\bonus\TraceDownBdList;
  27. use backendApi\modules\v1\models\lists\bonus\TraceDownFxList;
  28. use backendApi\modules\v1\models\lists\bonus\TraceDownGlList;
  29. use backendApi\modules\v1\models\lists\bonus\TraceDownGxList;
  30. use backendApi\modules\v1\models\lists\bonus\TraceDownQyList;
  31. use backendApi\modules\v1\models\lists\bonus\TraceDownTgList;
  32. use backendApi\modules\v1\models\lists\bonus\TraceDownXfList;
  33. use backendApi\modules\v1\models\lists\bonus\TraceDownYcList;
  34. use backendApi\modules\v1\models\lists\bonus\TraceDownYjList;
  35. use backendApi\modules\v1\models\lists\bonus\TraceFlList;
  36. use backendApi\modules\v1\models\lists\bonus\TraceFwList;
  37. use backendApi\modules\v1\models\lists\bonus\TraceUpBdList;
  38. use backendApi\modules\v1\models\lists\bonus\TraceUpFxList;
  39. use backendApi\modules\v1\models\lists\bonus\TraceUpGlList;
  40. use backendApi\modules\v1\models\lists\bonus\TraceUpGxList;
  41. use backendApi\modules\v1\models\lists\bonus\TraceUpQyList;
  42. use backendApi\modules\v1\models\lists\bonus\TraceUpTgList;
  43. use backendApi\modules\v1\models\lists\bonus\TraceUpXfList;
  44. use backendApi\modules\v1\models\lists\bonus\TraceUpYcList;
  45. use backendApi\modules\v1\models\lists\bonus\TraceUpYjList;
  46. use backendApi\modules\v1\models\lists\bonus\UserPerfList;
  47. use common\helpers\Cache;
  48. use common\helpers\Excel;
  49. use common\helpers\Form;
  50. use common\helpers\http\RemoteUploadApi;
  51. use common\helpers\Log;
  52. use common\libs\export\module\BonusExport;
  53. use common\models\forms\PeriodForm;
  54. use common\models\LogAsync;
  55. use common\models\Withdraw;
  56. use yii\db\Exception;
  57. class BonusController extends BaseController
  58. {
  59. /**
  60. * 生成业绩单并计算业绩
  61. * @param $taskKey
  62. * @throws Exception
  63. * @throws \yii\base\Exception
  64. */
  65. public function actionPerf($taskKey){
  66. $params = Cache::getAsyncParams($taskKey);
  67. $formModel = new PeriodForm();
  68. $handleResult = false;
  69. if($formModel->load($params, '') && $formModel->perfAsync($params['handleUserId'])){
  70. $handleResult = true;
  71. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期生成业绩单更新成功");
  72. } else {
  73. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期生成业绩单更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()), false);
  74. }
  75. if(!$handleResult){
  76. echo "第{$params['periodNum']}期生成业绩单更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors());
  77. // Log::async([
  78. // 'type' => LogAsync::TYPE_BONUS,
  79. // 'route' => \Yii::$app->controller->id.'/'.\Yii::$app->controller->action->id,
  80. // 'title' => "第{$params['periodNum']}期生成业绩单更新失败",
  81. // 'detail' => "第{$params['periodNum']}期生成业绩单更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()),
  82. // 'status' => 0,
  83. // ]);
  84. }
  85. }
  86. /**
  87. * 结算奖金
  88. * @param $taskKey
  89. * @throws Exception
  90. * @throws \yii\base\Exception
  91. */
  92. public function actionCalc($taskKey){
  93. $params = Cache::getAsyncParams($taskKey);
  94. $formModel = new PeriodForm();
  95. $handleResult = false;
  96. if($formModel->load($params, '') && $formModel->calcAsync($params['handleUserId'])){
  97. $handleResult = true;
  98. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期奖金结算更新成功");
  99. } else {
  100. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()), false);
  101. }
  102. if(!$handleResult){
  103. echo "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors());
  104. // Log::async([
  105. // 'type' => LogAsync::TYPE_BONUS,
  106. // 'route' => \Yii::$app->controller->id.'/'.\Yii::$app->controller->action->id,
  107. // 'title' => "第{$params['periodNum']}期奖金结算更新失败",
  108. // 'detail' => "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()),
  109. // 'status' => 0,
  110. // ]);
  111. }
  112. }
  113. /**
  114. * 奖金挂网
  115. * @param $taskKey
  116. * @throws Exception
  117. * @throws \yii\base\Exception
  118. */
  119. public function actionSend($taskKey){
  120. $params = Cache::getAsyncParams($taskKey);
  121. $formModel = new PeriodForm();
  122. $handleResult = false;
  123. if($formModel->load($params, '') && $formModel->sendAsync($params['handleUserId'])){
  124. $handleResult = true;
  125. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期挂网成功");
  126. } else {
  127. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期挂网失败,原因:".Form::formatErrorsForApi($formModel->getErrors()), false);
  128. }
  129. if(!$handleResult){
  130. echo "第{$params['periodNum']}期挂网失败,原因:".Form::formatErrorsForApi($formModel->getErrors());
  131. // Log::async([
  132. // 'type' => LogAsync::TYPE_BONUS,
  133. // 'route' => \Yii::$app->controller->id.'/'.\Yii::$app->controller->action->id,
  134. // 'title' => "第{$params['periodNum']}期挂网失败",
  135. // 'detail' => "第{$params['periodNum']}期挂网失败,原因:".Form::formatErrorsForApi($formModel->getErrors()),
  136. // 'status' => 0,
  137. // ]);
  138. }
  139. }
  140. /**
  141. * 后台手动封期时调用的封期后操作
  142. * @param $taskKey
  143. * @throws Exception
  144. */
  145. public function actionAfterClose($taskKey){
  146. $params = Cache::getAsyncParams($taskKey);
  147. $formModel = new PeriodForm();
  148. $handleResult = false;
  149. if($formModel->afterCloseAsync($params['periodNum'], $params['closedAt'])){
  150. $handleResult = true;
  151. }
  152. if(!$handleResult){
  153. // Log::async([
  154. // 'type' => LogAsync::TYPE_BONUS,
  155. // 'route' => \Yii::$app->controller->id.'/'.\Yii::$app->controller->action->id,
  156. // 'title' => "于{$params['periodNum']}期自动提现上月奖金失败",
  157. // 'detail' => "于{$params['periodNum']}期自动提现上月奖金失败",
  158. // 'status' => 0,
  159. // ]);
  160. }
  161. }
  162. /**
  163. * 奖金余额导出
  164. * @param $taskId
  165. * @return bool
  166. */
  167. public function actionBalanceExport($taskId){
  168. return $this->_export($taskId, BalanceList::class, '会员奖金余额列表');
  169. }
  170. /**
  171. * 车房养老奖和领袖分红年度发放审核导出
  172. * @param $taskId
  173. * @return bool
  174. */
  175. public function actionCfLxAuditExport($taskId){
  176. return $this->_export($taskId, CfLxAuditList::class, '年度奖金发放审核列表');
  177. }
  178. /**
  179. * 最新奖金列表导出
  180. * @param $taskId
  181. * @return bool
  182. */
  183. public function actionNewPeriodBonusExport($taskId){
  184. return $this->_export($taskId, PeriodBonusList::class, '最新奖金列表');
  185. }
  186. /**
  187. * 往期奖金列表导出
  188. * @param $taskId
  189. * @return bool
  190. */
  191. public function actionOtherPeriodBonusExport($taskId){
  192. return $this->_export($taskId, PeriodBonusList::class, '往期奖金列表');
  193. }
  194. /**
  195. * 奖金流水列表导出
  196. * @param $taskId
  197. * @return bool
  198. */
  199. public function actionFlowBonusExport($taskId){
  200. return $this->_export($taskId, FlowBonusList::class, '奖金流水列表');
  201. }
  202. /**
  203. * 余额流水导出
  204. * @param $taskId
  205. * @return bool
  206. */
  207. public function actionFlowBalanceExport($taskId){
  208. return $this->_export($taskId, FlowBalanceList::class, '复消积分流水列表');
  209. }
  210. /**
  211. * 复消积分流水导出
  212. * @param $taskId
  213. * @return bool
  214. */
  215. public function actionFlowRpExport($taskId){
  216. return $this->_export($taskId, FlowReconsumePointsList::class, '复消积分流水列表');
  217. }
  218. /**
  219. * 车房养老奖流水导出
  220. * @param $taskId
  221. * @return bool
  222. */
  223. public function actionFlowCfExport($taskId){
  224. return $this->_export($taskId, FlowCfList::class, '车房养老奖流水列表');
  225. }
  226. /**
  227. * 领袖分红奖导出
  228. * @param $taskId
  229. * @return bool
  230. */
  231. public function actionFlowLxExport($taskId){
  232. return $this->_export($taskId, FlowLxList::class, '领袖分红奖流水列表');
  233. }
  234. /**
  235. * 区域津贴补发列表
  236. * @param $taskId
  237. * @return bool
  238. */
  239. public function actionResendQyListExport($taskId){
  240. return $this->_export($taskId, ResendQyList::class, '区域津贴补发列表');
  241. }
  242. /**
  243. * 补发区域津贴审核列表
  244. * @param $taskId
  245. * @return bool
  246. */
  247. public function actionResendQyAuditListExport($taskId){
  248. return $this->_export($taskId, ResendQyAuditList::class, '补发区域津贴审核列表');
  249. }
  250. /**
  251. * 团队奖向下追溯导出
  252. * @param $taskId
  253. * @return bool
  254. */
  255. public function actionTraceDownQyExport($taskId){
  256. return $this->_export($taskId, TraceDownQyList::class, '团队奖向下追溯导出列表');
  257. }
  258. /**
  259. * 团队奖向上追溯导出
  260. * @param $taskId
  261. * @return bool
  262. */
  263. public function actionTraceUpQyExport($taskId){
  264. return $this->_export($taskId, TraceUpQyList::class, '团队奖向上追溯导出列表');
  265. }
  266. /**
  267. * 荣衔奖向下追溯导出
  268. * @param $taskId
  269. * @return bool
  270. */
  271. public function actionTraceDownYcExport($taskId){
  272. return $this->_export($taskId, TraceDownYcList::class, '荣衔奖向下追溯导出列表');
  273. }
  274. /**
  275. * 荣衔奖向上追溯导出
  276. * @param $taskId
  277. * @return bool
  278. */
  279. public function actionTraceUpYcExport($taskId){
  280. return $this->_export($taskId, TraceUpYcList::class, '荣衔奖向上追溯导出列表');
  281. }
  282. /**
  283. * 服务奖向下追溯导出
  284. * @param $taskId
  285. * @return bool
  286. */
  287. public function actionTraceDownBdExport($taskId){
  288. return $this->_export($taskId, TraceDownYcList::class, '服务奖向下追溯导出列表');
  289. }
  290. /**
  291. * 服务奖向上追溯导出
  292. * @param $taskId
  293. * @return bool
  294. */
  295. public function actionTraceUpBdExport($taskId){
  296. return $this->_export($taskId, TraceUpYcList::class, '服务奖向上追溯导出列表');
  297. }
  298. /**
  299. * 推广奖向下追溯导出
  300. * @param $taskId
  301. * @return bool
  302. */
  303. public function actionTraceDownTgExport($taskId){
  304. return $this->_export($taskId, TraceDownTgList::class, '推广奖向下追溯导出列表');
  305. }
  306. /**
  307. * 推广奖向上追溯导出
  308. * @param $taskId
  309. * @return bool
  310. */
  311. public function actionTraceUpTgExport($taskId){
  312. return $this->_export($taskId, TraceUpTgList::class, '推广奖向上追溯导出列表');
  313. }
  314. /**
  315. * 消费奖向下追溯导出
  316. * @param $taskId
  317. * @return bool
  318. */
  319. public function actionTraceDownXfExport($taskId){
  320. return $this->_export($taskId, TraceDownXfList::class, '消费奖向下追溯导出列表');
  321. }
  322. /**
  323. * 消费奖向上追溯导出
  324. * @param $taskId
  325. * @return bool
  326. */
  327. public function actionTraceUpXfExport($taskId){
  328. return $this->_export($taskId, TraceUpXfList::class, '消费奖向上追溯导出列表');
  329. }
  330. /**
  331. * 业绩奖向下追溯导出
  332. * @param $taskId
  333. * @return bool
  334. */
  335. public function actionTraceDownYjExport($taskId){
  336. return $this->_export($taskId, TraceDownYjList::class, '业绩奖向下追溯导出列表');
  337. }
  338. /**
  339. * 业绩奖向上追溯导出
  340. * @param $taskId
  341. * @return bool
  342. */
  343. public function actionTraceUpYjExport($taskId){
  344. return $this->_export($taskId, TraceUpYjList::class, '业绩奖向上追溯导出列表');
  345. }
  346. /**
  347. * 管理奖向下追溯导出
  348. * @param $taskId
  349. * @return bool
  350. */
  351. public function actionTraceDownGlExport($taskId){
  352. return $this->_export($taskId, TraceDownGlList::class, '管理奖向下追溯导出列表');
  353. }
  354. /**
  355. * 管理奖向上追溯导出
  356. * @param $taskId
  357. * @return bool
  358. */
  359. public function actionTraceUpGlExport($taskId){
  360. return $this->_export($taskId, TraceUpGlList::class, '管理奖向上追溯导出列表');
  361. }
  362. /**
  363. * 共享奖向下追溯导出
  364. * @param $taskId
  365. * @return bool
  366. */
  367. public function actionTraceDownGxExport($taskId){
  368. return $this->_export($taskId, TraceDownGxList::class, '共享奖向下追溯导出列表');
  369. }
  370. /**
  371. * 共享奖向上追溯导出
  372. * @param $taskId
  373. * @return bool
  374. */
  375. public function actionTraceUpBdGxport($taskId){
  376. return $this->_export($taskId, TraceUpGxList::class, '共享奖向上追溯导出列表');
  377. }
  378. /**
  379. * 复销奖向下追溯导出
  380. * @param $taskId
  381. * @return bool
  382. */
  383. public function actionTraceDownFxExport($taskId){
  384. return $this->_export($taskId, TraceDownFxList::class, '复销奖向下追溯导出列表');
  385. }
  386. /**
  387. * 复销奖向上追溯导出
  388. * @param $taskId
  389. * @return bool
  390. */
  391. public function actionTraceUpFxExport($taskId){
  392. return $this->_export($taskId, TraceUpFxList::class, '复销奖向上追溯导出列表');
  393. }
  394. /**
  395. * 报单中心补贴追溯导出
  396. * @param $taskId
  397. * @return bool
  398. */
  399. public function actionTraceBtExport($taskId){
  400. return $this->_export($taskId, TraceBtList::class, '报单中心补贴追溯列表');
  401. }
  402. /**
  403. * 报单中心货补追溯导出
  404. * @param $taskId
  405. * @return bool
  406. */
  407. public function actionTraceFlExport($taskId){
  408. return $this->_export($taskId, TraceFlList::class, '报单中心货补追溯列表');
  409. }
  410. /**
  411. * 区域业绩提成追溯列表导出
  412. * @param $taskId
  413. * @return bool
  414. */
  415. public function actionTraceFwExport($taskId){
  416. return $this->_export($taskId, TraceFwList::class, '区域业绩提成追溯列表');
  417. }
  418. /**
  419. * 业绩单导出
  420. * @param $taskId
  421. * @return bool
  422. */
  423. public function actionPerfOrderExport($taskId){
  424. return $this->_export($taskId, PerfOrderList::class, '业绩单列表');
  425. }
  426. /**
  427. * 月积分导出
  428. * @param $taskId
  429. * @return bool
  430. */
  431. public function actionScoreMonthExport($taskId){
  432. return $this->_export($taskId, ScoreMonthList::class, '月积分列表');
  433. }
  434. /**
  435. * 月业绩导出
  436. * @param $taskId
  437. * @return bool
  438. */
  439. public function actionPerfMonthExport($taskId){
  440. return $this->_export($taskId, PerfMonthList::class, '月业绩列表');
  441. }
  442. /**
  443. * 达标业绩导出
  444. * @param $taskId
  445. * @return bool
  446. */
  447. public function actionPerfStandardExport($taskId){
  448. return $this->_export($taskId, PerfStandardList::class, '达标业绩列表');
  449. }
  450. /**
  451. * 月业绩导出
  452. * @param $taskId
  453. * @return bool
  454. */
  455. public function actionUserPerfExport($taskId){
  456. return $this->_export($taskId, UserPerfList::class, '用户业绩列表');
  457. }
  458. /**
  459. * 期业绩导出
  460. * @param $taskId
  461. * @return bool
  462. */
  463. public function actionPerfPeriodListExport($taskId){
  464. return $this->_export($taskId, PerfPeriodList::class, '期业绩列表');
  465. }
  466. /**
  467. * 导出方法
  468. * @param $taskId
  469. * @param $className
  470. * @param $listName
  471. * @return bool
  472. */
  473. private function _export($taskId, $className, $listName){
  474. $factory = BonusExport::factory($taskId);
  475. $factory->listModelClass = $className;
  476. try {
  477. if ($factory->generate()) {
  478. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($factory->getUserId(), $listName.'导出成功');
  479. }
  480. unset($factory, $taskId, $className, $listName);
  481. return true;
  482. } catch (\Exception $e) {
  483. echo $listName.'导出失败。详情:' . $e->getMessage();
  484. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($factory->getUserId(), $listName.'导出失败。详情:' . $e->getMessage(), false);
  485. }
  486. unset($factory, $taskId, $className, $listName);
  487. return false;
  488. }
  489. }