Column.php 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. <?php
  2. namespace addons\wwh\controller;
  3. use think\Db;
  4. use think\Request;
  5. use addons\wwh\model\Column as ColumnModel;
  6. class Column extends Base
  7. {
  8. public function index()
  9. {
  10. // 初始化并验证参数
  11. $diyname = $this->request->param('diyname/s');
  12. if (empty($diyname)) {
  13. $this->error('参数错误!');
  14. }
  15. // 获取当前栏目信息
  16. $navCur = $this->getCurrentColumn($diyname);
  17. $this->view->assign([
  18. 'navCur' => $navCur,
  19. 'currentId' => $navCur['id'],
  20. 'secondId' => ColumnModel::getSecondId($navCur['id']) // 获取第二级栏目ID
  21. ]);
  22. // 处理跳转链接
  23. if ($navCur['type'] === 'link') {
  24. $this->redirect($navCur['outlink']);
  25. }
  26. // 获取顶级栏目
  27. $topId = ColumnModel::getTopColumn($navCur);
  28. $this->view->assign('top', $topId);
  29. // 确定模板
  30. $template = $this->getTemplate($navCur);
  31. // 加载各模块数据
  32. $this->loadContentList($navCur); // 内容列表
  33. $this->loadDownloadList(); // 资料下载
  34. $this->loadServiceData(); // 服务策略
  35. $this->loadFaqList(); // 常见问题
  36. $this->loadQualityAssurance(); // 质保查询
  37. $this->loadPartnerList(); // 合作伙伴
  38. $this->loadAboutData(); // 公司概况
  39. $this->loadDevelopmentData(); // 发展历程
  40. $this->loadHonorList(); // 荣誉资质
  41. $this->loadJoinUsData(); // 加入我们
  42. $this->loadContactData(); // 联系我们
  43. return $this->view->fetch('/' . $template);
  44. }
  45. /**
  46. * 获取当前栏目信息
  47. */
  48. protected function getCurrentColumn($diyname)
  49. {
  50. $column = Db::name('wwh_column')
  51. ->where('diyname', $diyname)
  52. ->find();
  53. if (!$column) {
  54. $this->error('未知栏目!');
  55. }
  56. return $column;
  57. }
  58. /**
  59. * 获取模板名称
  60. */
  61. protected function getTemplate($navCur)
  62. {
  63. $template = preg_replace('/\.html$/', '', $navCur['listtpl']);
  64. if (!$template) {
  65. $template = preg_replace('/\.html$/', '', $navCur['showtpl']);
  66. }
  67. return $template;
  68. }
  69. /**
  70. * 加载内容列表
  71. */
  72. protected function loadContentList($navCur)
  73. {
  74. $archivesQuery = Db::name('wwh_archives')
  75. ->where('lang', $this->lang)
  76. ->where('status', '1')
  77. ->order('weigh desc');
  78. if ($navCur) {
  79. $archivesQuery->where('type', $navCur['classify'])
  80. ->whereRaw('find_in_set('.$navCur['id'].', `column_ids`)');
  81. }
  82. $list = $archivesQuery->paginate(9, false, ['query' => request()->param()]);
  83. $newList = [];
  84. foreach ($list as $item) {
  85. $item['time'] = strtotime($item['time']);
  86. $newList[] = $item;
  87. }
  88. $this->assign([
  89. 'archives' => $newList,
  90. 'lbPage' => $list->render()
  91. ]);
  92. }
  93. /**
  94. * 加载资料下载列表
  95. */
  96. protected function loadDownloadList()
  97. {
  98. $downkeys = trim(input('downkeys', ''));
  99. $category = trim(input('category', ''));
  100. $query = Db::name('wwh_archives')
  101. ->where('status', '1')
  102. ->where('type', 'download')
  103. ->where('lang', $this->lang)
  104. ->order('weigh desc');
  105. if ($downkeys !== '' || $category !== '') {
  106. if ($downkeys !== '') {
  107. $query->where('title', 'like', '%' . $downkeys . '%');
  108. }
  109. if ($category !== '') {
  110. $query->where('column_id', $category);
  111. }
  112. }
  113. $list = $query->paginate(8, false, ['query' => request()->param()]);
  114. $this->assign([
  115. 'down' => $list,
  116. 'downPage' => $list->render(),
  117. 'downType' => [
  118. 1 => __lang('Manual'),
  119. 2 => __lang('Color Page'),
  120. 3 => __lang('Driver'),
  121. 4 => __lang('Other')
  122. ]
  123. ]);
  124. }
  125. /**
  126. * 加载服务策略数据
  127. */
  128. protected function loadServiceData()
  129. {
  130. $service = Db::name('wwh_service')
  131. ->where('lang', $this->lang)
  132. ->find();
  133. $this->assign('service', $service ?: []);
  134. }
  135. /**
  136. * 加载常见问题列表
  137. */
  138. protected function loadFaqList()
  139. {
  140. $faqkeys = trim(input('faqkeys', ''));
  141. // 构建基础查询
  142. $query = Db::name('wwh_faq')
  143. ->where('status', '1')
  144. ->where('lang', $this->lang);
  145. // 应用搜索条件
  146. if (!empty($faqkeys)) {
  147. $query->where('title', 'like', '%'.$faqkeys.'%');
  148. }
  149. // 获取分页列表
  150. $list = $query->order('weigh desc')
  151. ->paginate(8, false, ['query' => request()->param()]);
  152. // 获取总数
  153. $faqCount = $list->total();
  154. $this->assign([
  155. 'faq' => $list,
  156. 'faqPage' => $list->render(),
  157. 'faqCount' => $faqCount
  158. ]);
  159. }
  160. /**
  161. * 加载质保查询数据
  162. */
  163. protected function loadQualityAssurance()
  164. {
  165. $qakeys = trim(input('get.qakeys', ''));
  166. $isSearchRequest = request()->has('qakeys');
  167. if ($isSearchRequest) {
  168. if (empty($qakeys)) {
  169. $this->error('请输入序列号');
  170. }
  171. $qa = Db::name('wwh_qa')
  172. ->where('sn', $qakeys)
  173. ->where('lang', $this->lang)
  174. ->select();
  175. $this->assign([
  176. 'qa' => $qa,
  177. 'showNoQa' => empty($qa)
  178. ]);
  179. } else {
  180. $this->assign('showNoQa', false);
  181. }
  182. }
  183. /**
  184. * 加载合作伙伴列表
  185. */
  186. protected function loadPartnerList()
  187. {
  188. $list = Db::name('wwh_partner')
  189. ->where('lang', $this->lang)
  190. ->order('weigh desc')
  191. ->paginate('24', false, ['query' => request()->param()]);
  192. $this->assign([
  193. 'partner' => $list,
  194. 'partnerPage' => $list->render()
  195. ]);
  196. }
  197. /**
  198. * 加载公司概况数据
  199. */
  200. protected function loadAboutData()
  201. {
  202. $about = Db::name('wwh_about')
  203. ->where('lang', $this->lang)
  204. ->find();
  205. $this->assign('about', $about ?: []);
  206. }
  207. /**
  208. * 加载发展历程数据
  209. */
  210. protected function loadDevelopmentData()
  211. {
  212. $development = Db::name('wwh_development')
  213. ->where('lang', $this->lang)
  214. ->order('id asc')
  215. ->select();
  216. $this->assign('development', $development ?: []);
  217. }
  218. /**
  219. * 加载荣誉资质列表
  220. */
  221. protected function loadHonorList()
  222. {
  223. $list = Db::name('wwh_honor')
  224. ->where('lang', $this->lang)
  225. ->order('weigh desc')
  226. ->paginate('9', false, ['query' => request()->param()]);
  227. $this->assign([
  228. 'honor' => $list,
  229. 'honorPage' => $list->render(),
  230. 'honorType' => [
  231. 1 => __lang('Qualifications'),
  232. 2 => __lang('Honor'),
  233. 3 => __lang('Other')
  234. ]
  235. ]);
  236. }
  237. /**
  238. * 加载加入我们数据
  239. */
  240. protected function loadJoinUsData()
  241. {
  242. // 部门和地址列表
  243. $deptList = Db::name('wwh_position')
  244. ->where('lang', $this->lang)
  245. ->distinct(true)
  246. ->field('dept')
  247. ->select();
  248. $addrList = Db::name('wwh_position')
  249. ->where('lang', $this->lang)
  250. ->distinct(true)
  251. ->field('addr')
  252. ->select();
  253. $this->assign([
  254. 'deptList' => $deptList ?: [],
  255. 'addrList' => $addrList ?: [],
  256. ]);
  257. // 职位查询
  258. $jonKeywords = trim(input('jonKeywords', ''));
  259. $branch = trim(input('branch', ''));
  260. $address = trim(input('address', ''));
  261. $query = Db::name('wwh_position')
  262. ->where('lang', $this->lang)
  263. ->order('time desc');
  264. if (!empty($jonKeywords) || !empty($branch) || !empty($address)) {
  265. $conditions = [];
  266. if (!empty($jonKeywords)) {
  267. $conditions['name'] = ['like', "%{$jonKeywords}%"];
  268. }
  269. if (!empty($branch)) {
  270. $conditions['dept'] = $branch;
  271. }
  272. if (!empty($address)) {
  273. $conditions['addr'] = $address;
  274. }
  275. $query->where($conditions);
  276. }
  277. $list = $query->paginate(6, false, ['query' => request()->param()]);
  278. $this->assign([
  279. 'join' => $list,
  280. 'joinPage' => $list->render()
  281. ]);
  282. }
  283. /**
  284. * 加载联系我们数据
  285. */
  286. protected function loadContactData()
  287. {
  288. $market = Db::name('wwh_market')
  289. ->where('lang', $this->lang)
  290. ->order('weigh desc')
  291. ->select() ?: [];
  292. $contact = Db::name('wwh_contact')
  293. ->where('lang', $this->lang)
  294. ->find();
  295. $this->assign([
  296. 'contact' => $contact ?: [],
  297. 'market' => $market ?: []
  298. ]);
  299. }
  300. }