commit
383a9111cd
@ -0,0 +1,20 @@
|
|||||||
|
<template>
|
||||||
|
<div id="app">
|
||||||
|
<router-view></router-view>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'App'
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#app {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,16 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<label for="user-input"></label>
|
||||||
|
<input type="text" id="user-input" v-model="userInput" placeholder="请输入">
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
userInput: '', // 初始化为空字符串
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,67 @@
|
|||||||
|
<template>
|
||||||
|
<div class="footer-nav">
|
||||||
|
<div class="button-with-icon" @click="gotohome()">
|
||||||
|
<el-icon><House /></el-icon>
|
||||||
|
<span>首页</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-with-icon" @click="gotomessage()()">
|
||||||
|
<el-icon><ChatDotSquare /></el-icon>
|
||||||
|
<span>消息</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-with-icon" @click="gotomine()">
|
||||||
|
<el-icon><User /></el-icon>
|
||||||
|
<span>我的</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'Home',
|
||||||
|
methods: {
|
||||||
|
gotohome() {
|
||||||
|
this.$router.push('/home');
|
||||||
|
},
|
||||||
|
gotomessage() {
|
||||||
|
this.$router.push('/message');
|
||||||
|
},
|
||||||
|
gotomine() {
|
||||||
|
this.$router.push('/mine');
|
||||||
|
},
|
||||||
|
gotoSearchPage() {
|
||||||
|
this.$router.push('/searchPage');
|
||||||
|
},
|
||||||
|
gotoAddDemandPage() {
|
||||||
|
this.$router.push('/addDemandPage');
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.footer-nav {
|
||||||
|
/* 定义底部导航的样式 */
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
padding: 10px;
|
||||||
|
background-color: #f5f5f5; /* 示例背景色 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-with-icon {
|
||||||
|
/* 定义按钮的样式 */
|
||||||
|
flex: 1;
|
||||||
|
border: none;
|
||||||
|
padding: 10px;
|
||||||
|
background-color: #d5d5d5;
|
||||||
|
color: #333;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-with-icon:hover {
|
||||||
|
background-color: #aaaaaa;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,27 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-carousel :interval="4000" arrow="always">
|
||||||
|
<el-carousel-item v-for="(item, index) in imagePaths" :key="index">
|
||||||
|
<img :src="item" alt = "描述图像的文本">
|
||||||
|
</el-carousel-item>
|
||||||
|
</el-carousel>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
setup() {
|
||||||
|
const imagePaths = ref([
|
||||||
|
'https://dimg04.c-ctrip.com/images/0102p12000828jmogCF2E_C_1600_1200.jpg',
|
||||||
|
'https://pic.kuaizhan.com/g3/b7/18/7a16-bad5-4d28-b5aa-571710c674cb36',
|
||||||
|
'https://img.shetu66.com/2023/07/11/1689058469100908.png'
|
||||||
|
]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
imagePaths
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,7 @@
|
|||||||
|
<template>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</template>
|
@ -0,0 +1,7 @@
|
|||||||
|
<template>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</template>
|
@ -0,0 +1,7 @@
|
|||||||
|
<template>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</template>
|
@ -0,0 +1,7 @@
|
|||||||
|
<template>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</template>
|
@ -0,0 +1,19 @@
|
|||||||
|
<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
|
||||||
|
<template>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
aria-hidden="true"
|
||||||
|
role="img"
|
||||||
|
class="iconify iconify--mdi"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
preserveAspectRatio="xMidYMid meet"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
|
||||||
|
fill="currentColor"
|
||||||
|
></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
@ -0,0 +1,6 @@
|
|||||||
|
export type AreaList = {
|
||||||
|
code: string;
|
||||||
|
level: number;
|
||||||
|
name: string;
|
||||||
|
areaList: AreaList[];
|
||||||
|
};
|
@ -0,0 +1,18 @@
|
|||||||
|
import { createApp } from 'vue';
|
||||||
|
import App from './App.vue';
|
||||||
|
import router from './router';
|
||||||
|
import ElementPlus from 'element-plus';
|
||||||
|
import 'element-plus/theme-chalk/index.css';
|
||||||
|
import VueDatePicker from '@vuepic/vue-datepicker';
|
||||||
|
import '@vuepic/vue-datepicker/dist/main.css'
|
||||||
|
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
|
||||||
|
|
||||||
|
|
||||||
|
const app = createApp(App);
|
||||||
|
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
||||||
|
app.component(key, component)
|
||||||
|
}
|
||||||
|
app.use(ElementPlus);
|
||||||
|
app.use(router);
|
||||||
|
app.component('VueDatePicker', VueDatePicker);
|
||||||
|
app.mount('#app');
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.softegg.freetogo.Demand.Dao;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.Demand.bean.Demands;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:继承Jpa数据库接口类
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/10 19:50
|
||||||
|
*/
|
||||||
|
public interface DemandsRepository extends JpaRepository<Demands, Integer> {
|
||||||
|
List<Demands> findByPhone(String phone);
|
||||||
|
|
||||||
|
List<Demands> findByCity(String city);
|
||||||
|
|
||||||
|
List<Demands> findByProvince(String province);
|
||||||
|
}
|
@ -0,0 +1,124 @@
|
|||||||
|
package com.softegg.freetogo.Demand.service;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.Demand.Dao.DemandsRepository;
|
||||||
|
import com.softegg.freetogo.Demand.bean.Demands;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:数据库操作接口实现类
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/10 19:50
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class DemandsServiceImpl implements DemandsService {
|
||||||
|
@Autowired
|
||||||
|
private DemandsRepository DemandsRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 查找所有游客需求
|
||||||
|
* @param: null
|
||||||
|
* @return: java.util.List<com.softegg.freetogo.Demand.Bean.Demands>
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/10 19:53
|
||||||
|
*/
|
||||||
|
public List<Demands> findAll() {
|
||||||
|
System.out.println("查询成功");
|
||||||
|
return DemandsRepository.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 以demand为游客需求入库
|
||||||
|
* @param: demand
|
||||||
|
* @return: void
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/10 19:55
|
||||||
|
*/
|
||||||
|
public void add(Demands demand) {
|
||||||
|
DemandsRepository.save(demand);
|
||||||
|
System.out.println("添加成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 删除对应序号id的需求
|
||||||
|
* @param: id
|
||||||
|
* @return: void
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/10 19:59
|
||||||
|
*/
|
||||||
|
public void deleteById(int did) {
|
||||||
|
DemandsRepository.deleteById(did);
|
||||||
|
System.out.println("删除成功对应did:");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 获得对应手机号游客的需求
|
||||||
|
* @param: id
|
||||||
|
* @return: com.softegg.freetogo.Demand.Bean.Demands
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/10 20:02
|
||||||
|
*/
|
||||||
|
public Demands getDemandById(int id) {
|
||||||
|
return DemandsRepository.findById(id).orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 更新需求信息
|
||||||
|
* @param: demand
|
||||||
|
* @return: void
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/10 20:05
|
||||||
|
*/
|
||||||
|
public void update(Demands demand) {
|
||||||
|
DemandsRepository.save(demand);
|
||||||
|
System.out.println("需求更新成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 根据手机号获得游客用户的所有需求
|
||||||
|
* @param: phone
|
||||||
|
* @return: com.softegg.freetogo.GuideService.Bean.GuideService
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/15 20:18
|
||||||
|
*/
|
||||||
|
|
||||||
|
public List<Demands> getDemandsByPhone(String phone) {
|
||||||
|
List<Demands> demandsList = DemandsRepository.findByPhone(phone);
|
||||||
|
Iterator<Demands> iterator = demandsList.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Demands demand = iterator.next();
|
||||||
|
if (demand.getStatus() == 4) {
|
||||||
|
iterator.remove(); // 使用迭代器的 remove 方法
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return demandsList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 根据城市获得游客用户的所有需求
|
||||||
|
* @param: city
|
||||||
|
* @return: com.softegg.freetogo.GuideService.Bean.GuideService
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/15 20:18
|
||||||
|
*/
|
||||||
|
|
||||||
|
public List<Demands> getDemandsByCity(String city) {
|
||||||
|
return DemandsRepository.findByCity(city);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 根据城市获得游客用户的所有需求
|
||||||
|
* @param: city
|
||||||
|
* @return: com.softegg.freetogo.GuideService.Bean.GuideService
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/15 20:18
|
||||||
|
*/
|
||||||
|
public List<Demands> getDemandsByProvince(String province) {
|
||||||
|
return DemandsRepository.findByProvince(province);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.softegg.freetogo.DemandMatch.service;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.Demand.bean.Demands;
|
||||||
|
import com.softegg.freetogo.GuideService.bean.GuideService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface DemandMatchService {
|
||||||
|
List<GuideService> guideMatchAccount(int did);
|
||||||
|
|
||||||
|
int match(int did, int gid);
|
||||||
|
|
||||||
|
int confirmed(int did, int gid);
|
||||||
|
|
||||||
|
List<GuideService> confirmedPage(int did);
|
||||||
|
|
||||||
|
int refuse(int did);
|
||||||
|
|
||||||
|
int finish(int did);
|
||||||
|
|
||||||
|
int delete(int did);
|
||||||
|
|
||||||
|
double timeScore(int gsum, String gddate, String gedate, int dsum, String dddate, String dedate);
|
||||||
|
|
||||||
|
double messageScore(String gmessage, String dmessage);
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.softegg.freetogo.GuideMatch.service;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.Demand.bean.Demands;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:抽象需求发送服务接口类
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/28 19:45
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public interface GuideMatchService {
|
||||||
|
|
||||||
|
List<Demands> guideMatchAccount(int gid);
|
||||||
|
|
||||||
|
int match(int gid, int did);
|
||||||
|
|
||||||
|
List<Demands> confirmedPage(int gid);
|
||||||
|
|
||||||
|
int confirmed(int did, int gid);
|
||||||
|
|
||||||
|
int refuse(int gid);
|
||||||
|
|
||||||
|
int delete(int gid);
|
||||||
|
|
||||||
|
double timeScore(int gsum, String gddate, String gedate, int dsum, String dddate, String dedate);
|
||||||
|
|
||||||
|
double messageScore(String gmessage, String dmessage);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.softegg.freetogo.GuideService.Dao;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.Demand.bean.Demands;
|
||||||
|
import com.softegg.freetogo.GuideService.bean.GuideService;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:继承Jpa数据库接口类
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/13 9:17
|
||||||
|
*/
|
||||||
|
public interface GuideServiceRepository extends JpaRepository<GuideService, Integer> {
|
||||||
|
List<GuideService> findByPhone(String phone);
|
||||||
|
|
||||||
|
List<GuideService> findByCity(String city);
|
||||||
|
|
||||||
|
List<GuideService> findByProvince(String province);
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
package com.softegg.freetogo.HeatMap.controller;
|
||||||
|
|
||||||
|
public class HeatMapController {
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.softegg.freetogo.HeatMap.service;
|
||||||
|
|
||||||
|
public interface HeatMapService {
|
||||||
|
int[] provinceDemandsHeatMap();//获得每个省份的游客需求数目
|
||||||
|
|
||||||
|
int[] cityDemandsHeatMap(String province);//获得目标省份的游客需求数目
|
||||||
|
|
||||||
|
int[] provinceGuideServiceHeatMap();
|
||||||
|
|
||||||
|
int[] cityGuideServiceHeatMap(String province);
|
||||||
|
}
|
@ -0,0 +1,192 @@
|
|||||||
|
package com.softegg.freetogo.HeatMap.service;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.Demand.bean.Demands;
|
||||||
|
import com.softegg.freetogo.Demand.service.DemandsService;
|
||||||
|
import com.softegg.freetogo.GuideService.service.GuideServiceService;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.GuideService.bean.GuideService;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.json.simple.parser.ParseException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* description:热力图实现类
|
||||||
|
* @author:wuyifan
|
||||||
|
* date:2024/6/6 10:51
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class HeatMapServiceImpl implements HeatMapService {
|
||||||
|
@Autowired
|
||||||
|
DemandsService demandsService;
|
||||||
|
@Autowired
|
||||||
|
GuideServiceService guideServiceService;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> provinceList = new ArrayList<>();
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 读取 JSON 文件内容并解析为 JSONObject
|
||||||
|
Object obj = parser.parse(new FileReader("C:/Users/WYF/Desktop/软件体系结构/FreeToGo/src/main/java/com/softegg/freetogo/HeatMap/service/area.json")); // 直接使用文件名表示相对路径
|
||||||
|
JSONObject jsonObject = (JSONObject) obj;
|
||||||
|
|
||||||
|
for (Object province : jsonObject.keySet()) {
|
||||||
|
provinceList.add(province.toString());
|
||||||
|
}
|
||||||
|
System.out.println("所有省份列表:");
|
||||||
|
for (String province : provinceList) {
|
||||||
|
System.out.println(province);
|
||||||
|
}
|
||||||
|
} catch (IOException | ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 获得所有省份的List
|
||||||
|
* @param: null
|
||||||
|
* @return: List<String>
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/6 15:48
|
||||||
|
*/
|
||||||
|
public List<String> getAllProvinces() {
|
||||||
|
List<String> provinceList = new ArrayList<>();
|
||||||
|
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 读取 JSON 文件内容并解析为 JSONObject
|
||||||
|
Object obj = parser.parse(new FileReader("C:/Users/WYF/Desktop/软件体系结构/FreeToGo/src/main/java/com/softegg/freetogo/HeatMap/service/area.json"));
|
||||||
|
JSONObject jsonObject = (JSONObject) obj;
|
||||||
|
|
||||||
|
// 遍历每个省份
|
||||||
|
for (Object province : jsonObject.keySet()) {
|
||||||
|
// 将省份添加到列表中
|
||||||
|
provinceList.add(province.toString());
|
||||||
|
}
|
||||||
|
} catch (IOException | ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return provinceList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 获得目标省份的所有城市的List
|
||||||
|
* @param: String
|
||||||
|
* @return: List<String>
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/6 15:48
|
||||||
|
*/
|
||||||
|
public List<String> getCitiesInProvince(String province) {
|
||||||
|
List<String> cityList = new ArrayList<>();
|
||||||
|
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 读取 JSON 文件内容并解析为 JSONObject
|
||||||
|
Object obj = parser.parse(new FileReader("C:/Users/WYF/Desktop/软件体系结构/FreeToGo/src/main/java/com/softegg/freetogo/HeatMap/service/area.json"));
|
||||||
|
JSONObject jsonObject = (JSONObject) obj;
|
||||||
|
|
||||||
|
// 获取湖南省的城市信息
|
||||||
|
JSONObject hunanCities = (JSONObject) jsonObject.get(province);
|
||||||
|
|
||||||
|
// 遍历每个城市并将城市名称添加到列表中
|
||||||
|
for (Object city : hunanCities.keySet()) {
|
||||||
|
cityList.add(city.toString());
|
||||||
|
}
|
||||||
|
} catch (IOException | ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return cityList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 获得所有省份的游客需求数目
|
||||||
|
* @param: null
|
||||||
|
* @return: int[]
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/6 15:48
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int[] provinceDemandsHeatMap(){
|
||||||
|
List<String> provinceList = getAllProvinces();
|
||||||
|
int[] sum = new int[provinceList.size()];
|
||||||
|
int i = 0;
|
||||||
|
for (String province : provinceList) {
|
||||||
|
List<Demands> demandsList = demandsService.getDemandsByProvince(province);
|
||||||
|
sum[i] = demandsList.size();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 获得目标省份的游客需求数目
|
||||||
|
* @param: String
|
||||||
|
* @return: int[]
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/6 15:48
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int[] cityDemandsHeatMap(String province){
|
||||||
|
List<String> cityList = getCitiesInProvince(province);
|
||||||
|
int[] sum = new int[cityList.size()];
|
||||||
|
int i = 0;
|
||||||
|
for (String city : cityList) {
|
||||||
|
List<Demands> demandsList = demandsService.getDemandsByCity(city);
|
||||||
|
sum[i] = demandsList.size();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 获得所有省份的游客需求数目
|
||||||
|
* @param: null
|
||||||
|
* @return: int[]
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/6 15:48
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int[] provinceGuideServiceHeatMap(){
|
||||||
|
List<String> provinceList = getAllProvinces();
|
||||||
|
int[] sum = new int[provinceList.size()];
|
||||||
|
int i = 0;
|
||||||
|
for (String province : provinceList) {
|
||||||
|
List<GuideService> guideServiceList = guideServiceService.getGuideServiceByProvince(province);
|
||||||
|
sum[i] = guideServiceList.size();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 获得目标省份的游客需求数目
|
||||||
|
* @param: String
|
||||||
|
* @return: int[]
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/6 15:48
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int[] cityGuideServiceHeatMap(String province){
|
||||||
|
List<String> cityList = getCitiesInProvince(province);
|
||||||
|
int[] sum = new int[cityList.size()];
|
||||||
|
int i = 0;
|
||||||
|
for (String city : cityList) {
|
||||||
|
List<GuideService> guideServiceList = guideServiceService.getGuideServiceByCity(city);
|
||||||
|
sum[i] = guideServiceList.size();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,72 @@
|
|||||||
|
package com.softegg.freetogo.SendDemand.controller;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.Demand.bean.Demands;
|
||||||
|
import com.softegg.freetogo.Demand.service.DemandsService;
|
||||||
|
import com.softegg.freetogo.GuideService.bean.GuideService;
|
||||||
|
import com.softegg.freetogo.SendDemand.service.SendDemandService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:登录服务前后端交互
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/10 23:09
|
||||||
|
*/
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
//@CrossOrigin(origins = "*")
|
||||||
|
@RequestMapping("/SendDemand")
|
||||||
|
public class SendDemandController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
SendDemandService sendDemandService;
|
||||||
|
@Autowired
|
||||||
|
DemandsService demandsService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 发送需求的交互逻辑
|
||||||
|
* @param: map
|
||||||
|
* @return: java.lang.String
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/10 22:45
|
||||||
|
*/
|
||||||
|
@PostMapping("register")
|
||||||
|
public String SendDemand(@RequestBody Map<String, Object> map) {
|
||||||
|
return switch (sendDemandService.sendnewDemandAccount(map.get("city").toString(), map.get("phone").toString(), map.get("time").toString(), (String) map.get("remark"))) {
|
||||||
|
case 1005 -> "1";//需求发送成功
|
||||||
|
default -> "0";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 发送该用户所有游客需求的交互逻辑
|
||||||
|
* @param: map
|
||||||
|
* @return: java.lang.String
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/16 11:01
|
||||||
|
*/
|
||||||
|
@GetMapping("sendAllDemands")
|
||||||
|
public List<Demands> sendAllDemand(String phone) {
|
||||||
|
System.out.println("收到目标用户手机号:" + phone);
|
||||||
|
List<Demands> dlist = demandsService.getDemandsByPhone(phone);
|
||||||
|
System.out.println(dlist);
|
||||||
|
return dlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 发送需求的交互逻辑
|
||||||
|
* @param: map
|
||||||
|
* @return: java.lang.String
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/4 16:12
|
||||||
|
*/
|
||||||
|
@GetMapping("demand")
|
||||||
|
public Demands demand(int did) {
|
||||||
|
System.out.println("需求did:"+did);
|
||||||
|
return demandsService.getDemandById(did);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.softegg.freetogo.SendDemand.service;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:抽象需求发送服务接口类
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/10 23:31
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public interface SendDemandService {
|
||||||
|
int sendnewDemandAccount(String city, String phone, String date, String message);
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
package com.softegg.freetogo.SendGuideService.controller;
|
||||||
|
|
||||||
|
import com.softegg.freetogo.GuideService.bean.GuideService;
|
||||||
|
import com.softegg.freetogo.GuideService.service.GuideServiceService;
|
||||||
|
import com.softegg.freetogo.SendGuideService.service.SendGuideServiceService;
|
||||||
|
import com.softegg.freetogo.User.bean.Users;
|
||||||
|
import com.softegg.freetogo.User.service.UsersService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:登录服务前后端交互
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/13 10:47
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
//@CrossOrigin(origins = "*")
|
||||||
|
@RequestMapping("/SendGuideService")
|
||||||
|
public class SendGuideServiceController {
|
||||||
|
@Autowired
|
||||||
|
SendGuideServiceService sendGuideServiceService;
|
||||||
|
@Autowired
|
||||||
|
UsersService usersService;
|
||||||
|
@Autowired
|
||||||
|
GuideServiceService guideServiceService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 发送需求的交互逻辑
|
||||||
|
* @param: map
|
||||||
|
* @return: java.lang.String
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/13 10:48
|
||||||
|
*/
|
||||||
|
@PostMapping("register")
|
||||||
|
public int SendDemand(@RequestBody Map<String, Object> map) {
|
||||||
|
String phone = map.get("phone").toString();
|
||||||
|
Users user = usersService.getUserByPhone(phone);
|
||||||
|
if (user.isMembertype()) {
|
||||||
|
return switch (sendGuideServiceService.sendnewGuideServiceAccount(map.get("city").toString(), map.get("phone").toString(), map.get("time").toString(), (String) map.get("remark"))) {
|
||||||
|
case 1005 -> 1;//服务发送成功
|
||||||
|
default -> 0;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return 2;//用户非导游
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 发送该用户所有导游服务的交互逻辑
|
||||||
|
* @param: map
|
||||||
|
* @return: java.lang.String
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/5/16 11:01
|
||||||
|
*/
|
||||||
|
@GetMapping("sendAllGuideService")
|
||||||
|
public List<GuideService> sendAllGuideService(String phone) {
|
||||||
|
List<GuideService> glist = guideServiceService.getGuideServiceByPhone(phone);
|
||||||
|
return glist;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 发送需求的交互逻辑
|
||||||
|
* @param: map
|
||||||
|
* @return: java.lang.String
|
||||||
|
* @author: wuyifan
|
||||||
|
* @date: 2024/6/4 16:10
|
||||||
|
*/
|
||||||
|
@GetMapping("GuideService")
|
||||||
|
public GuideService GuideService(int gid) {
|
||||||
|
return guideServiceService.getGuideServiceById(gid);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.softegg.freetogo.SendGuideService.service;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:抽象需求发送服务接口类
|
||||||
|
* @author:wuyifan
|
||||||
|
* @date:2024/5/13 11:11
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public interface SendGuideServiceService {
|
||||||
|
|
||||||
|
int sendnewGuideServiceAccount(String city, String phone, String date, String message);
|
||||||
|
}
|
Loading…
Reference in new issue