SettingController.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\Setting;
  4. use Illuminate\Http\Request;
  5. class SettingController extends AdminController
  6. {
  7. /*站点设置*/
  8. public function website(Request $request)
  9. {
  10. $validateRules = [
  11. 'website_name' => 'required|max:128',
  12. 'website_slogan' => 'sometimes|max:128',
  13. 'website_welcome' => 'sometimes|max:256',
  14. 'website_url' => 'required|url',
  15. 'website_icp' => 'sometimes|max:128',
  16. 'website_cache_time' => 'sometimes|digits_between:0,8640',
  17. 'website_admin_email' => 'required|email',
  18. ];
  19. $themes = [];
  20. /*获取模板主题目录下主题列表*/
  21. $themePath = base_path()."/resources/views/themes";
  22. if ($dh = opendir($themePath)) {
  23. while (($file = readdir($dh)) !== false) {
  24. if( is_dir($themePath.'/'.$file) && $file{0} !== '.' ){
  25. $themes[] = $file;
  26. }
  27. }
  28. closedir($dh);
  29. }
  30. if($request->isMethod('post')){
  31. $this->validate($request,$validateRules);
  32. $data = $request->except('_token');
  33. foreach($data as $name=>$value){
  34. Setting()->set($name,$value);
  35. }
  36. $envParams['APP_URL'] = $request->input('website_url','');
  37. $envParams['WEBSITE_THEME'] = $request->input('website_theme','default');
  38. $envParams['WEBSITE_SKIN'] = $request->input('website_skin','default');
  39. $envParams['WEBSITE_ADMIN_EMAIL'] = $request->input('website_admin_email','');
  40. Setting()->setEnvParams($envParams);
  41. return $this->success(route('admin.setting.website'),'站点设置保存成功');
  42. }
  43. return view('admin.setting.website')->with('themes',$themes);
  44. }
  45. /*邮件配置*/
  46. public function email(Request $request)
  47. {
  48. if($request->isMethod('post')){
  49. $data = $request->except('_token');
  50. unset($data['_token']);
  51. $envParams = [];
  52. foreach($data as $name=>$value){
  53. $envParams[strtoupper($name)] = $value;
  54. Setting()->set($name,$value);
  55. }
  56. Setting()->setEnvParams($envParams);
  57. return $this->success(route('admin.setting.email'),'邮箱配置保存成功');
  58. }
  59. return view('admin.setting.email');
  60. }
  61. /*时间格式设置*/
  62. public function time(Request $request)
  63. {
  64. $timeOffsets = [
  65. '-12' => '(标准时-12:00) 日界线西',
  66. '-11' => '(标准时-11:00) 中途岛、萨摩亚群岛',
  67. '-10' => '(标准时-10:00) 夏威夷',
  68. '-9' => '(标准时-9:00) 阿拉斯加',
  69. '-8' => '(标准时-8:00) 太平洋时间(美国和加拿大)',
  70. '-7' => '(标准时-7:00) 山地时间(美国和加拿大)',
  71. '-6' => '(标准时-6:00) 中部时间(美国和加拿大)、墨西哥城',
  72. '-5' => '(标准时-5:00) 东部时间(美国和加拿大)、波哥大',
  73. '-4' => '(标准时-4:00) 大西洋时间(加拿大)、加拉加斯',
  74. '-3.5' => '(标准时-3:30) 纽芬兰',
  75. '-3' => '(标准时-3:00) 巴西、布宜诺斯艾利斯、乔治敦',
  76. '-2' => '(标准时-2:00) 中大西洋',
  77. '-1' => '(标准时-1:00) 亚速尔群岛、佛得角群岛',
  78. '0' => '(格林尼治标准时) 西欧时间、伦敦、卡萨布兰卡',
  79. '1' => '(标准时+1:00) 中欧时间、安哥拉、利比亚',
  80. '2' => '(标准时+2:00) 东欧时间、开罗,雅典',
  81. '3' => '(标准时+3:00) 巴格达、科威特、莫斯科',
  82. '3.5' => '(标准时+3:30) 德黑兰',
  83. '4' => '(标准时+4:00) 阿布扎比、马斯喀特、巴库',
  84. '4.5' => '(标准时+4:30) 喀布尔',
  85. '5' => '(标准时+5:00) 叶卡捷琳堡、伊斯兰堡、卡拉奇',
  86. '5.5' => '(标准时+5:30) 孟买、加尔各答、新德里',
  87. '6' => '(标准时+6:00) 阿拉木图、 达卡、新亚伯利亚',
  88. '7' => '(标准时+7:00) 曼谷、河内、雅加达',
  89. '8' => '(标准时+8:00)北京、重庆、香港、新加坡',
  90. '9' => '(标准时+9:00) 东京、汉城、大阪、雅库茨克',
  91. '9.5' => '(标准时+9:30) 阿德莱德、达尔文',
  92. '10' => '(标准时+10:00) 悉尼、关岛',
  93. '11' => '(标准时+11:00) 马加丹、索罗门群岛',
  94. '12' => '(标准时+12:00) 奥克兰、惠灵顿、堪察加半岛'
  95. ];
  96. $validateRules = [
  97. 'time_diff' => 'integer',
  98. ];
  99. if($request->isMethod('post'))
  100. {
  101. $this->validate($request,$validateRules);
  102. $data = $request->except('_token');
  103. foreach($data as $name=>$value){
  104. Setting()->set($name,$value);
  105. }
  106. return $this->success(route('admin.setting.time'),'时间设置成功');
  107. }
  108. return view('admin.setting.time')->with('timeOffsets',$timeOffsets);
  109. }
  110. /*防灌水设置*/
  111. public function irrigation(Request $request)
  112. {
  113. if($request->isMethod('post')){
  114. $data = $request->except('_token');
  115. $data['code_login'] = $request->input('code_login',0);
  116. $data['code_register'] = $request->input('code_register',0);
  117. $data['code_create_question'] = $request->input('code_create_question',0);
  118. $data['code_create_article'] = $request->input('code_create_article',0);
  119. $data['code_create_answer'] = $request->input('code_create_answer',0);
  120. foreach($data as $name => $value ){
  121. Setting()->set($name,$value);
  122. }
  123. return $this->success(route('admin.setting.irrigation'),'防灌水策略设置成功');
  124. }
  125. return view('admin.setting.irrigation');
  126. }
  127. /*注册策略设置*/
  128. public function register(Request $request)
  129. {
  130. $validateRules = [];
  131. if($request->isMethod('post')){
  132. $this->validate($request,$validateRules);
  133. $data = $request->except('_token');
  134. foreach($data as $name=>$value){
  135. Setting()->set($name,$value);
  136. }
  137. return $this->success(route('admin.setting.register'),'注册设置成功');
  138. }
  139. return view('admin.setting.register');
  140. }
  141. /*积分策略设置*/
  142. public function credits(Request $request)
  143. {
  144. $validateRules = [
  145. 'credits_register' => 'required|integer',
  146. 'coins_register' => 'required|integer',
  147. 'credits_login' => 'required|integer',
  148. 'coins_login' => 'required|integer',
  149. 'credits_sign' => 'required|integer',
  150. 'coins_sign' => 'required|integer',
  151. 'credits_ask' => 'required|integer',
  152. 'coins_ask' => 'required|integer',
  153. 'credits_answer' => 'required|integer',
  154. 'coins_answer' => 'required|integer',
  155. 'credits_adopted' => 'required|integer',
  156. 'coins_adopted' => 'required|integer',
  157. ];
  158. if($request->isMethod('post')){
  159. $this->validate($request,$validateRules);
  160. $data = $request->except('_token');
  161. unset($data['_token']);
  162. foreach($data as $name=>$value){
  163. Setting()->set($name,$value);
  164. }
  165. return $this->success(route('admin.setting.credits'),'积分策略设置成功');
  166. }
  167. return view('admin.setting.credits');
  168. }
  169. public function seo(Request $request)
  170. {
  171. if($request->isMethod('post')){
  172. $data = $request->except('_token');
  173. unset($data['_token']);
  174. foreach($data as $name=>$value){
  175. Setting()->set($name,$value);
  176. }
  177. return $this->success(route('admin.setting.seo'),'seo策略设置成功');
  178. }
  179. return view('admin.setting.seo');
  180. }
  181. /*变量设置*/
  182. public function variables(Request $request){
  183. return view('admin.setting.variables');
  184. }
  185. public function attach(Request $request){
  186. if($request->isMethod('post')){
  187. $validateRules = [
  188. 'attach_image_size' => 'required|integer',
  189. 'attach_file_size' => 'required|integer',
  190. ];
  191. $request->flash();
  192. $this->validate($request,$validateRules);
  193. $imageSize = $request->input('attach_image_size');
  194. $attachSize = $request->input('attach_file_size');
  195. $openWaterMark = $request->input('attach_open_watermark',0);
  196. $envParams['UPLOAD_IMAGE_SIZE'] = $imageSize;
  197. $envParams['UPLOAD_ATTACH_SIZE'] = $attachSize;
  198. $envParams['UPLOAD_OPEN_WATERMARK'] = $openWaterMark;
  199. if($request->hasFile('attach_watermark_image')){
  200. $savePath = storage_path('app/watermarks');
  201. $file = $request->file('attach_watermark_image');
  202. $fileName = uniqid(str_random(8)).'.'.$file->getClientOriginalExtension();
  203. $target = $file->move($savePath,$fileName);
  204. if($target){
  205. $envParams['UPLOAD_WATERMARK_IMAGE'] = 'watermarks-'.$fileName;
  206. }
  207. }
  208. Setting()->setEnvParams($envParams);
  209. return $this->success(route('admin.setting.attach'),'设置成功');
  210. }
  211. return view('admin.setting.attach');
  212. }
  213. /*xunsearch整合*/
  214. public function xunSearch(Request $request)
  215. {
  216. if($request->isMethod('post')){
  217. $data = $request->except('_token');
  218. foreach($data as $name=>$value){
  219. Setting()->set($name,$value);
  220. }
  221. $envParams['XUNSEARCH_INDEX'] = $data['xunsearch_index'];
  222. $envParams['XUNSEARCH_SEARCH'] = $data['xunsearch_search'];
  223. Setting()->setEnvParams($envParams);
  224. return $this->success(route('admin.setting.xunSearch'),'xunSearch设置成功');
  225. }
  226. return view('admin.setting.xunSearch');
  227. }
  228. public function oauth(Request $request)
  229. {
  230. if($request->isMethod('post')){
  231. /*总开关*/
  232. $envParams['OAUTH_OPEN'] = $request->input('oauth_open',0);
  233. /*qq登陆参数*/
  234. $envParams['OAUTH_QQ_OPEN'] = $request->input('oauth_qq_open',0);
  235. $envParams['OAUTH_QQ_KEY'] = $request->input('oauth_qq_key','');
  236. $envParams['OAUTH_QQ_SECRET'] = $request->input('oauth_qq_secret','');
  237. $envParams['OAUTH_QQ_REDIRECT'] = $request->input('oauth_qq_redirect','');
  238. /*微博登陆参数*/
  239. $envParams['OAUTH_WEIBO_OPEN'] = $request->input('oauth_weibo_open',0);
  240. $envParams['OAUTH_WEIBO_KEY'] = $request->input('oauth_weibo_key','');
  241. $envParams['OAUTH_WEIBO_SECRET'] = $request->input('oauth_weibo_secret','');
  242. $envParams['OAUTH_WEIBO_REDIRECT'] = $request->input('oauth_weibo_redirect','');
  243. /*微信扫描登陆*/
  244. $envParams['OAUTH_WEIXINWEB_OPEN'] = $request->input('oauth_weixinweb_open',0);
  245. $envParams['OAUTH_WEIXINWEB_KEY'] = $request->input('oauth_weixinweb_key','');
  246. $envParams['OAUTH_WEIXINWEB_SECRET'] = $request->input('oauth_weixinweb_secret','');
  247. $envParams['OAUTH_WEIXINWEB_REDIRECT'] = $request->input('oauth_weixinweb_redirect','');
  248. /*微信公众号内登陆*/
  249. $envParams['OAUTH_WEIXIN_OPEN'] = $request->input('oauth_weixin_open',0);
  250. $envParams['OAUTH_WEIXIN_KEY'] = $request->input('oauth_weixin_key','');
  251. $envParams['OAUTH_WEIXIN_SECRET'] = $request->input('oauth_weixin_secret','');
  252. $envParams['OAUTH_WEIXIN_REDIRECT'] = $request->input('oauth_weixin_redirect','');
  253. Setting()->setEnvParams($envParams);
  254. return $this->success(route('admin.setting.oauth'),'一键登录设置成功');
  255. }
  256. return view('admin.setting.oauth');
  257. }
  258. public function sms($type='sms', Request $request){
  259. if($request->isMethod('post')){
  260. if($type == 'sms'){//短信参数配置
  261. $envParams['SMS_OPEN'] = $request->input('sms_open',0);
  262. $envParams['SMS_SIGN_NAME'] = $request->input('sms_sign_name','');
  263. $envParams['SMS_KEY_ID'] = $request->input('sms_key_id','');
  264. $envParams['SMS_KEY_SECRET'] = $request->input('sms_key_secret','');
  265. Setting()->setEnvParams($envParams);
  266. }else if($type == 'template'){ //消息模板配置
  267. $messageTemplates = $request->except(['_token']);
  268. foreach ($messageTemplates as $key => $value){
  269. if(str_contains($key,'_template')){
  270. Setting()->set($key, $value);
  271. }
  272. }
  273. }
  274. return $this->success(route('admin.setting.sms'),'配置保存成功');
  275. }
  276. return view('admin.setting.sms');
  277. }
  278. public function geetest(Request $request){
  279. if($request->isMethod('post')){
  280. $envParams['GEETEST_OPEN'] = $request->input('geetest_open',false);
  281. $envParams['GEETEST_ID'] = $request->input('geetest_id','');
  282. $envParams['GEETEST_KEY'] = $request->input('geetest_key','');
  283. Setting()->setEnvParams($envParams);
  284. return $this->success(route('admin.setting.geetest'),'配置保存成功');
  285. }
  286. return view('admin.setting.geetest');
  287. }
  288. /*系统功能自定义*/
  289. public function custom(Request $request){
  290. if($request->isMethod('post')){
  291. $data = $request->except('_token');
  292. foreach($data as $name => $value){
  293. Setting()->set($name,$value);
  294. }
  295. return $this->success(route('admin.setting.custom'),'配置保存成功');
  296. }
  297. return view('admin.setting.custom');
  298. }
  299. /*微信小程序配置*/
  300. public function weChatApp(Request $request){
  301. if($request->isMethod('post')){
  302. $data = $request->except(['_token','weapp_arcode_image']);
  303. foreach($data as $name => $value){
  304. Setting()->set($name,$value);
  305. }
  306. $envParams['WEAPP_OPEN'] = $request->input('weapp_open',0);
  307. $envParams['WEAPP_APP_ID'] = $request->input('weapp_app_id','');
  308. $envParams['WEAPP_APP_SECRET'] = $request->input('weapp_app_secret','');
  309. Setting()->setEnvParams($envParams);
  310. if($request->hasFile('weapp_qrcode_image')){
  311. $savePath = storage_path('app/wechat');
  312. $file = $request->file('weapp_qrcode_image');
  313. $fileName = uniqid(str_random(8)).'.'.$file->getClientOriginalExtension();
  314. $target = $file->move($savePath,$fileName);
  315. if($target){
  316. Setting()->set('weapp_qrcode_image','wechat-'.$fileName);
  317. }
  318. }
  319. return $this->success(route('admin.setting.weChatApp'),'配置保存成功');
  320. }
  321. return view('admin.setting.weChatApp');
  322. }
  323. }