DashboardController.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: leo
  5. * Date: 2018/2/24
  6. * Time: 下午12:48
  7. */
  8. namespace frontendApi\modules\v1\controllers;
  9. use common\helpers\Cache;
  10. use common\helpers\ChartData;
  11. use common\helpers\Date;
  12. use common\helpers\Email;
  13. use common\helpers\user\Reconsume;
  14. use common\helpers\user\Info;
  15. use common\models\Ad;
  16. use common\models\Article;
  17. use common\models\ArticleCategory;
  18. use common\models\CalcBonus;
  19. use common\models\FlowBonus;
  20. use common\models\Period;
  21. use common\models\ReconsumePool;
  22. use common\models\RemainPv;
  23. use common\models\Order;
  24. use Yii;
  25. class DashboardController extends BaseController
  26. {
  27. public $modelClass = FlowBonus::class;
  28. public function behaviors() {
  29. $behaviors = parent::behaviors();
  30. return $behaviors;
  31. }
  32. /**
  33. * 控制台首页
  34. * @return mixed
  35. * @throws \yii\base\Exception
  36. * @throws \yii\db\Exception
  37. * @throws \yii\web\HttpException
  38. */
  39. public function actionIndex(){
  40. $nowTime = Date::nowTime();
  41. $baseInfo=Info::baseInfoZh(\Yii::$app->user->id);
  42. $news=ArticleCategory::find()->select('ID,CATE_NAME')->orderBy('SORT ASC')->asArray()->all();
  43. $where = ' CID=:CID AND STATUS=1';
  44. $time = time();
  45. foreach ($news as &$value){
  46. $params = [
  47. ':CID'=>$value['ID'],
  48. ];
  49. $value['LISTS']=Article::find()->select('ID,TITLE,CID,CREATED_AT')->where($where,$params)->orderBy('CREATED_AT DESC')->limit(6)->asArray()->all();
  50. }
  51. $empLv = $baseInfo['EMP_LV'];
  52. $empLvName = $baseInfo['EMP_LV_NAME'];
  53. if($baseInfo['SHOW_EMP_LV']){
  54. $empLv = $baseInfo['SHOW_EMP_LV'];
  55. $empLvName = Cache::getEmpLevelConfig()[$baseInfo['SHOW_EMP_LV']]['LEVEL_NAME'];
  56. }
  57. $crownLv = $baseInfo['CROWN_LV'];
  58. $crownLvName = $baseInfo['CROWN_LV_NAME'];
  59. //会员级别
  60. $decLv = $baseInfo['DEC_LV'];
  61. $decLvName = $baseInfo['DEC_LV_NAME'];
  62. //期数显示
  63. $period = Period::instance();
  64. $periodNum = $period->getNowPeriodNum();
  65. //
  66. $curYM = Period::find()->select("CALC_YEAR,CALC_MONTH")->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM'=>$periodNum])->asArray()->one();
  67. $plist=Period::find()->select("PERIOD_NUM")->where('CALC_YEAR=:CALC_YEAR AND CALC_MONTH=:CALC_MONTH', [':CALC_YEAR'=>$curYM['CALC_YEAR'],':CALC_MONTH'=>$curYM['CALC_MONTH']])->orderBy('PERIOD_NUM ASC')->asArray()->all();
  68. $weeks = count($plist);
  69. $wkrd = '';
  70. foreach ($plist as $k=>$v){
  71. if($v['PERIOD_NUM']==$periodNum){
  72. $wkrd =$k+1;break;
  73. }
  74. }
  75. if($wkrd==1){
  76. $wkrd.='st';
  77. }else{
  78. $wkrd.='nd';
  79. }
  80. $monthArray = [
  81. 1 => 'Jan',
  82. 2 => 'Feb',
  83. 3 => 'Mar',
  84. 4 => 'Apr',
  85. 5 => 'May',
  86. 6 => 'Jun',
  87. 7 => 'Jul',
  88. 8 => 'Aug',
  89. 9 => 'Sep',
  90. 10 => 'Oct',
  91. 11 => 'Nov',
  92. 12 => 'Dec',
  93. ];
  94. //剩余分期PV显示
  95. $myRemainPv = RemainPv::findOne(['USER_ID'=>$baseInfo['ID']])->REMAIN_PV ?? 0;
  96. // 找到当月的所有订单,计算总PV及总REMAIN_PV
  97. $myOrders = Order::fetchOrderCurrentMonth($periodNum, $baseInfo['ID']);
  98. $myCurrentOrders = Order::fetchOrderCurrentPeriod($periodNum, $baseInfo['ID']);
  99. $currentPv = $myOrders->SUM('PV');
  100. $currentRemainPv = $myCurrentOrders->SUM('REMAIN_PV');
  101. $totalRemainPv = $myRemainPv + $currentRemainPv;
  102. $remainMonth = $totalRemainPv / 30;
  103. if($currentPv >= 30){ // 如果当月合格,则活跃资格延后一个月
  104. $activeEndStr = date("Y-m", strtotime('next month'));
  105. }else{
  106. $activeEndStr = date("Y-m");
  107. }
  108. $activeEndStr = $activeEndStr. " + $remainMonth months";
  109. $activeEnd = date("Y-m-d H:i:s", strtotime($activeEndStr));
  110. Email::sendRegistrationEmail('kevin@elken.com', 'cit', 'cpass');
  111. return static::notice([
  112. 'nowTime' => $nowTime,
  113. 'empLv'=>$empLv,
  114. 'empLvName'=>$empLvName,
  115. 'crownLv'=>$crownLv,
  116. 'crownLvName'=>$crownLvName,
  117. 'decLv'=>$decLv,
  118. 'decLvName'=>$decLvName,
  119. 'slides'=>Ad::findUseSlaves()->select('ID,IMAGE,LID,TITLE,CONTENT,TYPE')->where('LID=:LID AND STATUS=1', [':LID'=>'7EFF6260A16C3CC7E053693418AC03E4'])->orderBy('SORT ASC')->asArray()->all(),
  120. 'news'=>$news,
  121. // 'periodNum'=>'Period '.$periodNum.' ,'.$curYM['CALC_MONTH'].'月第'.$wkrd.'周,共'.$weeks.'周',
  122. // 'periodNum'=>$periodNum.', '.$wkrd.' PC of '. $monthArray[$curYM['CALC_MONTH']],
  123. 'periodNum'=>$periodNum . ', ' . $wkrd . ' '. Yii::t('app', 'pcOf') . ' '. $monthArray[$curYM['CALC_MONTH']],
  124. 'myRemainPv'=>$totalRemainPv,
  125. 'activeEnd'=>$activeEnd
  126. ]);
  127. }
  128. /**
  129. * 移动端我的页面首页
  130. * @return mixed
  131. * @throws \yii\base\Exception
  132. * @throws \yii\web\HttpException
  133. */
  134. public function actionMyIndex() {
  135. $nowTime = Date::nowTime();
  136. $baseInfo = Info::baseInfoZh(\Yii::$app->user->id);
  137. $empLv = $baseInfo['EMP_LV'];
  138. $empLvName = $baseInfo['EMP_LV_NAME'];
  139. if ($baseInfo['SHOW_EMP_LV']) {
  140. $empLv = $baseInfo['SHOW_EMP_LV'];
  141. $empLvName = Cache::getEmpLevelConfig()[$baseInfo['SHOW_EMP_LV']]['LEVEL_NAME'];
  142. }
  143. return static::notice([
  144. 'nowTime' => $nowTime,
  145. 'reConsumePool' => Reconsume::getUserReconsumePool(\Yii::$app->user->id),
  146. 'empLv' => $empLv,
  147. 'empLvName' => $empLvName,
  148. ]);
  149. }
  150. /**
  151. * 近7期奖金
  152. * @return mixed
  153. * @throws \yii\db\Exception
  154. * @throws \yii\web\HttpException
  155. */
  156. public function actionPeriodBonus(){
  157. return static::notice(CalcBonus::periodBonus(\Yii::$app->user->id));
  158. }
  159. /**
  160. * 奖金量
  161. * @return mixed
  162. * @throws \yii\web\HttpException
  163. */
  164. public function actionBonusNum(){
  165. $chartData = ChartData::instance();
  166. return static::notice($chartData->userBonusData(\Yii::$app->user->id));
  167. }
  168. /**
  169. * 控制台首页
  170. * @return mixed
  171. * @throws \yii\base\Exception
  172. * @throws \yii\db\Exception
  173. * @throws \yii\web\HttpException
  174. */
  175. public function actionBaIndex(){
  176. $nowTime = Date::nowTime();
  177. $news = ArticleCategory::find()->select('ID,CATE_NAME')->orderBy('SORT ASC')->asArray()->all();
  178. $where = ' CID=:CID AND STATUS=1';
  179. foreach ($news as &$value){
  180. $params = [
  181. ':CID'=>$value['ID'],
  182. ];
  183. $value['LISTS'] = Article::find()->select('ID,TITLE,CID,CREATED_AT')->where($where,$params)->orderBy('CREATED_AT DESC')->limit(6)->asArray()->all();
  184. }
  185. //期数显示
  186. $period = Period::instance();
  187. $periodNum = $period->getNowPeriodNum();
  188. //
  189. $curYM = Period::find()->select("CALC_YEAR,CALC_MONTH")->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM'=>$periodNum])->asArray()->one();
  190. $plist = Period::find()->select("PERIOD_NUM")->where('CALC_YEAR=:CALC_YEAR AND CALC_MONTH=:CALC_MONTH', [':CALC_YEAR'=>$curYM['CALC_YEAR'],':CALC_MONTH'=>$curYM['CALC_MONTH']])->orderBy('PERIOD_NUM ASC')->asArray()->all();
  191. $wkrd = '';
  192. foreach ($plist as $k=>$v) {
  193. if($v['PERIOD_NUM'] == $periodNum){
  194. $wkrd = $k + 1;
  195. break;
  196. }
  197. }
  198. if ($wkrd == 1) {
  199. $wkrd .= 'st';
  200. } else {
  201. $wkrd .= 'nd';
  202. }
  203. $monthArray = [
  204. 1 => 'Jan',
  205. 2 => 'Feb',
  206. 3 => 'Mar',
  207. 4 => 'Apr',
  208. 5 => 'May',
  209. 6 => 'Jun',
  210. 7 => 'Jul',
  211. 8 => 'Aug',
  212. 9 => 'Sep',
  213. 10 => 'Oct',
  214. 11 => 'Nov',
  215. 12 => 'Dec',
  216. ];
  217. return static::notice([
  218. 'nowTime' => $nowTime,
  219. 'slides'=> Ad::findUseSlaves()->select('ID,IMAGE,LID,TITLE,CONTENT,TYPE')->where('LID=:LID AND STATUS=1', [':LID'=>'7EFF6260A16C3CC7E053693418AC03E4'])->orderBy('SORT ASC')->asArray()->all(),
  220. 'news'=>$news,
  221. 'periodNum'=>$periodNum . ' ,' . $wkrd . ' PC of '. $monthArray[$curYM['CALC_MONTH']],
  222. ]);
  223. }
  224. }