BonusController.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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\PerfOrderList;
  11. use backendApi\modules\v1\models\lists\bonus\PeriodBonusList;
  12. use common\helpers\Cache;
  13. use common\helpers\Form;
  14. use common\libs\export\module\BonusExport;
  15. use common\models\forms\CalcServePeriodForm;
  16. use common\models\forms\PeriodForm;
  17. use yii\db\Exception;
  18. class BonusController extends BaseController
  19. {
  20. // 计算服务部分--------start
  21. /**
  22. * 计算服务---累计用户业绩---根据业务系统的业绩单
  23. */
  24. public function actionCalcServePerf($taskKey){
  25. $params = Cache::getAsyncParams($taskKey);
  26. $formModel = new CalcServePeriodForm();
  27. $handleResult = false;
  28. $periodNum = isset($params['periodNum']) && !empty($params['periodNum']) ? $params['periodNum'] : null;
  29. if($formModel->load($params, '') && $formModel->perfAsync($params['handleUserId'],$periodNum)){
  30. $handleResult = true;
  31. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "累计用户业绩第{$params['periodNum']}期生成业绩单更新成功");
  32. } else {
  33. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "累计用户业绩第{$params['periodNum']}期生成业绩单更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()), false);
  34. }
  35. if(!$handleResult){
  36. echo "计算服务累计业绩,第{$params['periodNum']}期生成业绩单更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors());
  37. }
  38. }
  39. /**
  40. * 计算服务---计算奖金
  41. */
  42. /**
  43. * 结算奖金
  44. * @param $taskKey
  45. * @throws Exception
  46. * @throws \yii\base\Exception
  47. */
  48. public function actionCalcServeCalcBonus($taskKey){
  49. $params = Cache::getAsyncParams($taskKey);
  50. $formModel = new CalcServePeriodForm();
  51. $handleResult = false;
  52. if($formModel->load($params, '') && $formModel->calcAsync($params['handleUserId'])){
  53. $handleResult = true;
  54. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期奖金结算更新成功");
  55. } else {
  56. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()), false);
  57. }
  58. if(!$handleResult){
  59. echo "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors());
  60. }
  61. }
  62. // 计算服务部分---------end
  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. // Log::async([
  82. // 'type' => LogAsync::TYPE_BONUS,
  83. // 'route' => \Yii::$app->controller->id.'/'.\Yii::$app->controller->action->id,
  84. // 'title' => "第{$params['periodNum']}期生成业绩单更新失败",
  85. // 'detail' => "第{$params['periodNum']}期生成业绩单更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()),
  86. // 'status' => 0,
  87. // ]);
  88. }
  89. }
  90. /**
  91. * 结算奖金
  92. * @param $taskKey
  93. * @throws Exception
  94. * @throws \yii\base\Exception
  95. */
  96. public function actionCalc($taskKey){
  97. $params = Cache::getAsyncParams($taskKey);
  98. $formModel = new PeriodForm();
  99. $handleResult = false;
  100. if($formModel->load($params, '') && $formModel->calcAsync($params['handleUserId'])){
  101. $handleResult = true;
  102. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期奖金结算更新成功");
  103. } else {
  104. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()), false);
  105. }
  106. if(!$handleResult){
  107. echo "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors());
  108. // Log::async([
  109. // 'type' => LogAsync::TYPE_BONUS,
  110. // 'route' => \Yii::$app->controller->id.'/'.\Yii::$app->controller->action->id,
  111. // 'title' => "第{$params['periodNum']}期奖金结算更新失败",
  112. // 'detail' => "第{$params['periodNum']}期奖金结算更新失败,原因:".Form::formatErrorsForApi($formModel->getErrors()),
  113. // 'status' => 0,
  114. // ]);
  115. }
  116. }
  117. /**
  118. * 奖金挂网
  119. * @param $taskKey
  120. * @throws Exception
  121. * @throws \yii\base\Exception
  122. */
  123. public function actionSend($taskKey){
  124. $params = Cache::getAsyncParams($taskKey);
  125. $formModel = new PeriodForm();
  126. $handleResult = false;
  127. if($formModel->load($params, '') && $formModel->sendAsync($params['handleUserId'])){
  128. $handleResult = true;
  129. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期挂网成功");
  130. } else {
  131. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期挂网失败,原因:".Form::formatErrorsForApi($formModel->getErrors()), false);
  132. }
  133. if(!$handleResult){
  134. echo "第{$params['periodNum']}期挂网失败,原因:".Form::formatErrorsForApi($formModel->getErrors());
  135. // Log::async([
  136. // 'type' => LogAsync::TYPE_BONUS,
  137. // 'route' => \Yii::$app->controller->id.'/'.\Yii::$app->controller->action->id,
  138. // 'title' => "第{$params['periodNum']}期挂网失败",
  139. // 'detail' => "第{$params['periodNum']}期挂网失败,原因:".Form::formatErrorsForApi($formModel->getErrors()),
  140. // 'status' => 0,
  141. // ]);
  142. }
  143. }
  144. /**
  145. * 奖金余额导出
  146. * @param $taskId
  147. * @return bool
  148. */
  149. public function actionBalanceExport($taskId){
  150. return $this->_export($taskId, BalanceList::class, '会员奖金余额列表');
  151. }
  152. /**
  153. * 最新奖金列表导出
  154. * @param $taskId
  155. * @return bool
  156. */
  157. public function actionNewPeriodBonusExport($taskId){
  158. return $this->_export($taskId, PeriodBonusList::class, '最新奖金列表');
  159. }
  160. /**
  161. * 业绩单导出
  162. * @param $taskId
  163. * @return bool
  164. */
  165. public function actionPerfOrderExport($taskId){
  166. return $this->_export($taskId, PerfOrderList::class, '业绩单列表');
  167. }
  168. /**
  169. * 导出方法
  170. * @param $taskId
  171. * @param $className
  172. * @param $listName
  173. * @return bool
  174. */
  175. private function _export($taskId, $className, $listName){
  176. $factory = BonusExport::factory($taskId);
  177. $factory->listModelClass = $className;
  178. try {
  179. if ($factory->generate()) {
  180. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($factory->getUserId(), $listName.'导出成功');
  181. }
  182. unset($factory, $taskId, $className, $listName);
  183. return true;
  184. } catch (\Exception $e) {
  185. echo $listName.'导出失败。详情:' . $e->getMessage();
  186. \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($factory->getUserId(), $listName.'导出失败。详情:' . $e->getMessage(), false);
  187. }
  188. unset($factory, $taskId, $className, $listName);
  189. return false;
  190. }
  191. }