xiaoshushu hace 3 años
padre
commit
13b815c4b9

+ 3 - 1
smart-admin/src/main/java/com/huijy/web/controller/api/ApiIndexController.java

@@ -12,6 +12,7 @@ import com.huijy.common.core.domain.AjaxResult;
 import com.huijy.common.core.domain.entity.SysDictData;
 import com.huijy.common.core.page.TableDataInfo;
 import com.huijy.common.exception.ServiceException;
+import com.huijy.common.utils.SendSms;
 import com.huijy.common.utils.StringUtils;
 import com.huijy.common.utils.file.FileUploadUtils;
 import com.huijy.framework.config.ServerConfig;
@@ -20,7 +21,6 @@ import com.huijy.management.service.*;
 import com.huijy.management.vo.WxPhoneFrom;
 import com.huijy.system.service.ISysDictDataService;
 import com.huijy.weixin.config.WxMaConfiguration;
-import com.huijy.weixin.config.WxMaProperties;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -414,9 +414,11 @@ public class ApiIndexController extends ApiAbstractController {
         //发送小程序订阅消息
         if (row > 0 && order.getState() == 1) {
             sendMessage("酒店预订成功通知", order);
+            SendSms.send(order.getPhone(),"1276086",order.getShopName(), order.getMin());
         }
         if (row > 0 && order.getState() == 2) {
             sendMessage("酒店预订失败通知", order);
+            SendSms.send(order.getPhone(),"1276089",order.getShopName(), order.getMsg());
         }
         return AjaxResult.success(row);
     }

+ 7 - 0
smart-common/pom.xml

@@ -119,6 +119,13 @@
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
 
+        <!--腾讯云短信 -->
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>3.1.270</version>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 52 - 0
smart-common/src/main/java/com/huijy/common/utils/SendSms.java

@@ -0,0 +1,52 @@
+package com.huijy.common.utils;
+
+import com.tencentcloudapi.common.Credential;
+import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+import com.tencentcloudapi.common.profile.ClientProfile;
+import com.tencentcloudapi.common.profile.HttpProfile;
+import com.tencentcloudapi.sms.v20210111.SmsClient;
+import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
+import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
+
+//导入可选配置类
+// 导入对应SMS模块的client
+// 导入要请求接口对应的request response类
+
+/**
+ * Tencent Cloud Sms Sendsms
+ */
+public class SendSms {
+    public static void send(String phone,String TemplateId,String p1, String p2) {
+        try {
+            // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
+            // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
+            Credential cred = new Credential("AKIDLUPA3sjOp0va7XnrgFZdau2xd3D8f2GG", "oLl5LPCk17xWnnX0C7tSlnY3IGwLULv7");
+            // 实例化一个http选项,可选的,没有特殊需求可以跳过
+            HttpProfile httpProfile = new HttpProfile();
+            httpProfile.setEndpoint("sms.tencentcloudapi.com");
+            // 实例化一个client选项,可选的,没有特殊需求可以跳过
+            ClientProfile clientProfile = new ClientProfile();
+            clientProfile.setHttpProfile(httpProfile);
+            // 实例化要请求产品的client对象,clientProfile是可选的
+            SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
+            // 实例化一个请求对象,每个接口都会对应一个request对象
+            SendSmsRequest req = new SendSmsRequest();
+            String[] phoneNumberSet1 = {phone};
+            req.setPhoneNumberSet(phoneNumberSet1);
+
+            req.setSmsSdkAppId("1400623079");
+            req.setTemplateId(TemplateId);
+            req.setSignName("谢通门智慧旅游");
+            req.setTemplateParamSet(new String[]{p1, p2});
+            // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
+            SendSmsResponse resp = client.SendSms(req);
+            // 输出json格式的字符串回包
+            System.out.println(SendSmsResponse.toJsonString(resp));
+        } catch (TencentCloudSDKException e) {
+            System.out.println(e.toString());
+        }
+    }
+
+    public static void main(String[] args) {
+    }
+}

+ 2 - 2
smart-ui-app/pages.json

