Column.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  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. $this->assign([
  84. 'archives' => $list,
  85. 'lbPage' => $list->render()
  86. ]);
  87. }
  88. /**
  89. * 加载资料下载列表
  90. */
  91. protected function loadDownloadList()
  92. {
  93. $downkeys = trim(input('downkeys', ''));
  94. $category = trim(input('category', ''));
  95. $query = Db::name('wwh_archives')
  96. ->where('status', '1')
  97. ->where('type', 'download')
  98. ->where('lang', $this->lang)
  99. ->order('weigh desc');
  100. if ($downkeys !== '' || $category !== '') {
  101. if ($downkeys !== '') {
  102. $query->where('title', 'like', '%' . $downkeys . '%');
  103. }
  104. if ($category !== '') {
  105. $query->where('column_id', $category);
  106. }
  107. }
  108. $list = $query->paginate(8, false, ['query' => request()->param()]);
  109. $this->assign([
  110. 'down' => $list,
  111. 'downPage' => $list->render(),
  112. 'downType' => [
  113. 1 => __lang('Manual'),
  114. 2 => __lang('Color Page'),
  115. 3 => __lang('Driver'),
  116. 4 => __lang('Other')
  117. ]
  118. ]);
  119. }
  120. /**
  121. * 加载服务策略数据
  122. */
  123. protected function loadServiceData()
  124. {
  125. $service = Db::name('wwh_service')
  126. ->where('lang', $this->lang)
  127. ->find();
  128. $this->assign('service', $service ?: []);
  129. }
  130. /**
  131. * 加载常见问题列表
  132. */
  133. protected function loadFaqList()
  134. {
  135. $faqkeys = trim(input('faqkeys', ''));
  136. // 构建基础查询
  137. $query = Db::name('wwh_faq')
  138. ->where('status', '1')
  139. ->where('lang', $this->lang);
  140. // 应用搜索条件
  141. if (!empty($faqkeys)) {
  142. $query->where('title', 'like', '%'.$faqkeys.'%');
  143. }
  144. // 获取分页列表
  145. $list = $query->order('weigh desc')
  146. ->paginate(8, false, ['query' => request()->param()]);
  147. // 获取总数
  148. $faqCount = $list->total();
  149. $this->assign([
  150. 'faq' => $list,
  151. 'faqPage' => $list->render(),
  152. 'faqCount' => $faqCount
  153. ]);
  154. }
  155. /**
  156. * 加载质保查询数据
  157. */
  158. protected function loadQualityAssurance()
  159. {
  160. $qakeys = trim(input('get.qakeys', ''));
  161. $isSearchRequest = request()->has('qakeys');
  162. if ($isSearchRequest) {
  163. if (empty($qakeys)) {
  164. $this->error('请输入序列号');
  165. }
  166. $qa = Db::name('wwh_qa')
  167. ->where('sn', $qakeys)
  168. ->where('lang', $this->lang)
  169. ->select();
  170. $this->assign([
  171. 'qa' => $qa,
  172. 'showNoQa' => empty($qa)
  173. ]);
  174. } else {
  175. $this->assign('showNoQa', false);
  176. }
  177. }
  178. /**
  179. * 加载合作伙伴列表
  180. */
  181. protected function loadPartnerList()
  182. {
  183. $list = Db::name('wwh_partner')
  184. ->where('lang', $this->lang)
  185. ->order('weigh desc')
  186. ->paginate('24', false, ['query' => request()->param()]);
  187. $this->assign([
  188. 'partner' => $list,
  189. 'partnerPage' => $list->render()
  190. ]);
  191. }
  192. /**
  193. * 加载公司概况数据
  194. */
  195. protected function loadAboutData()
  196. {
  197. $about = Db::name('wwh_about')
  198. ->where('lang', $this->lang)
  199. ->find();
  200. $this->assign('about', $about ?: []);
  201. }
  202. /**
  203. * 加载发展历程数据
  204. */
  205. protected function loadDevelopmentData()
  206. {
  207. $development = Db::name('wwh_development')
  208. ->where('lang', $this->lang)
  209. ->order('id asc')
  210. ->select();
  211. $this->assign('development', $development ?: []);
  212. }
  213. /**
  214. * 加载荣誉资质列表
  215. */
  216. protected function loadHonorList()
  217. {
  218. $list = Db::name('wwh_honor')
  219. ->where('lang', $this->lang)
  220. ->order('weigh desc')
  221. ->paginate('9', false, ['query' => request()->param()]);
  222. $this->assign([
  223. 'honor' => $list,
  224. 'honorPage' => $list->render(),
  225. 'honorType' => [
  226. 1 => __lang('Qualifications'),
  227. 2 => __lang('Honor'),
  228. 3 => __lang('Other')
  229. ]
  230. ]);
  231. }
  232. /**
  233. * 加载加入我们数据
  234. */
  235. protected function loadJoinUsData()
  236. {
  237. // 部门和地址列表
  238. $deptList = Db::name('wwh_position')
  239. ->where('lang', $this->lang)
  240. ->distinct(true)
  241. ->field('dept')
  242. ->select();
  243. $addrList = Db::name('wwh_position')
  244. ->where('lang', $this->lang)
  245. ->distinct(true)
  246. ->field('addr')
  247. ->select();
  248. $this->assign([
  249. 'deptList' => $deptList ?: [],
  250. 'addrList' => $addrList ?: [],
  251. ]);
  252. // 职位查询
  253. $jonKeywords = trim(input('jonKeywords', ''));
  254. $branch = trim(input('branch', ''));
  255. $address = trim(input('address', ''));
  256. $query = Db::name('wwh_position')
  257. ->where('lang', $this->lang)
  258. ->order('time desc');
  259. if (!empty($jonKeywords) || !empty($branch) || !empty($address)) {
  260. $conditions = [];
  261. if (!empty($jonKeywords)) {
  262. $conditions['name'] = ['like', "%{$jonKeywords}%"];
  263. }
  264. if (!empty($branch)) {
  265. $conditions['dept'] = $branch;
  266. }
  267. if (!empty($address)) {
  268. $conditions['addr'] = $address;
  269. }
  270. $query->where($conditions);
  271. }
  272. $list = $query->paginate(6, false, ['query' => request()->param()]);
  273. $this->assign([
  274. 'join' => $list,
  275. 'joinPage' => $list->render()
  276. ]);
  277. }
  278. /**
  279. * 加载联系我们数据
  280. */
  281. protected function loadContactData()
  282. {
  283. $market = Db::name('wwh_market')
  284. ->where('lang', $this->lang)
  285. ->order('weigh desc')
  286. ->select() ?: [];
  287. $contact = Db::name('wwh_contact')
  288. ->where('lang', $this->lang)
  289. ->find();
  290. $this->assign([
  291. 'contact' => $contact ?: [],
  292. 'market' => $market ?: []
  293. ]);
  294. }
  295. }