BonusController.php 17 KB

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