AchieveController.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace addons\Achievement\api\modules\v1\controllers;
  3. use addons\Achievement\common\logic\AchievementLogic;
  4. use addons\Achievement\common\models\AchievementAwardLog;
  5. use addons\Achievement\common\models\AchievementGrantLog;
  6. use common\enums\AddonsEnum;
  7. use common\enums\StatusEnum;
  8. /**
  9. * 默认控制器
  10. *
  11. * Class DefaultController
  12. * @package addons\Achievement\api\modules\v1\controllers
  13. */
  14. class AchieveController extends BaseController
  15. {
  16. public $modelClass = '';
  17. /**
  18. * 不用进行登录验证的方法
  19. *
  20. * 例如: ['index', 'update', 'create', 'view', 'delete']
  21. * 默认全部需要验证
  22. *
  23. * @var array
  24. */
  25. protected $authOptional = ['index'];
  26. public function actionUserInfo()
  27. {
  28. if (!\Yii::$app->request->isGet) {
  29. return $this->error('请求方式错误');
  30. }
  31. $user = $this->user;
  32. $info = [
  33. 'user_id' => $user->id,
  34. 'nickname' => $user->nickname,
  35. 'avatar_url' => $user->avatar_url,
  36. 'mobile' => $user->mobile,
  37. 'settlement_cycle' => '',
  38. 'settlemented_income' => 0,
  39. 'not_settlement_income' => 0,
  40. 'all_income' => 0,
  41. ];
  42. $configs = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_ACHIEVEMENT, 'basic');
  43. // dd($configs);
  44. if (0 == $configs['settlement_cycle']) {
  45. $cycle = '每周一';
  46. } elseif (1 == $configs['settlement_cycle']) {
  47. $cycle = '每月1号';
  48. } elseif (2 == $configs['settlement_cycle']) {
  49. $cycle = '每自然季度';
  50. } else {
  51. $cycle = '';
  52. }
  53. $info['settlement_cycle'] = $cycle . ' ' . $configs['settlement_time'];
  54. $query = AchievementAwardLog::find()
  55. ->where(['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'status' => StatusEnum::ENABLED, 'is_skip_settlement' => 0]);
  56. $query_not = clone $query;
  57. $query_ed = clone $query;
  58. $info['not_settlement_income'] = $query_not->andWhere(['is_settlement' => 0])->asArray()->sum('award_money+equal_money');
  59. $info['settlemented_income'] = $query_ed->andWhere(['is_settlement' => 1])->asArray()->sum('award_money+equal_money');
  60. $info['all_income'] = $query->asArray()->sum('award_money+equal_money');
  61. return $this->success('success', $info);
  62. }
  63. public function actionRewardList()
  64. {
  65. if (!\Yii::$app->request->isGet) {
  66. return $this->error('请求方式错误');
  67. }
  68. $page = \Yii::$app->request->get('page');
  69. $limit = \Yii::$app->request->get('limit');
  70. // 列表类型,0:全部奖励明细,1:已结算;2:未结算
  71. $type = \Yii::$app->request->get('type');
  72. if (!in_array($type, [0, 1, 2])) return $this->error('参数错误');
  73. $wheres[] = ['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'status' => StatusEnum::ENABLED, 'is_skip_settlement' => 0];
  74. if (1 == $type) {
  75. $wheres[] = ['is_settlement' => 1];
  76. } elseif (2 == $type) {
  77. $wheres[] = ['is_settlement' => 0];
  78. }
  79. $params = [
  80. 'select' => 'id,grant_id,mall_id,user_id,award_money,is_settlement,achievement_sum,team_achievement,personal_achievement,award_proportion,award_money,created_at,equal_money',
  81. 'where' => $wheres,
  82. 'order' => 'created_at desc',
  83. 'page' => $page,
  84. 'limit' => $limit,
  85. ];
  86. $list = AchievementAwardLog::listPage($params);
  87. if(!empty($list['list'])){
  88. $grant_ids = array_column($list['list'],'grant_id');
  89. $arr = AchievementGrantLog::lists(['where'=>[['id'=>$grant_ids]],'select'=>'id,settlement_time','index'=>'id']);
  90. foreach ($list['list'] as &$item){
  91. if(!empty($arr[$item['grant_id']])){
  92. $item['created_at'] = $arr[$item['grant_id']]['settlement_time']??'';
  93. }
  94. $item['award_money'] = $item['award_money'] + $item['equal_money'];
  95. }
  96. }
  97. // $list = AchievementAwardLog::getStaticError();
  98. return $this->success('success', $list);
  99. }
  100. }