SiteController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  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\Alarm;
  10. use common\helpers\Cache;
  11. use common\helpers\snowflake\PageSnowFake;
  12. use common\models\Ad;
  13. use common\models\AdLocation;
  14. use common\models\ArticleCategory;
  15. use common\models\Config;
  16. use common\models\DecOrder;
  17. use common\models\DecRole;
  18. use Yii;
  19. use frontendApi\modules\v1\models\User;
  20. use common\helpers\parsedown\Parsedown;
  21. use yii\web\HttpException;
  22. class SiteController extends BaseController
  23. {
  24. public $modelClass = User::class;
  25. /**
  26. * 请求服务器时间差
  27. * @return mixed
  28. * @throws \yii\web\HttpException
  29. */
  30. public function actionDaysDiff(){
  31. return static::notice(['daysDiff'=>Yii::$app->params['daysDiff']]);
  32. }
  33. /**
  34. * 获取广告
  35. * @return mixed
  36. * @throws \yii\web\HttpException
  37. */
  38. public function actionAd(){
  39. $lid = Yii::$app->request->get('lid');
  40. $adLocation = AdLocation::findUseSlaves()->where('ID=:ID', [':ID'=>$lid])->asArray()->one();
  41. $query = Ad::findUseSlaves()->select('ID,IMAGE,LID,TITLE,CONTENT,TYPE')->where('LID=:LID AND STATUS=1', [':LID'=>$lid])->orderBy('SORT ASC')->asArray();
  42. $data = [];
  43. if($adLocation['TYPE'] == AdLocation::TYPE_SLIDE){
  44. $data = $query->all();
  45. } elseif($adLocation['TYPE'] == AdLocation::TYPE_IMAGE) {
  46. $data = $query->one();
  47. }
  48. return static::notice($data);
  49. }
  50. /**
  51. * 请求手机基础信息
  52. * @return array
  53. */
  54. public function actionMobileBaseInfo(){
  55. // 会员级别
  56. $decLevels = Cache::getDecLevelConfig();
  57. // 聘级
  58. $empLevels = Cache::getEmpLevelConfig();
  59. // 时间差
  60. $daysDiff = Yii::$app->params['daysDiff'];
  61. // 钱包
  62. $shopWalletType = Yii::$app->params['shopWalletType'];
  63. return [
  64. 'decLevels' => $decLevels,
  65. 'empLevels' => $empLevels,
  66. 'daysDiff' => $daysDiff,
  67. 'shopWalletType' => $shopWalletType,
  68. ];
  69. }
  70. public function actions()
  71. {
  72. $actions = parent::actions();
  73. $actions['captcha'] = [
  74. 'class' => 'common\helpers\CaptchaAction',
  75. 'width' => 120,
  76. 'height' => 40,
  77. 'padding' => 0,
  78. 'minLength' => 4,
  79. 'maxLength' => 4,
  80. 'offset'=>8, //设置字符偏移量 有效果
  81. 'testLimit'=>1,
  82. ];
  83. return $actions;
  84. }
  85. /**
  86. * 请求页面数据
  87. * @return mixed
  88. * @throws \yii\web\HttpException
  89. */
  90. public function actionPageData() {
  91. $pageId = PageSnowFake::instance()->generateId();
  92. return static::notice(['pageId'=>$pageId]);
  93. }
  94. /**
  95. * 请求基础信息
  96. * @return array
  97. */
  98. public function actionBaseInfo(){
  99. // 会员级别
  100. $decLevels = Cache::getDecLevelConfig();
  101. // 聘级
  102. $empLevels = Cache::getEmpLevelConfig();
  103. // 菜单
  104. $menu = require Yii::getAlias('@frontendApi/config/menu.php');
  105. // 获取全部文章分类
  106. $allArticleCategory = ArticleCategory::getAllCategory();
  107. foreach($allArticleCategory as $category){
  108. $menu['article']['child'][] = ['name'=>$category['CATE_NAME'], 'class'=>'', 'icon'=>'', 'controller'=>'article', 'action'=>'list', 'routePath'=>'article/list/'.$category['ID'], 'show'=>1,];
  109. }
  110. $menu = $this->_childMenu($menu);
  111. // 时间差
  112. $daysDiff = Yii::$app->params['daysDiff'];
  113. // 钱包
  114. $shopWalletType = Yii::$app->params['shopWalletType'];
  115. // 开启海外商品
  116. $overseasShopOpen = Cache::getSystemConfig()['overseasShopOpen']['VALUE'];
  117. return [
  118. 'decLevels' => $decLevels,
  119. 'empLevels' => $empLevels,
  120. 'menu' => $menu,
  121. 'daysDiff' => $daysDiff,
  122. 'shopWalletType' => $shopWalletType,
  123. 'overseasShopOpen' => $overseasShopOpen,
  124. ];
  125. }
  126. private function _childMenu($parentArray){
  127. $menuResult = [];
  128. foreach($parentArray as $key => $parentMenu){
  129. if($key !== 'article'){
  130. // 菜单是否显示
  131. if(isset($parentMenu['show']) && !$parentMenu['show']){
  132. continue;
  133. }
  134. if($this->_teamworkChkMenu($parentMenu)){
  135. continue;
  136. }
  137. if($this->_decChkMenu($parentMenu)){
  138. continue;
  139. }
  140. // 查看是否有该控制器的权限
  141. if(isset($parentMenu['controller']) && $parentMenu['controller']){
  142. if(!Yii::$app->user->validateUserController($parentMenu['controller'])) continue;
  143. }
  144. // 查看是否有权限
  145. if(isset($parentMenu['action']) && $parentMenu['action']){
  146. if(!Yii::$app->user->validateUserAction($parentMenu['controller'], $parentMenu['action'])) continue;
  147. }
  148. // 子菜单同样设置
  149. if(isset($parentMenu['child']) && !empty($parentMenu['child'])){
  150. $parentMenu['child'] = $this->_childMenu($parentMenu['child']);
  151. }
  152. }
  153. $menuResult[] = $parentMenu;
  154. }
  155. return $menuResult;
  156. }
  157. /**
  158. * 虚拟会员hz解决暂写死
  159. * @param $menu
  160. * @return bool
  161. */
  162. private function _teamworkChkMenu($menu){
  163. if (User::getEnCodeInfo(\Yii::$app->user->id)['IS_UNION']==1) {
  164. if(in_array($menu['routePath'],['dashboard/index','user','user/index','finance','finance/index','finance/period','finance/flow-bonus','finance/withdraw'])) return true;
  165. }
  166. return false;
  167. }
  168. /**
  169. * 报单中心显示菜单
  170. * @param $menu
  171. * @return bool
  172. */
  173. private function _decChkMenu($menu) {
  174. if(!isset($menu['allow'])){
  175. return false;
  176. }
  177. if($menu['allow']=='studio'){
  178. $isStudio = User::getEnCodeInfo(\Yii::$app->user->id)['IS_STUDIO'];
  179. if($isStudio==1){
  180. return false;
  181. }
  182. }
  183. if($menu['allow']=='declarer'){
  184. $isDecReg = Cache::getSystemConfig()['isDecReg']['VALUE'];
  185. if(!$isDecReg) return false;
  186. $isDec = User::getEnCodeInfo(\Yii::$app->user->id)['IS_DEC'];
  187. if($isDec==1){
  188. return false;
  189. }
  190. }
  191. if($menu['allow']=='declarer-upgrade'){
  192. $isOpenUpgrade = Cache::getSystemConfig()['isOpenUpgrade']['VALUE'];
  193. $isDec = User::getEnCodeInfo(\Yii::$app->user->id)['IS_DEC'];
  194. if($isDec==1 && $isOpenUpgrade == 1){
  195. return false;
  196. }
  197. }
  198. if($menu['allow']=='transferRecordSwitch'){
  199. $transferRecordSwitch = isset(Cache::getSystemConfig()['transferRecordSwitch']) ? Cache::getSystemConfig()['transferRecordSwitch']['VALUE'] : '';
  200. $isStudio = User::getEnCodeInfo(\Yii::$app->user->id)['IS_STUDIO'];
  201. if ($isStudio == 1) {
  202. return false;
  203. }
  204. if($transferRecordSwitch) {
  205. return false;
  206. }
  207. return true;
  208. }
  209. if($menu['allow']=='transferSwitch'){
  210. $transferSwitch = isset(Cache::getSystemConfig()['transferSwitch']) ? Cache::getSystemConfig()['transferSwitch']['VALUE'] : '';
  211. $isStudio = User::getEnCodeInfo(\Yii::$app->user->id)['IS_STUDIO'];
  212. if ($isStudio == 1) {
  213. return false;
  214. }
  215. if($transferSwitch) {
  216. return false;
  217. }
  218. return true;
  219. }
  220. if($menu['allow']=='pastBonusSwitch'){
  221. $pastBonusSwitch = isset(Cache::getSystemConfig()['pastBonusSwitch'])
  222. ? Cache::getSystemConfig()['pastBonusSwitch']['VALUE']
  223. : '';
  224. if($pastBonusSwitch) return false;
  225. }
  226. if($menu['allow']=='newBonusSwitch'){
  227. // ???
  228. $newBonusSwitch = isset(Cache::getSystemConfig()['newBonusSwitch'])
  229. ? Cache::getSystemConfig()['newBonusSwitch']['VALUE']
  230. : '';
  231. if($newBonusSwitch) return false;
  232. }
  233. return true;
  234. }
  235. public function actionDoc(){
  236. $docCssPath = \Yii::$app->basePath.'/libs/doc/markdown.css';
  237. $treeCssPath = \Yii::$app->basePath.'/libs/doc/tree.css';
  238. $treeJsPath = \Yii::$app->basePath.'/libs/doc/tree.js';
  239. $docfilePath = \Yii::$app->basePath.'/libs/doc/shopApiReadMe.md';
  240. $docCssStyle = file_get_contents($docCssPath);
  241. $docContent = file_get_contents($docfilePath);
  242. $treeCssStyle= file_get_contents($treeCssPath);
  243. $treeJsPath= file_get_contents($treeJsPath);
  244. $parsedown = Parsedown::instance();
  245. $result = '<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8">';
  246. $result .= '<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>';
  247. $result .= "<script>{$treeJsPath}</script>";
  248. $result .= "<style>{$treeCssStyle}</style>";
  249. $result .= "<style>{$docCssStyle}</style></head>";
  250. $result .= '<body><div class="markdown-body">';
  251. $result .= $parsedown->text($docContent);
  252. $result .= '</div></body></html>';
  253. print_r($result);
  254. exit();
  255. }
  256. /**
  257. * 站点设置
  258. * @return mixed
  259. * @throws \yii\web\HttpException
  260. */
  261. public function actionConfig() {
  262. $systemConfig = Cache::getSystemConfig();
  263. if ($systemConfig['siteClose']['VALUE']) {
  264. $siteCloseInfo = $systemConfig['siteCloseInfo']['VALUE'];
  265. return static::notice(['siteClose' => true, 'siteCloseInfo' => $siteCloseInfo]);
  266. }
  267. $siteTitle = $systemConfig['siteTitle']['VALUE'];
  268. return static::notice(['siteClose' => false, 'siteTitle' => $siteTitle]);
  269. }
  270. /**
  271. * 发送钉钉测试信息
  272. * @return mixed
  273. * @throws \yii\web\HttpException
  274. */
  275. public function actionSendNotice()
  276. {
  277. $data = [
  278. 'code' => 400,
  279. 'message' => 'autoSendDingTalk',
  280. ];
  281. return static::notice(['data' => $data['bug监控正常运行,没有发现异常,奥利给!']]);
  282. }
  283. /**
  284. * @throws HttpException
  285. * @throws \Exception
  286. */
  287. public function actionSendNotify()
  288. {
  289. Alarm::reportAlarm([
  290. 'stance' => 1,
  291. 'brand' => 'OTA',
  292. 'message' => '预警信息测试',
  293. ]);
  294. return static::notice('成功', 0);
  295. }
  296. public function actionRandomId()
  297. {
  298. $max = \Yii::$app->request->get('cnt', 10);
  299. $result = [];
  300. for ($i = 1; $i <= $max; $i++) {
  301. $result[] = PageSnowFake::instance()->generateId();
  302. }
  303. return static::notice($result);
  304. }
  305. }