Column.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  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. $this->loadCultureData(); // 企业文化
  44. return $this->view->fetch('/' . $template);
  45. }
  46. /**
  47. * 获取当前栏目信息
  48. */
  49. protected function getCurrentColumn($diyname)
  50. {
  51. $column = Db::name('wwh_column')
  52. ->where('diyname', $diyname)
  53. ->find();
  54. if (!$column) {
  55. $this->error('未知栏目!');
  56. }
  57. return $column;
  58. }
  59. /**
  60. * 获取模板名称
  61. */
  62. protected function getTemplate($navCur)
  63. {
  64. $template = preg_replace('/\.html$/', '', $navCur['listtpl']);
  65. if (!$template) {
  66. $template = preg_replace('/\.html$/', '', $navCur['showtpl']);
  67. }
  68. return $template;
  69. }
  70. /**
  71. * 加载内容列表
  72. */
  73. protected function loadContentList($navCur)
  74. {
  75. $archivesQuery = Db::name('wwh_archives')
  76. ->where('lang', $this->lang)
  77. ->where('status', '1')
  78. ->order('weigh desc');
  79. if ($navCur) {
  80. $archivesQuery->where('type', $navCur['classify'])
  81. ->whereRaw('find_in_set('.$navCur['id'].', `column_ids`)');
  82. }
  83. $list = $archivesQuery->paginate(9, false, ['query' => request()->param()]);
  84. $newList = [];
  85. foreach ($list as $item) {
  86. $item['time'] = strtotime($item['time']);
  87. $newList[] = $item;
  88. }
  89. $this->assign([
  90. 'archives' => $newList,
  91. 'lbPage' => $list->render()
  92. ]);
  93. }
  94. /**
  95. * 加载资料下载列表
  96. */
  97. protected function loadDownloadList()
  98. {
  99. $downkeys = trim(input('downkeys', ''));
  100. $category = trim(input('category', ''));
  101. $query = Db::name('wwh_archives')
  102. ->where('status', '1')
  103. ->where('type', 'download')
  104. ->where('lang', $this->lang)
  105. ->order('weigh desc');
  106. if ($downkeys !== '' || $category !== '') {
  107. if ($downkeys !== '') {
  108. $query->where('title', 'like', '%' . $downkeys . '%');
  109. }
  110. if ($category !== '') {
  111. $query->where('column_id', $category);
  112. }
  113. }
  114. $list = $query->paginate(8, false, ['query' => request()->param()]);
  115. $this->assign([
  116. 'down' => $list,
  117. 'downPage' => $list->render(),
  118. 'downType' => [
  119. 1 => __lang('Manual'),
  120. 2 => __lang('Color Page'),
  121. 3 => __lang('Driver'),
  122. 4 => __lang('Other')
  123. ]
  124. ]);
  125. }
  126. /**
  127. * 加载服务策略数据
  128. */
  129. protected function loadServiceData()
  130. {
  131. $service = Db::name('wwh_service')
  132. ->where('lang', $this->lang)
  133. ->find();
  134. $this->assign('service', $service ?: []);
  135. }
  136. /**
  137. * 加载常见问题列表
  138. */
  139. protected function loadFaqList()
  140. {
  141. $faqkeys = trim(input('faqkeys', ''));
  142. // 构建基础查询
  143. $query = Db::name('wwh_faq')
  144. ->where('status', '1')
  145. ->where('lang', $this->lang);
  146. // 应用搜索条件
  147. if (!empty($faqkeys)) {
  148. $query->where('title', 'like', '%'.$faqkeys.'%');
  149. }
  150. // 获取分页列表
  151. $list = $query->order('weigh desc')
  152. ->paginate(8, false, ['query' => request()->param()]);
  153. // 获取总数
  154. $faqCount = $list->total();
  155. $this->assign([
  156. 'faq' => $list,
  157. 'faqPage' => $list->render(),
  158. 'faqCount' => $faqCount
  159. ]);
  160. }
  161. /**
  162. * 加载质保查询数据
  163. */
  164. protected function loadQualityAssurance()
  165. {
  166. $qakeys = trim(input('get.qakeys', ''));
  167. $isSearchRequest = request()->has('qakeys');
  168. if ($isSearchRequest) {
  169. if (empty($qakeys)) {
  170. $this->error('请输入序列号');
  171. }
  172. $qa = Db::name('wwh_qa')
  173. ->where('sn', $qakeys)
  174. ->where('lang', $this->lang)
  175. ->select();
  176. $this->assign([
  177. 'qa' => $qa,
  178. 'showNoQa' => empty($qa)
  179. ]);
  180. } else {
  181. $this->assign('showNoQa', false);
  182. }
  183. }
  184. /**
  185. * 加载合作伙伴列表
  186. */
  187. protected function loadPartnerList()
  188. {
  189. $list = Db::name('wwh_partner')
  190. ->where('lang', $this->lang)
  191. ->order('weigh desc')
  192. ->paginate('24', false, ['query' => request()->param()]);
  193. $this->assign([
  194. 'partner' => $list,
  195. 'partnerPage' => $list->render()
  196. ]);
  197. }
  198. /**
  199. * 加载公司概况数据
  200. */
  201. protected function loadAboutData()
  202. {
  203. $about = Db::name('wwh_about')
  204. ->where('lang', $this->lang)
  205. ->find();
  206. $this->assign('about', $about ?: []);
  207. }
  208. /**
  209. * 加载发展历程数据
  210. */
  211. protected function loadDevelopmentData()
  212. {
  213. $development = Db::name('wwh_development')
  214. ->where('lang', $this->lang)
  215. ->order('id asc')
  216. ->select();
  217. $this->assign('development', $development ?: []);
  218. }
  219. /**
  220. * 加载荣誉资质列表
  221. */
  222. protected function loadHonorList()
  223. {
  224. $list = Db::name('wwh_honor')
  225. ->where('lang', $this->lang)
  226. ->order('weigh desc')
  227. ->paginate('9', false, ['query' => request()->param()]);
  228. $this->assign([
  229. 'honor' => $list,
  230. 'honorPage' => $list->render(),
  231. 'honorType' => [
  232. 1 => __lang('Qualifications'),
  233. 2 => __lang('Honor'),
  234. 3 => __lang('Other')
  235. ]
  236. ]);
  237. }
  238. /**
  239. * 加载加入我们数据
  240. */
  241. protected function loadJoinUsData()
  242. {
  243. // 部门和地址列表
  244. $deptList = Db::name('wwh_position')
  245. ->where('lang', $this->lang)
  246. ->distinct(true)
  247. ->field('dept')
  248. ->select();
  249. $addrList = Db::name('wwh_position')
  250. ->where('lang', $this->lang)
  251. ->distinct(true)
  252. ->field('addr')
  253. ->select();
  254. $this->assign([
  255. 'deptList' => $deptList ?: [],
  256. 'addrList' => $addrList ?: [],
  257. ]);
  258. // 职位查询
  259. $jonKeywords = trim(input('jonKeywords', ''));
  260. $branch = trim(input('branch', ''));
  261. $address = trim(input('address', ''));
  262. $query = Db::name('wwh_position')
  263. ->where('lang', $this->lang)
  264. ->order('time desc');
  265. if (!empty($jonKeywords) || !empty($branch) || !empty($address)) {
  266. $conditions = [];
  267. if (!empty($jonKeywords)) {
  268. $conditions['name'] = ['like', "%{$jonKeywords}%"];
  269. }
  270. if (!empty($branch)) {
  271. $conditions['dept'] = $branch;
  272. }
  273. if (!empty($address)) {
  274. $conditions['addr'] = $address;
  275. }
  276. $query->where($conditions);
  277. }
  278. $list = $query->paginate(6, false, ['query' => request()->param()]);
  279. $this->assign([
  280. 'join' => $list,
  281. 'joinPage' => $list->render()
  282. ]);
  283. }
  284. /**
  285. * 加载联系我们数据
  286. */
  287. protected function loadContactData()
  288. {
  289. $market = Db::name('wwh_market')
  290. ->where('lang', $this->lang)
  291. ->order('weigh desc')
  292. ->select() ?: [];
  293. $contact = Db::name('wwh_contact')
  294. ->where('lang', $this->lang)
  295. ->find();
  296. $this->assign([
  297. 'contact' => $contact ?: [],
  298. 'market' => $market ?: []
  299. ]);
  300. }
  301. /**
  302. * 加载企业文化数据
  303. */
  304. protected function loadCultureData()
  305. {
  306. // 企业文化卡片数据
  307. $cultureCards = Db::name('wwh_culture_card')
  308. ->where('status', '1')
  309. ->where('lang', $this->lang)
  310. ->order('weigh desc')
  311. ->select();
  312. // 处理内容项目JSON
  313. foreach ($cultureCards as &$card) {
  314. if ($card['content_items']) {
  315. $card['content_items'] = json_decode($card['content_items'], true);
  316. }
  317. }
  318. // 企业文化横幅数据
  319. $cultureBanners = Db::name('wwh_culture_banner')
  320. ->where('status', '1')
  321. ->where('lang', $this->lang)
  322. ->order('weigh desc')
  323. ->select();
  324. // 处理内容数据JSON
  325. foreach ($cultureBanners as &$banner) {
  326. if ($banner['content_data']) {
  327. $banner['content_data'] = json_decode($banner['content_data'], true);
  328. }
  329. }
  330. $this->assign([
  331. 'cultureCards' => $cultureCards ?: [],
  332. 'cultureBanners' => $cultureBanners ?: []
  333. ]);
  334. }
  335. }