BonusController.php 17 KB

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