@@ -139,9 +139,9 @@
 			}
 
 		}, {
-			"path": "pages/travel/list",
+			"path": "pages/travel/introduction",
 			"style": {
-				"navigationBarTitleText": "",
+				"navigationBarTitleText": "旅游攻略",
 				"enablePullDownRefresh": true,
 				"backgroundTextStyle": "dark"
 			}

+ 26 - 22
smart-ui-app/pages/index/index2.vue

@@ -21,7 +21,7 @@
 				<image src="../../static/icon3.png" mode="widthFix" class="icon1"></image>
 				<view class="title">谢通门介绍</view>
 			</view>
-			<view class="f" @click="navigate('/pages/travel/list?type=3')">
+			<view class="f" @click="navigate('/pages/travel/introduction')">
 				<image src="../../static/icon1.png" mode="widthFix" class="icon1"></image>
 				<view class="title">旅游攻略</view>
 			</view>
@@ -36,11 +36,11 @@
 		</view>
 		<view class="flex" style="margin-top: 10px;">
 			<view class="f" style="padding-right:8px;">
-				<image @click="navigate(2)" :src="ip + aboutUs.bgImg2" style="height: 164px;width: 100%;border-radius: 5px;" mode="aspectFill"></image>
+				<image @click="detail(2)" :src="ip + aboutUs.bgImg2" style="height: 164px;width: 100%;border-radius: 5px;" mode="aspectFill"></image>
 			</view>
 			<view class="f">
-				<image @click="navigate(3)" :src="ip + aboutUs.bgImg3" style="height: 77px;width: 100%;border-radius: 5px;" mode="aspectFill"></image>
-				<image @click="navigate(4)" :src="ip + aboutUs.bgImg4" style="height: 77px;width: 100%;margin-top: 5px;border-radius: 5px;" mode="aspectFill"></image>
+				<image @click="detail(3)" :src="ip + aboutUs.bgImg3" style="height: 77px;width: 100%;border-radius: 5px;" mode="aspectFill"></image>
+				<image @click="detail(4)" :src="ip + aboutUs.bgImg4" style="height: 77px;width: 100%;margin-top: 5px;border-radius: 5px;" mode="aspectFill"></image>
 			</view>
 		</view>
 		<view class="it">
@@ -108,7 +108,7 @@ export default {
 	},
 	onLoad(e) {
 		this.getData();
-		//this.getWeather();
+		this.getWeather();
 		//uni.setStorageSync("user",{"searchValue":null,"createBy":null,"createTime":null,"updateBy":null,"updateTime":null,"remark":null,"params":{},"memberId":27,"name":"wx_1011223213","mobile":"","email":null,"registerTime":"2021-11-23 21:39:27","lastLoginTime":"2021-11-23 21:53:20","lastLoginIp":"127.0.0.1","loginNum":2,"unionid":null,"openid":"ok3qt5FMehpGy6aOtqPd9pnPLC_Q","nickName":"西域男孩","avatarUrl":"https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLeSLQBtiavUU0ByFbXtND7iaricbNU81HSdaV9bQLTfciaMV604u5TNIdjLiaarL7MIZQXIrWFZfNiaZIQ/132","gender":"0","province":"","city":"","country":"","language":"zh_CN","lastLat":null,"lastLng":null,"isShop":0,"apiToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyNyIsImlhdCI6MTYzNzY3NTYwMCwiZXhwIjoxNjM4MjgwNDAwfQ.vRPuNnLrUH1T8_qOL6Ti4TT2Akw29Set18kiavbjJynol52cxHXqeRoStyF4afdcsiipELdVW9G8-zh52voOFg"})
 	},
 	methods: {
@@ -141,24 +141,28 @@ export default {
 		},
 		//详情
 		detail(item) {
-			uni.navigateTo({ url: '/pages/travel/detail?id=' + item.contentId });
-		},
-		//根据后台的选择跳转id跳转到指定文章
-		navigate(index) {
-			let id;
-			if (index == 2) {
-				id = this.$http.getParam(this.aboutUs.briefText1, '?');
-			}
-			if (index == 2) {
-				id = this.$http.getParam(this.aboutUs.briefText2, '?');
-			}
-			if (index == 3) {
-				id = this.$http.getParam(this.aboutUs.briefText3, '?');
-			}
-			if (index == 4) {
-				id = this.$http.getParam(this.aboutUs.briefText4, '?');
+			if (item.contentId) {
+				uni.navigateTo({ url: '/pages/travel/detail?id=' + item.contentId });
+			} else {
+				//根据后台的选择跳转id跳转到指定文章
+				let id;
+				if (item == 1) {
+					id = this.$http.getParam(this.aboutUs.briefText1, '?');
+				}
+				if (item == 2) {
+					id = this.$http.getParam(this.aboutUs.briefText2, '?');
+				}
+				if (item == 3) {
+					id = this.$http.getParam(this.aboutUs.briefText3, '?');
+				}
+				if (item == 4) {
+					id = this.$http.getParam(this.aboutUs.briefText4, '?');
+				}
+				uni.navigateTo({ url: '/pages/travel/detail?id=' + id });
 			}
-			uni.navigateTo({ url: '/pages/travel/detail?id=' + id });
+		},
+		navigate(url) {
+			uni.navigateTo({ url: url });
 		},
 		//拨打求助电话
 		call() {

+ 1 - 1
smart-ui-app/pages/shop/detail.vue

@@ -51,7 +51,7 @@
 		<u-popup v-model="popup_show" :mask-close-able="false" mode="center" border-radius="14" width="90%" height="auto" :closeable="true">
 			<view class="u-popup">
 				<view class="tttt" style="font-weight: bolder;">预订房间</view>
-				<view class="tk" style="background-color: #F9EFD2;color: #FF9D1D">仅作基本的订房操作,实际情况以酒店方为准</view>
+				<view class="tk" style="background-color: #F9EFD2;color: #FF9D1D;margin-bottom: 10px;">仅作基本的订房操作,实际情况以酒店方为准</view>
 				<u-steps :list="numList" mode="number" :current="0" active-color="#c74547" style="margin: 20px 0px 20px 0px;"></u-steps>
 				<view class="form_group hr">
 					<view class="lable">房型</view>

+ 1 - 1
smart-ui-app/pages/travel/index.vue

@@ -11,7 +11,7 @@
 					<text class="icon">&#xec86;</text>
 					<text class="ll">{{ item.browseNum }}</text>
 				</view>
-				<view class="lx" @click="lx(item)">
+				<view class="lx" @click.stop="lx(item)">
 					<text class="icon">&#xe603;</text>
 					<text>景区路线</text>
 				</view>

+ 0 - 18
smart-ui-app/pages/travel/list.vue → smart-ui-app/pages/travel/introduction.vue

@@ -35,25 +35,7 @@ export default {
 		};
 	},
 	onLoad(e) {
-		this.param.serviceInfo = e.type;
 		this.getData();
-		this.$nextTick(() => {
-			if (e.type == 3) {
-				uni.setNavigationBarTitle({
-					title: '旅游攻略'
-				});
-			}
-			if (e.type == 5) {
-				uni.setNavigationBarTitle({
-					title: '谢通门介绍'
-				});
-			}
-			if (e.type == 6) {
-				uni.setNavigationBarTitle({
-					title: '特产介绍'
-				});
-			}
-		}, 300);
 	},
 	methods: {
 		//获取数据

+ 1 - 1
smart-ui-app/pages/travel/route.vue

@@ -24,7 +24,7 @@ export default {
 			polyline: [
 				{
 					arrowLine: true,
-					width: 12,
+					width: 7,
 					color: '#4CAF50',
 					points: []
 				}

+ 35 - 3
smart-ui-pc/css/style.css

@@ -192,15 +192,17 @@ iframe {
 
 /*************************视频监控*************************/
 .video {
-	display: flex;
+	width: 100%;
+	overflow: hidden;
 }
 
 .video .v {
-	flex: 1;
+	width: 47%;
+	float: left;
 	overflow: hidden;
 	position: relative;
 	height: 200px;
-	margin: 10px;
+	margin: 8px 10px 8px 10px;
 	border: 4px solid rgb(65 104 177);
 	border-radius: 5px;
 	color: white;
@@ -311,4 +313,34 @@ iframe {
 	font-size: 18px;
 }
 
+.popup{
+	position: fixed;
+	width: 100%;
+	height: 100%;
+	top:-100%;
+	overflow-y: scroll;
+	background-color: #000000c7;
+	transition: 0.3s;
+}
+.popup.active{
+	top:0px;
+	transition: 0.3s;
+}
+.popup .pn{
+	background-color: white;
+	border-radius: 5px;
+	padding: 15px;
+	
+}
+.pti{
+	padding: 10px;
+	font-size: 25px;
+	font-weight: bold;
+}
+.item{
+	border-bottom: 1px solid #e6e6e6;
+	display: block;
+	padding: 10px;
+}
+
 /*************************天气end*************************/

+ 44 - 4
smart-ui-pc/index.html

@@ -197,7 +197,8 @@
 						<div class="box" style="height: 720px;">
 							<div class="icon">
 								<img src="img/u110.svg" class="tb">
-								<div class="btw">景区监控系统</div>
+								<div class="btw">景区监控系统 </div>
+								<span style="float: right;cursor: pointer;" @click="popup=true">监控列表</span>
 							</div>
 							<div class="cons">
 								<div class="video">
@@ -209,8 +210,14 @@
 										<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true"
 											style="width: 100%;"></iframe>
 									</div>
-								</div>
-								<div class="video">
+									<div class="v" style="border: 0px;">
+										<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true"
+											style="width: 100%;"></iframe>
+									</div>
+									<div class="v" style="border: 0px;">
+										<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true"
+											style="width: 100%;"></iframe>
+									</div>
 									<div class="v" style="border: 0px;">
 										<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true"
 											style="width: 100%;"></iframe>
@@ -292,6 +299,38 @@
 					</div>
 				</div>
 			</div>
+			
+			<div class="popup" :class="{active:popup}">
+				<div style="padding: 30px;width: 55%;margin: 0 auto;">
+					<div class="pn">
+						<div class="pti">监控列表 <span style="float: right;color: #F44336;cursor:pointer;" @click="popup=false">关闭</span></div>
+						<div class="list">
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+							<a class="item">D1 游客中心停车场出口</a>
+						</div>
+					</div>
+				</div>
+			</div>
+			
+			
+			
 		</div>
 		<script src="js/vue.min.js"></script>
 		<script src="js/echarts.min.js"></script>
@@ -301,11 +340,12 @@
 			let vm = new Vue({
 				el: "#app",
 				data: {
+					popup:false,
 					item: {},
 					now: 0
 				},
 				mounted() {
-					this.tab(0);
+					this.tab(2);
 				},
 				methods: {
 					tab(now = 0) {

+ 117 - 0
smart-ui-pc/video.html

@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<title></title>
+		<link href="css/style.css" rel="stylesheet" />
+		<style>
+			.v1 {
+				width: 18.3%;
+				float: left;
+				overflow: hidden;
+				position: relative;
+				height: 190px;
+				margin: 10px;
+				border: 4px solid rgb(65 104 177);
+				border-radius: 5px;
+				color: white;
+				font-size: 20px;
+			}
+		</style>
+	</head>
+	<body>
+		<div id="app">
+			<div class="top">
+				<div class="flex" style="margin-top:0px;">
+					<div class="f tti" :class="{active:now==0}" @click="tab(0)"></div>
+					<div class="f tti" :class="{active:now==1}" @click="tab(1)"></div>
+					<div class="f" style="flex: 2.2;">
+						<div class="logo">
+							<img class="u4" src="img/u4.svg" />
+							<div class="uti">谢通门县旅游数据-监控平台</div>
+							<img class="u5" src="img/u5.svg" />
+						</div>
+					</div>
+					<div class="f tti" :class="{active:now==2}" @click="tab(2)"></div>
+					<div class="f tti" @click="tab(2)"></div>
+				</div>
+			</div>
+			<div class="content" style="margin-top: 30px;">
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+				<div class="v1" style="border: 0px;">
+					<iframe src="https://stlab.gxqrjf.com:20443/liveplayer/" allowfullscreen="true" style="width: 100%;"></iframe>
+				</div>
+			</div>
+		</div>
+		<script src="js/vue.min.js"></script>
+		<script src="js/echarts.min.js"></script>
+		<script src="js/jquery.min.js"></script>
+		<script src="js/wordcloud2.js"></script>
+		<script>
+			let vm = new Vue({
+				el: "#app",
+				data: {
+					item: {},
+					now: 0
+				},
+				mounted() {},
+				methods: {
+
+				}
+			})
+		</script>
+	</body>
+</html>