| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603 |
- <?php
- /**
- * Created by PhpStorm.
- * User: yunzhong
- * Date: 2020/6/10
- * Time: 14:39
- */
- namespace app\platform\modules\user\controllers;
- use app\common\models\UniAccount;
- use app\platform\modules\user\models\OfficialWebsiteContact;
- use app\platform\modules\user\models\OfficialWebsiteMultiple;
- use app\platform\modules\user\models\OfficialWebsiteTheme;
- use Illuminate\Http\Request;
- use app\platform\controllers\BaseController;
- use Yunshop\Article\models\Article;
- use Yunshop\Article\models\Category;
- use Yunshop\HelpCenter\models\HelpCenterAddModel;
- class ThemeSetController extends BaseController
- {
- public function index()
- {
- $set = \Setting::get('official_website.theme_set');
- if (!isset($set['is_open'])) {
- $set['is_open'] = 1;
- $set['is_customize'] = 0;
- $set['customize_url'] = '';
- \Setting::set('official_website.theme_set',$set);
- }
- $data = request()->is_open;
- $is_customize = request()->is_customize;
- $customize_url = request()->customize_url;
- if ($data) {
- $set['is_open'] = $data;
- $set['is_customize'] = $is_customize;
- $set['customize_url'] = $customize_url;
- \Setting::set('official_website.theme_set',$set);
- }
- return $this->successJson('',$set);
- }
- public function createTheme()
- {
- $data = request()->data;
- if (empty($data)) {
- return $this->errorJson("数据为空");
- }
- $validate = $this->validate($this->rules(), $data, $this->message());
- if ($validate) {
- return $validate;
- }
- $official = new OfficialWebsiteTheme();
- $official->title = $data['title'];
- $official->is_default = $data['is_default'];
- if ($data['is_default'] == 1) {
- OfficialWebsiteTheme::where("is_default",1)->update(["is_default"=>0]);
- }
- if ($official->save()) {
- return $this->successJson('成功');
- } else {
- return $this->errorJson('失败');
- }
- }
- public function themeList()
- {
- $list = OfficialWebsiteTheme::orderBy('id','desc')->paginate(10);
- return $this->successJson("",$list);
- }
- public function editTheme()
- {
- $data = request()->data;
- $status = request()->status;
- $id = request()->id;
- if (empty($id) || empty($status)) {
- return $this->errorJson('参数不存在');
- }
- if (empty($data)) {
- $theme = OfficialWebsiteTheme::where("id",$id)->first();
- $theme = empty($theme) ? [] : $theme->toArray();
- //解压数据
- $theme_data = $this->processData($status,$theme);
- $theme_data['identification'] = $theme['identification'];
- $theme_data['uniAccount'] = UniAccount::select("uniacid","name")->get();
- } else {
- //保存
- $rel = $this->saveData($status,$data,$id);
- if ($rel == true) {
- return $this->successJson('成功');
- } else {
- return $this->errorJson('失败');
- }
- }
- return $this->successJson('',$theme_data);
- }
- public function processData($status,$data)
- {
- $result = [];
- if (empty($data)) {
- return $result;
- }
- if ($status == 1) {
- $result = !empty($data['basic']) ? json_decode($data['basic'],true) : [];
- if (isset($result['cus_url'])) {
- $result['cus_url'] = $result['cus_url'];
- }
- } elseif ($status == 2) {
- $result = !empty($data['top']) ? json_decode($data['top'],true) : [];
- if ($result['logo']) {
- $result['logo'] = $result['logo'];
- }
- } elseif ($status == 3) {
- if ($data['tail']) {
- $result['bottom'] = htmlspecialchars_decode($data['tail']);
- }
- }
- return $result;
- }
- public function saveData($status,$data,$id=0)
- {
- if (empty($id)) {
- $official = new OfficialWebsiteTheme();
- } else {
- $official = OfficialWebsiteTheme::where("id",$id)->first();
- }
- if ($status == 1) {
- $data = json_encode($data);
- $official->basic = $data;
- } elseif ($status == 2) {
- $data = json_encode($data);
- $official->top = $data;
- } elseif ($status == 3) {
- $data = htmlspecialchars($data['bottom']);
- $official->tail = $data;
- } elseif ($status == 4) {
- if ($data['is_default'] == 1) {
- OfficialWebsiteTheme::where("id",">",0)->update(["is_default"=>0]);
- }
- $official->is_default = $data['is_default'];
- }
- if ($official->save()) {
- return true;
- } else {
- return false;
- }
- }
- public function dentList()
- {
- $theme = request()->theme_id;
- $theme = empty($theme) ? "" : $theme;
- $all_multiple = OfficialWebsiteMultiple::where("theme_id",$theme)->select("id","theme_id","name","identification")->get();
- $all_multiple = empty($all_multiple) ? [] : $all_multiple->toArray();
- return $this->successJson("",$all_multiple);
- }
- public function multipleList()
- {
- $data = request()->data;
- $theme_id = request()->theme_id;
- $theme_id = empty($theme_id) ? 0 : $theme_id;
- if (empty($theme_id) || !is_numeric($theme_id)) {
- return $this->errorJson("主题ID不能为空且必须为数字");
- }
- $theme_set = OfficialWebsiteTheme::where("id",$theme_id)->first();
- $identification = request()->identification;
- $identification = empty($identification) ? "" : $identification;
- if (!preg_match("/[a-zA-Z0-9_]{1,15}/",$identification)) {
- return $this->errorJson("路径名称只能是字母、数字、下划线且长度不超过15");
- }
- $multiple = [];
- if ($identification) {
- $multiple = OfficialWebsiteMultiple::where("theme_id",$theme_id)->where("identification",$identification)->first();
- $multiple = empty($multiple) ? [] : $multiple->toArray();
- if (isset($multiple['detail'])) {
- $multiple['detail'] = htmlspecialchars_decode($multiple['detail']);
- }
- $all_multiple = OfficialWebsiteMultiple::where("theme_id",$theme_id)->select("id","theme_id","name","identification")->get();
- $all_multiple = empty($all_multiple) ? [] : $all_multiple->toArray();
- $multiple['all_multiple'] = $all_multiple;
- }
- if ($data) {
- $repeat = OfficialWebsiteMultiple::where("identification",$identification)->where("theme_id",$theme_id)->first();
- if ($repeat) {
- $official = $repeat;
- } else {
- $official = new OfficialWebsiteMultiple();
- }
- $data['url'] = "https://".$_SERVER['HTTP_HOST']."/officialwebsite.php?page_name=".$identification;
- $validate = $this->validate($this->rules(), $data, $this->message());
- if ($validate) {
- return $validate;
- }
- $article = "";
- $help = "";
- if ($identification == "resource_page") {
- $basic = empty($theme_set) ? [] : json_decode($theme_set['basic'],true);
- $cus_uniacid = empty($basic['cus_uniacid']) ? 0 : $basic['cus_uniacid'];
- if (app('plugins')->isEnabled('article')) {
- $article = Category::where("uniacid",$cus_uniacid)->with(["hasManyArticle"=>function ($query){
- $query->select("id","category_id","title","desc","thumb","author","created_at","content")->where('state', 1)->where('type', '!=', 1)->orderBy("id","DESC")->offset(0)->limit(15);
- }])->get();
- $article = empty($article) ? "" : json_encode($article->toArray());
- }
- if (app('plugins')->isEnabled('help-center')) {
- $help = HelpCenterAddModel::where("uniacid",$cus_uniacid)->select('title', 'content')->orderBy('sort')->offset(0)->limit(25)->get();
- $help = empty($help) ? "" : json_encode($help->toArray());
- }
- }
- $official->theme_id = $theme_id;
- $official->name = $data['name'];
- $official->identification = $identification;
- $official->mul_title = $data['mul_title'];
- $official->url = $data['url'];
- $official->keyword = $data['keyword'];
- $official->describe = $data['describe'];
- $official->detail = htmlspecialchars($data['detail']);
- $official->article = $article;
- $official->helper = $help;
- if ($official->save()) {
- if ($theme_set['identification'] == "common") {
- if (!file_exists(base_path("/official/".$theme_set['identification']."/" . $identification . ".html"))) {
- $room = '<!DOCTYPE html>
- <html>
- <head lang="en">
- <meta http-equiv="content-Type" content="text/html;charset=UTF-8" />
- <meta http-equiv="Access-Control-Allow-Origin" content="*" />
- <meta name="keywords" content="<?php echo $keywords ?>">
- <meta name="description" content="<?php echo $describe ?>">
- <title><?php echo $title ?></title>
- <link rel="stylesheet" href="official/css/main.css" />
- </head>
- <body>
- <div id="app">
- <div class="nav">
- <div class="nav-a">
- <div class="nav-logo">
- <img src="<?php echo $top["logo"]?>" alt="" />
- </div>
- <?php foreach($top["navigation"] as $kk=>$vv) {?>
- <div class="nav-li <?php if($vv["tool"]==$name){?>nav-selected<?php }?>">
- <a href="<?php echo $vv["url"]?>"><?php echo $vv["name"]?></a>
- </div>
- <?php }?>
- <?php if ($top["is_sign"] == 1) {?>
- <a href="#" id="jump-url">
- <div class="nav-login">立即登录</div>
- </a>
- <?php }?>
- </div>
- </div>
- <?php echo $content;?>
- <?php echo $tail;?>
- <div class="all-relation">
- <div class="relation-btn" id="relation-btn">
- <div class="relation-btn-one" id="callus">
- <img src="official/images/lianxikefu.png" alt="">
- <div>联系客服</div>
- </div>
- <div class="relation-btn-one" id="back-top">
- <img src="official/images/huidaodingbu.png" alt="">
- <div>回到顶部</div>
- </div>
- </div>
- <div class="relation">
- <div class="relation-title">在线咨询</div>
- <a href="<?php echo $basic[\'cus_link\']?>" title="点击咨询">
- <div class="relation-tel">
- <div class="relation-tel-img">
- <img src="official/images/suspension_qq.png" alt="" />
- </div>
- <div class="relation-tel-word">在线客服</div>
- </div>
- </a>
- <div class="relation-tel">
- <div class="relation-tel-img">
- <img src="official/images/suspension_tel.png" alt="" />
- </div>
- <div class="relation-tel-word"><?php echo $basic["cus_mobile"]?></div>
- </div>
- <div class="relation-tel relation-tel1">
- <div class="relation-tel-img">
- <img src="official/images/suspension_wechat.png" alt="" />
- </div>
- <div class="relation-tel-word">微信二维码</div>
- </div>
- <div class="qr-img">
- <div class="qr-img"><img src="<?php echo $basic["cus_url"]?>" alt="" /></div>
- </div>
- <img id="close-btn" style="position: absolute;top:5px;right:5px" src="official/images/adsystem_icon_cancle.png" alt="">
- </div>
- </div>
- </div>
- <script type="text/javascript">
- var url = "";
- window.onload = function () {
-
- url = window.location.protocol + "//" + window.location.host + "/admin.html";
- if(document.getElementById("jump-url")) {
- document.getElementById("jump-url").setAttribute("href", url);
- }
- document.getElementById("callus").onclick = function(e) {
- document.getElementById("relation-btn").style.display="none";
- document.getElementsByClassName("all-relation")[0].classList.add("all-relation-hover")
- }
- document.getElementById("close-btn").onclick = function(e) {
- document.getElementById("relation-btn").style.display="inline-block";
- document.getElementsByClassName("all-relation")[0].classList.remove("all-relation-hover")
- }
-
- var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
- if(scrollTop>0) {
- document.getElementById("back-top").style.display = "block"
- }
- else{
- document.getElementById("back-top").style.display = "none"
- }
-
- document.getElementById("back-top").onclick = function(e) {
- if(document.documentElement.scrollTop) {
- document.documentElement.scrollTop = 0;
- }
- else{
- document.body.scrollTop = 0;
- }
- }
-
- window.onscroll = function() {
- var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
- if(scrollTop>0) {
- document.getElementById("back-top").style.display = "block"
- }
- else{
- document.getElementById("back-top").style.display = "none"
- }
- }
- };
- </script>
- </body>
- </html>';
- file_put_contents(base_path("/official/".$theme_set['identification']."/" . $identification . ".html"), $room);
- }
- } elseif ($theme_set['identification'] == "website") {
- if (!file_exists(base_path("/official/".$theme_set['identification']."/" . $identification . ".html"))) {
- $room = '<!DOCTYPE html>
- <html>
- <head lang="en">
- <meta http-equiv="content-Type" content="text/html;charset=UTF-8" />
- <meta http-equiv="Access-Control-Allow-Origin" content="*" />
- <meta name="keywords" content="<?php echo $keywords ?>">
- <meta name="description" content="<?php echo $describe ?>">
- <title><?php echo $title ?></title>
- <link rel="stylesheet" href="official/website/css/main.css" />
- </head>
- <body>
- <div id="app">
- <div class="nav">
- <div class="nav-a">
- <div class="nav-logo">
- <img src="<?php echo $top["logo"]?>" alt="" />
- </div>
- <?php foreach($top["navigation"] as $kk=>$vv) {?>
- <div class="nav-li <?php if($vv["tool"]==$name){?>nav-selected<?php }?>">
- <a href="<?php echo $vv["url"]?>"><?php echo $vv["name"]?></a>
- </div>
- <?php }?>
- <?php if ($top["is_sign"] == 1) {?>
- <a href="#" id="jump-url">
- <div class="nav-login">立即登录</div>
- </a>
- <?php }?>
- </div>
- </div>
- <?php echo $content;?>
- <?php echo $tail;?>
- <div class="all-relation">
- <div class="relation-btn" id="relation-btn">
- <div class="relation-btn-one" id="callus">
- <img src="official/website/images/lianxikefu.png" alt="" />
- <div>联系客服</div>
- </div>
- <div class="relation-btn-one" id="back-top">
- <img src="official/website/images/huidaodingbu.png" alt="" />
- <div>回到顶部</div>
- </div>
- </div>
- <div class="relation">
- <div class="relation-title">在线咨询</div>
- <a href="<?php echo $basic[\'cus_link\']?>" title="点击咨询">
- <div class="relation-tel">
- <div class="relation-tel-img">
- <img src="official/website/images/suspension_qq.png" alt="" />
- </div>
- <div class="relation-tel-word">在线客服</div>
- </div>
- </a>
- <div class="relation-tel">
- <div class="relation-tel-img">
- <img src="official/website/images/suspension_tel.png" alt="" />
- </div>
- <div class="relation-tel-word"><?php echo $basic[\'cus_mobile\']?></div>
- </div>
- <div class="relation-tel relation-tel1">
- <div class="relation-tel-img">
- <img src="official/website/images/suspension_wechat.png" alt="" />
- </div>
- <div class="relation-tel-word">微信二维码</div>
- </div>
- <div class="qr-img">
- <img src="<?php echo $basic[\'cus_url\']?>" alt="" />
- </div>
- <img id="close-btn" style="position: absolute; top: -15px; right: -25px" src="official/website/images/adsystem_icon_cancle.png" alt=""/>
- </div>
- </div>
- </div>
- <script type="text/javascript">
- var url = "";
- window.onload = function () {
-
- url = window.location.protocol + "//" + window.location.host + "/admin.html";
- if(document.getElementById("jump-url")) {
- document.getElementById("jump-url").setAttribute("href", url);
- }
- document.getElementById("callus").onclick = function(e) {
- document.getElementById("relation-btn").style.display="none";
- document.getElementsByClassName("all-relation")[0].classList.add("all-relation-hover")
- }
- document.getElementById("close-btn").onclick = function(e) {
- document.getElementById("relation-btn").style.display="inline-block";
- document.getElementsByClassName("all-relation")[0].classList.remove("all-relation-hover")
- }
-
- var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
- if(scrollTop>0) {
- document.getElementById("back-top").style.display = "block"
- }
- else{
- document.getElementById("back-top").style.display = "none"
- }
-
- document.getElementById("back-top").onclick = function(e) {
- if(document.documentElement.scrollTop) {
- document.documentElement.scrollTop = 0;
- }
- else{
- document.body.scrollTop = 0;
- }
- }
-
- window.onscroll = function() {
- var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
- if(scrollTop>0) {
- document.getElementById("back-top").style.display = "block"
- }
- else{
- document.getElementById("back-top").style.display = "none"
- }
- }
- };
- </script>
- </body>
- </html>';
- file_put_contents(base_path("/official/".$theme_set['identification']."/" . $identification . ".html"), $room);
- }
- }
- return $this->successJson("成功");
- } else {
- return $this->errorJson("失败");
- }
- }
- return $this->successJson("",$multiple);
- }
- public function contactList()
- {
- $list = OfficialWebsiteContact::orderBy("id","desc")->paginate(10);
- return $this->successJson("",$list);
- }
- /**
- * 处理表单验证
- *
- * @param array $rules
- * @param \Request|null $request
- * @param array $messages
- * @param array $customAttributes
- * @return \Illuminate\Http\JsonResponse
- */
- public function validate($rules, $request = null, $messages = [], $customAttributes = [])
- {
- if (!isset($request)) {
- $request = request();
- }
- $validator = $this->getValidationFactory()->make($request, $rules, $messages, $customAttributes);
- if ($validator->fails()) {
- return $this->errorJson($validator->errors()->all());
- }
- }
- /**
- * 表单验证自定义错误消息
- *
- * @return array
- */
- public function message()
- {
- return [
- 'title.required' => '主题名称不能为空',
- 'name.required' => '页面名称不能为空',
- 'mul_title.required' => '页面标题不能为空',
- 'keyword.required' => '关键字不能为空',
- 'url.required' => '路径不能为空'
- ];
- }
- /**
- * 表单验证规则
- *
- * @param $user
- * @param $data
- * @return array
- */
- public function rules()
- {
- $rules = [];
- if (request()->path() == "admin/user/create_theme") {
- $rules = [
- 'title' => 'required',
- ];
- } elseif (request()->path() == "admin/user/multiple_list") {
- $rules = [
- 'name' => 'required',
- 'mul_title' => 'required',
- 'keyword' => 'required',
- 'url' => 'required'
- ];
- }
- return $rules;
- }
- }
|