后端代码更新

wuyifan_branch
wuyifan 1 year ago
parent 4bd9229d2c
commit 980cfee63e

@ -1,5 +1,6 @@
package com.softegg.freetogo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ -21,5 +22,6 @@ public class Configurer implements WebMvcConfigurer {
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.exposedHeaders("*");
// registry.addMapping("/**").allowedOrigins("http://106.52.218.118:8090");
}
}

@ -1,14 +1,19 @@
package com.softegg.freetogo.Demand.Dao;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.User.bean.Users;
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> {
Demands findByPhone(String phone);
List<Demands> findByPhone(String phone);
List<Demands> findByCity(String city);
List<Demands> findByProvince(String province);
}

@ -6,13 +6,15 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
/**
* @description:demand
* @author:wuyifan
* @date:2024/5/10 11:36
*/
@Entity
@Table(name="demands")
@Table(name = "demands")
@Setter
@Getter
@NoArgsConstructor
@ -20,26 +22,32 @@ import lombok.Setter;
public class Demands {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer uid;
private Integer did;
@Column
private String phone;//游客手机号码
@Column(name="tourist_gender")
@Column(name = "tourist_gender")
private boolean touristGender;//游客性别 ture:male, false:female
@Column
private String nickname;//发布需求的游客昵称信息
@Column(name="create_time")
@Column(name = "create_time")
private String createTime;//需求发布时间
@Column(name="departure_date")
@Column(name = "departure_date")
private String departureDate;//游客需求起始日期
@Column(name="end_date")
@Column(name = "end_date")
private String endDate;//游客需求结束日期
@Column(name="sum_day")
@Column(name = "sum_day")
private String sumDay;//游客旅游总天数
@Column
private String province;//发布需求的目的省份
@Column
private String city;//发布需求的目的城市
@Column
private String message;//需求备注内容
@Column
private Integer status;//游客需求状态 0未匹配 1已匹配 2已完成
private Integer status;//游客需求状态 0未匹配 1请求匹配 2已完成匹配 3已完成所有服务
@Column
private Integer guideServiceId;//游客需求最终匹配到的导游服务id
@ElementCollection
@Column(name = "guide_service_id_list")
private List<Integer> guideServiceIdList;//游客需求申请匹配到的导游服务id
}

@ -2,13 +2,12 @@ package com.softegg.freetogo.Demand.controller;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.Demand.service.DemandsService;
import com.softegg.freetogo.User.bean.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* @description:Demand
@ -22,9 +21,11 @@ public class DemandsController {
@Autowired
private DemandsService demandsService;
@GetMapping("findAll")
public List<Demands> findAll() {
return demandsService.findAll();
@GetMapping("findAllRandom")
public List<Demands> findAllRandom() {
List<Demands> dlist = demandsService.findAll();
Collections.shuffle(dlist);
return dlist;
}
@GetMapping("add")
@ -35,19 +36,23 @@ public class DemandsController {
String dDate,
String eDate,
String sDay,
String province,
String city,
String message,
Integer status) {
Integer status,
Integer guideServiceId,
List<Integer> guideServiceIdList) {
Demands demand = new Demands();
setDemands(phone, tGender, nkn, ct, dDate, eDate, sDay, city, message,status , demand);
setDemands(phone, tGender, nkn, ct, dDate, eDate, sDay, province, city, message, status, demand, guideServiceId, guideServiceIdList);
demandsService.add(demand);
return "添加成功";
}
@GetMapping("delbyid")
public String delById(int id) {
demandsService.deleteById(id);
return "删除成功";
@PostMapping("delbyid")
public int delById(@RequestBody Map<String, Object> map) {
int did = Integer.parseInt(map.get("did").toString());
demandsService.deleteById(did);
return 1;
}
@GetMapping("findbyid")
@ -64,22 +69,25 @@ public class DemandsController {
String dDate,
String eDate,
String sDay,
String province,
String city,
String message,
Integer status) {
Integer status,
Integer guideServiceId,
List<Integer> guideServiceIdList) {
Demands demand = demandsService.getDemandById(id);
setDemands(phone, tGender, nkn, ct, dDate, eDate, sDay, city, message, status, demand);
setDemands(phone, tGender, nkn, ct, dDate, eDate, sDay, province, city, message, status, demand, guideServiceId, guideServiceIdList);
demandsService.update(demand);
return "更新成功";
}
@GetMapping("getByPhone")
public Demands getByPhone(String phone) {
public List<Demands> getByPhone(String phone) {
System.out.println("根据手机号获取游客需求信息:" + phone);
return demandsService.getDemandsByPhone(phone);
}
private void setDemands(String phone, boolean tGender, String nkn, String ct, String dDate, String eDate, String sDay, String city, String message, Integer status, Demands demand) {
private void setDemands(String phone, boolean tGender, String nkn, String ct, String dDate, String eDate, String sDay, String province, String city, String message, Integer status, Demands demand,Integer guideServiceId,List<Integer> guideServiceIdList) {
demand.setPhone(phone);
demand.setTouristGender(tGender);
demand.setNickname(nkn);
@ -87,9 +95,13 @@ public class DemandsController {
demand.setDepartureDate(dDate);
demand.setEndDate(eDate);
demand.setSumDay(sDay);
demand.setProvince(province);
demand.setCity(city);
demand.setMessage(message);
demand.setStatus(status);
// demand.setGuideGender(gGender);
demand.setGuideServiceId(guideServiceId);
demand.setGuideServiceIdList(guideServiceIdList);
}
}

@ -1,7 +1,6 @@
package com.softegg.freetogo.Demand.service;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.User.bean.Users;
import java.util.List;
@ -21,5 +20,9 @@ public interface DemandsService {
void update(Demands demand);//更新需求信息
Demands getDemandsByPhone(String phone);//根据手机号获得对应游客用户的服务
List<Demands> getDemandsByPhone(String phone);//根据手机号获得对应游客用户的服务
List<Demands> getDemandsByCity(String city);//根据手机号获得对应游客用户的服务
List<Demands> getDemandsByProvince(String province);//根据手机号获得对应游客用户的服务
}

@ -2,10 +2,10 @@ package com.softegg.freetogo.Demand.service;
import com.softegg.freetogo.Demand.Dao.DemandsRepository;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.User.bean.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Iterator;
import java.util.List;
/**
@ -49,9 +49,9 @@ public class DemandsServiceImpl implements DemandsService {
* @author: wuyifan
* @date: 2024/5/10 19:59
*/
public void deleteById(int id) {
DemandsRepository.deleteById(id);
System.out.println("删除成功");
public void deleteById(int did) {
DemandsRepository.deleteById(did);
System.out.println("删除成功对应did:");
}
/**
@ -74,19 +74,51 @@ public class DemandsServiceImpl implements DemandsService {
*/
public void update(Demands demand) {
DemandsRepository.save(demand);
System.out.println("更新成功");
System.out.println("需求更新成功");
}
/**
* @description:
* @description:
* @param: phone
* @return: com.softegg.freetogo.Demand.Bean.Demands
* @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 Demands getDemandsByPhone(String phone) {
return DemandsRepository.findByPhone(phone);
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,140 @@
package com.softegg.freetogo.DemandMatch.controller;
import com.softegg.freetogo.GuideService.bean.GuideService;
import com.softegg.freetogo.GuideService.service.GuideServiceService;
import com.softegg.freetogo.DemandMatch.service.DemandMatchService;
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/6/4 14:47
*/
@RestController
@RequestMapping("/DemandMatch")
public class DemandMatchController {
@Autowired
DemandMatchService demandMatchService;
@Autowired
UsersService usersService;
@Autowired
GuideServiceService guideServiceService;
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/4 14:48
*/
@GetMapping("register")
public List<GuideService> GuideMatch(int did) {
System.out.println("接收的did:"+did);
return demandMatchService.guideMatchAccount(did);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/4 14:48
*/
@GetMapping("specific")
public List<GuideService> specific(int did, int gid) {
System.out.println("接收的did:"+did);
return demandMatchService.guideMatchAccount(did);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("match")
public int Match(@RequestBody Map<String, Object> map) {
int did = (int) map.get("did");
System.out.println("接收的did:"+did);
int gid = (int) map.get("gid");
System.out.println("接收的did:"+did);
return demandMatchService.match(did, gid);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@GetMapping("confirmedPage")
public List<GuideService> confirmedpage(int did) {
System.out.println("接收的did:"+did);
return demandMatchService.confirmedPage(did);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("confirmed")
public int confirmed(@RequestBody Map<String, Object> map) {
int did = Integer.parseInt(map.get("did").toString());
System.out.println("接收的did:"+did);
int gid = Integer.parseInt(map.get("gid").toString());
System.out.println("接收的did:"+gid);
return demandMatchService.confirmed(did, gid);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("refuse")
public int refuse(@RequestBody Map<String, Object> map) {
int did = (int) map.get("did");
System.out.println("接收的did:"+did);
return demandMatchService.refuse(did);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("finish")
public int finish(@RequestBody Map<String, Object> map) {
int did = (int) map.get("did");
System.out.println("接收的did:"+did);
return demandMatchService.finish(did);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("delete")
public int delete(@RequestBody Map<String, Object> map) {
int did = (int) map.get("did");
System.out.println("接收的did:"+did);
return demandMatchService.delete(did);
}
}

@ -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,421 @@
package com.softegg.freetogo.DemandMatch.service;
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.User.service.UsersService;
import com.softegg.freetogo.GuideService.service.GuideServiceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.format.DateTimeFormatter;
import java.util.*;
import static java.lang.Math.abs;
import java.time.LocalDate;
/**
* description:
* @author:wuyifan
* date:2024/5/28 19:51
*/
@Component
public class DemandMatchServiceImpl implements DemandMatchService{
@Autowired
DemandsService demandsService;
@Autowired
UsersService usersService;
@Autowired
GuideServiceService guideServiceService;
/**
* @description:
* @param: city
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public List<GuideService> guideMatchAccount(int did){
Demands demand = demandsService.getDemandById(did);
int demandSumDay = Integer.parseInt(demand.getSumDay());
String demandDepartureDate = demand.getDepartureDate();
String demandEndDate = demand.getEndDate();
String demandMessage = demand.getMessage();
List<GuideService> guideServiceList = guideServiceService.getGuideServiceByCity(demand.getCity());
Iterator<GuideService> iterator = guideServiceList.iterator();
while (iterator.hasNext()) {
GuideService guideService = iterator.next();
if (guideService.getStatus() > 1) {
iterator.remove(); // 使用迭代器的 remove 方法
}
}
int length = guideServiceList.size();
double[] sumScores = new double[length];
int i = 0;
for (GuideService guideService : guideServiceList) {
double sumScore = 0;
int guideServiceSumDay = Integer.parseInt(guideService.getSumDay());
String guideServiceDepartureDate = guideService.getDepartureDate();
String guideServiceEndDate = guideService.getEndDate();
String guideServiceMessage = guideService.getMessage();
double timeScore = timeScore(guideServiceSumDay, guideServiceDepartureDate, guideServiceEndDate, demandSumDay, demandDepartureDate, demandEndDate);
double messageScore = messageScore(guideServiceMessage, demandMessage);
sumScore += timeScore + messageScore;
sumScores[i] = sumScore;
i++;
}
// 创建一个包含索引和值的列表
List<Map.Entry<Double, GuideService>> list = new ArrayList<>();
for (int j = 0; j < sumScores.length; j++) {
list.add(new AbstractMap.SimpleEntry<>(sumScores[j], guideServiceList.get(j)));
}
// 根据sumScores的元素大小对 list 进行排序
list.sort(new Comparator<Map.Entry<Double, GuideService>>() {
@Override
public int compare(Map.Entry<Double, GuideService> o1, Map.Entry<Double, GuideService> o2) {
return o2.getKey().compareTo(o1.getKey());
}
});
List<GuideService> newgList = new ArrayList<>();
for (Map.Entry<Double, GuideService> entry : list) {
newgList.add(entry.getValue());
}
return newgList;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int match(int did, int gid){
Demands demand = demandsService.getDemandById(did);
GuideService guideService = guideServiceService.getGuideServiceById(gid);
// List<Integer> guideServiceIdList = demand.getGuideServiceIdList();
// if (guideServiceIdList == null) {
// guideServiceIdList = new ArrayList<>();
// }
// guideServiceIdList.add(gid);
// demand.setGuideServiceIdList(guideServiceIdList);
List<Integer> demandIdList = guideService.getDemandIdList();
if (demandIdList == null) {
demandIdList = new ArrayList<>();
}
if(!demandIdList.contains(did)) {
demandIdList.add(did);
}
guideService.setStatus(1);
guideService.setDemandIdList(demandIdList);
demandsService.update(demand);
guideServiceService.update(guideService);
System.out.println(guideService.getDemandIdList());
return 1006;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int confirmed(int did, int gid){
Demands demand = demandsService.getDemandById(did);
GuideService guideService = guideServiceService.getGuideServiceById(gid);
demand.setStatus(2);
demand.setGuideServiceId(gid);
guideService.setStatus(2);
guideService.setDemandId(did);
demandsService.update(demand);
guideServiceService.update(guideService);
return 1007;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public List<GuideService> confirmedPage(int did){
Demands demand = demandsService.getDemandById(did);
List<Integer> guideServiceIdList = demand.getGuideServiceIdList();
List<GuideService> guideServiceList = new ArrayList<>();
for(int number : guideServiceIdList) {
GuideService guideService = guideServiceService.getGuideServiceById(number);
guideServiceList.add(guideService);
}
return guideServiceList;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int refuse(int did){
Demands demand = demandsService.getDemandById(did);
int gid = demand.getGuideServiceId();
GuideService guideService = guideServiceService.getGuideServiceById(gid);
List<Integer> demandIdList = guideService.getDemandIdList();
if (demandIdList == null) {
guideService.setStatus(0);
}else {
guideService.setStatus(1);
}
List<Integer> guideServiceIdList = demand.getGuideServiceIdList();
if(guideServiceIdList == null){
demand.setStatus(0);
}else {
demand.setStatus(1);
}
demand.setGuideServiceId(null);
guideService.setDemandId(null);
demandsService.update(demand);
guideServiceService.update(guideService);
return 1;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int finish(int did){
Demands demand = demandsService.getDemandById(did);
int gid = demand.getGuideServiceId();
GuideService guideService = guideServiceService.getGuideServiceById(gid);
demand.setStatus(3);
demand.setGuideServiceIdList(null);
guideService.setStatus(3);
guideService.setDemandIdList(null);
demandsService.update(demand);
guideServiceService.update(guideService);
return 1;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int delete(int did){
Demands demand = demandsService.getDemandById(did);
demand.setStatus(4);
demandsService.update(demand);
return 1;
}
public static boolean isRangeWithinRange(LocalDate startDate1, LocalDate endDate1, LocalDate startDate2, LocalDate endDate2) {
// 第一个范围的起始日期必须在第二个范围内或与其起始日期相同
return !startDate1.isBefore(startDate2) && !endDate1.isAfter(endDate2);
}
/**
* @description:
* @param: gsumdsumddateedate
* @return: float
* @author: wuyifan
* @date: 2024/5/28 20:35
*/
@Override
public double timeScore(int gsum, String gddate, String gedate, int dsum, String dddate, String dedate){
double score = 0;
int difference = gsum - dsum;
if (abs(difference) < 15 ){
score += 10 / (float)(abs(difference) + 1);
}
// 使用DateTimeFormatter将字符串转换为LocalDate对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate1 = LocalDate.parse(dddate, formatter);
LocalDate endDate1 = LocalDate.parse(dedate, formatter);
LocalDate startDate2 = LocalDate.parse(gddate, formatter);
LocalDate endDate2 = LocalDate.parse(gedate, formatter);
// 判断第一个范围是否在第二个范围内
boolean isRange1WithinRange2 = isRangeWithinRange(startDate1, endDate1, startDate2, endDate2);
if (isRange1WithinRange2){
score += 100;
}
return score;
}
/**
* @description: Jaccard
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:35
*/
public static double jaccardSimilarity(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
Set<Character> set1 = new HashSet<>();
Set<Character> set2 = new HashSet<>();
for (char c : s1.toCharArray()) {
set1.add(c);
}
for (char c : s2.toCharArray()) {
set2.add(c);
}
Set<Character> intersection = new HashSet<>(set1);
intersection.retainAll(set2);
Set<Character> union = new HashSet<>(set1);
union.addAll(set2);
return (double) intersection.size() / union.size();
}
/**
* @description:
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:35
*/
private static Map<Character, Integer> getCharacterFrequency(String s) {
Map<Character, Integer> frequencyMap = new HashMap<>();
for (char c : s.toCharArray()) {
frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
}
return frequencyMap;
}
public static double cosineSimilarity(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
Map<Character, Integer> freq1 = getCharacterFrequency(s1);
Map<Character, Integer> freq2 = getCharacterFrequency(s2);
double dotProduct = 0.0;
double mag1 = 0.0;
double mag2 = 0.0;
for (char c : freq1.keySet()) {
if (freq2.containsKey(c)) {
dotProduct += freq1.get(c) * freq2.get(c);
}
mag1 += Math.pow(freq1.get(c), 2);
}
for (char c : freq2.keySet()) {
mag2 += Math.pow(freq2.get(c), 2);
}
mag1 = Math.sqrt(mag1);
mag2 = Math.sqrt(mag2);
return dotProduct / (mag1 * mag2);
}
/**
* @description: Dice
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:25
*/
public static double diceCoefficient(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
int intersection = 0;
for (int i = 0; i < s1.length() - 1; i++) {
String bigram = s1.substring(i, i + 2);
if (s2.contains(bigram)) {
intersection++;
}
}
int union = s1.length() + s2.length() - intersection;
return (double) (2 * intersection) / union;
}
/**
* @description: N-gram
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:22
*/
private static Set<String> generateNGrams(String s, int n) {
if (s == null || s.length() < n || n <= 0) {
throw new IllegalArgumentException("Invalid input string or n-gram size");
}
if (s.isEmpty()) {
return new HashSet<>(); // 返回空集合
}
Set<String> nGrams = new HashSet<>();
for (int i = 0; i <= s.length() - n; i++) {
nGrams.add(s.substring(i, i + n));
}
return nGrams;
}
public static double bigramSimilarity(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
Set<String> bigrams1 = generateNGrams(s1, 2);
Set<String> bigrams2 = generateNGrams(s2, 2);
Set<String> commonBigrams = new HashSet<>(bigrams1);
commonBigrams.retainAll(bigrams2);
Set<String> allBigrams = new HashSet<>(bigrams1);
allBigrams.addAll(bigrams2);
return (double) commonBigrams.size() / allBigrams.size();
}
/**
* @description:
* @param: gmessagedmessage
* @return: float
* @author: wuyifan
* @date: 2024/5/28 20:35
*/
@Override
public double messageScore(String gmessage, String dmessage){
double score = 0;
double similarity1 = jaccardSimilarity(gmessage, dmessage);
double similarity2 = cosineSimilarity(gmessage, dmessage);
double similarity3 = diceCoefficient(gmessage, dmessage);
double similarity4 = bigramSimilarity(gmessage, dmessage);
score = similarity1 + similarity2 + similarity3 + similarity4;
return score;
}
}

@ -1,17 +0,0 @@
package com.softegg.freetogo.Evaluate.Dao;
import com.softegg.freetogo.Evaluate.bean.Evaluations;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @description: Jpa
* @author: zhanglinhao
* @date: 2024/5/10 9:27
*/
public interface EvaluateRepository extends JpaRepository<Evaluations, Integer> {
List<Evaluations> findByEditorPhone(String phone);
List<Evaluations> findByEditedPhone(String phone);
}

@ -1,40 +0,0 @@
package com.softegg.freetogo.Evaluate.bean;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @description:
* @author:zhanglinhao
* @date:2024/5/10 9:07
*/
@Entity
@Table(name = "evaluation")
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class Evaluations {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int eid;//评价id
@Column(name = "etorname")
private String editorName;//评价者姓名
@Column(name = "etorphone")
private String editorPhone;//评价者电话
@Column(name = "etedname")
private String editedName;//被评价者姓名
@Column(name = "etedphone")
private String editedPhone;//被评价者电话
@Column(name = "createtime")
private String ct;//创建日期
@Column(name = "modifytime")
private String mt;//编辑日期
@Column
private String ebody;//评价本体
@Column
private int satisfaction;//满意度整数1-5
}

@ -1,101 +0,0 @@
package com.softegg.freetogo.Evaluate.controller;
import com.softegg.freetogo.Evaluate.bean.Evaluations;
import com.softegg.freetogo.Evaluate.service.EvaluateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @description:
* @author: zhanglinhao
* @date: 2024/5/11 17:33
*/
@RestController
@RequestMapping("/evaluate")
public class EvaluationController {
@Autowired
EvaluateService evaluateService;
/**
* @description:
* @param: null
* @return: java.util.List<com.softegg.freetogo.Evaluate.bean.Evaluations>
* @author: zhanglinhao
* @date: 2024/5/12 0:11
*/
@GetMapping("findAllEvaluation")
public List<Evaluations> findAllEvaluation() {
return evaluateService.evaluationList();
}
/**
* @description:
* @param: ebody
* @return: void
* @author: zhanglinhao
* @date: 2024/5/12 0:28
*/
@PostMapping("addEvaluation")
public void addEvaluation(@RequestBody Map<String, Evaluations> ebody) {
Evaluations evaluation = ebody.get("evaluation");
evaluateService.addEvaluation(evaluation);
}
/**
* @description:
* @param: phone
* @return: java.util.List<com.softegg.freetogo.Evaluate.bean.Evaluations>
* @author: zhanglinhao
* @date: 2024/5/12 0:30
*/
@GetMapping("evaluationByPhone")
public List<Evaluations> evaluationByPhone(String phone) {
return evaluateService.getEListByPhone(phone);
}
/**
* @description:
* @param: eid
* @param: ebody
* @return: void
* @author: zhanglinhao
* @date: 2024/5/12 13:31
*/
@GetMapping("editEvaluation")
public void editEvaluation(int eid, String ebody) {
evaluateService.editEvaluation(eid, ebody);
}
/**
* @description:
* @param: eid
* @return: void
* @author: zhanglinhao
* @date: 2024/5/12 13:32
*/
@GetMapping("deleteEvaluation")
public void deleteEvaluation(int eid) {
evaluateService.deleteEvaluation(eid);
}
/**
* @description:
* @param: phone
* @return: int
* @author: zhanglinhao
* @date: 2024/5/12 13:39
*/
@GetMapping("getSatisfaction")
public String getSatisfaction(String phone) {
List<Evaluations> elist = evaluateService.getEvaluatedByPhone(phone);
float sumOfSatisfaction = 0;
for (Evaluations evaluation : elist) {
sumOfSatisfaction += evaluation.getSatisfaction();
}
System.out.println("查询满意度:"+ sumOfSatisfaction);
return Float.toString(sumOfSatisfaction /elist.size());
}
}

@ -1,26 +0,0 @@
package com.softegg.freetogo.Evaluate.service;
import com.softegg.freetogo.Evaluate.bean.Evaluations;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @author:zhanglinhao
* @date:2024/5/10 8:52
*/
@Service
public interface EvaluateService {
List<Evaluations> evaluationList();//获取所有评论
List<Evaluations> getEListByPhone(String phone);//根据电话筛选评价
List<Evaluations> getEvaluatedByPhone(String phone);
void addEvaluation(Evaluations evaluation);//添加评论
void editEvaluation(int eid, String ebody);//编辑评论
void deleteEvaluation(int eid);//删除评论
}

@ -1,116 +0,0 @@
package com.softegg.freetogo.Evaluate.service;
import com.softegg.freetogo.Evaluate.Dao.EvaluateRepository;
import com.softegg.freetogo.Evaluate.bean.Evaluations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
/**
* @description:
* @author:zhanglinhao
* @date:2024/5/10 9:25
*/
@Component
public class EvaluateServiceImpl implements EvaluateService {
@Autowired
EvaluateRepository evaluateRepository;
/**
* @description:
* @param: null
* @return: void
* @author: zhanglinhao
* @date: 2024/5/10 9:25
*/
@Override
public List<Evaluations> evaluationList() {
System.out.println("查询评论");
return evaluateRepository.findAll();
}
/**
* @description:
* @param: phone
* @return: java.util.List<com.softegg.freetogo.Evaluate.bean.Evaluations>
* @author: zhanglinhao
* @date: 2024/5/11 16:28
*/
@Override
public List<Evaluations> getEListByPhone(String phone) {
System.out.println("查询"+phone+"的评论");
return evaluateRepository.findByEditorPhone(phone);
}
/**
* @description:
* @param: phone
* @return: java.util.List<com.softegg.freetogo.Evaluate.bean.Evaluations>
* @author: zhanglinhao
* @date: 2024/5/11 16:28
*/
@Override
public List<Evaluations> getEListByPhone(String phone) {
System.out.println("查询" + phone + "的评论");
return evaluateRepository.findByEditorPhone(phone);
}
/**
* @description:
* @param: phone
* @return: java.util.List<com.softegg.freetogo.Evaluate.bean.Evaluations>
* @author: zhanglinhao
* @date: 2024/5/12 21:21
*/
@Override
public List<Evaluations> getEvaluatedByPhone(String phone) {
return evaluateRepository.findByEditedPhone(phone);
}
/**
* @description:
* @param: evaluation
* @return: void
* @author: zhanglinhao
* @date: 2024/5/10 21:20
*/
@Override
public void addEvaluation(Evaluations evaluation) {
evaluateRepository.save(evaluation);
System.out.println("添加评论" + evaluation.getEbody());
}
/**
* @description:
* @param: eid
* @return: void
* @author: zhanglinhao
* @date: 2024/5/11 17:10
*/
@Override
public void editEvaluation(int eid, String ebody) {
System.out.println("编辑评论:" + eid);
Optional<Evaluations> opt = evaluateRepository.findById(eid);
if (opt.isPresent()) {
Evaluations evaluation = opt.get();
evaluation.setEbody(ebody);
evaluateRepository.save(evaluation);
System.out.println("编辑成功:" + eid);
}
}
/**
* @description:
* @param: eid
* @return: void
* @author: zhanglinhao
* @date: 2024/5/11 17:28
*/
@Override
public void deleteEvaluation(int eid) {
evaluateRepository.deleteById(eid);
System.out.println("删除评论:" + eid);
}
}

@ -0,0 +1,119 @@
package com.softegg.freetogo.GuideMatch.controller;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.GuideService.bean.GuideService;
import com.softegg.freetogo.GuideService.service.GuideServiceService;
import com.softegg.freetogo.GuideMatch.service.GuideMatchService;
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/30 10:47
*/
@RestController
//@CrossOrigin(origins = "*")
@RequestMapping("/GuideMatch")
public class GuideMatchController {
@Autowired
GuideMatchService guideMatchService;
@Autowired
UsersService usersService;
@Autowired
GuideServiceService guideServiceService;
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/5/30 20:48
*/
@GetMapping("register")
public List<Demands> GuideMatch(int gid) {
System.out.println("需匹配的gid:" + gid);
return guideMatchService.guideMatchAccount(gid);
}
/**
* @description:
* @param: map
* @return: java.lang.int
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("match")
public int Match(@RequestBody Map<String, Object> map) {
int gid = Integer.parseInt(map.get("gid").toString());
System.out.println("接收的gid:"+gid);
int did = Integer.parseInt(map.get("did").toString());
System.out.println("接收的did:"+did);
return guideMatchService.match(gid, did);
}
/**
* @description:
* @param: gid
* @return: java.lang.Demands
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@GetMapping("confirmedPage")
public List<Demands> confirmedpage(int gid) {
System.out.println("接收的gid:"+gid);
return guideMatchService.confirmedPage(gid);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("confirmed")
public int confirmed(@RequestBody Map<String, Object> map) {
int gid = Integer.parseInt(map.get("gid").toString());
System.out.println("接收的did:"+gid);
int did = Integer.parseInt(map.get("did").toString());
System.out.println("接收的did:"+did);
return guideMatchService.confirmed(gid, did);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("refuse")
public int refuse(@RequestBody Map<String, Object> map) {
int gid = (int) map.get("gid");
System.out.println("接收的gid:"+gid);
return guideMatchService.refuse(gid);
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: wuyifan
* @date: 2024/6/11 1012
*/
@PostMapping("delete")
public int delete(@RequestBody Map<String, Object> map) {
int gid = (int) map.get("gid");
System.out.println("接收的gid:"+gid);
return guideMatchService.delete(gid);
}
}

@ -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,397 @@
package com.softegg.freetogo.GuideMatch.service;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.GuideService.bean.GuideService;
import com.softegg.freetogo.Demand.service.DemandsService;
import com.softegg.freetogo.User.service.UsersService;
import com.softegg.freetogo.GuideService.service.GuideServiceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import static java.lang.Math.abs;
/**
* description:
* @author:wuyifan
* date:2024/5/28 19:51
*/
@Component
public class GuideMatchServiceImpl implements GuideMatchService {
@Autowired
DemandsService demandsService;
@Autowired
UsersService usersService;
@Autowired
GuideServiceService guideServiceService;
/**
* @description:
* @param: city
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public List<Demands> guideMatchAccount(int gid){
GuideService guideService = guideServiceService.getGuideServiceById(gid);
int guideServiceSumDay = Integer.parseInt(guideService.getSumDay());
String guideServiceDepartureDate = guideService.getDepartureDate();
String guideServiceEndDate = guideService.getEndDate();
String guideServiceMessage = guideService.getMessage();
List<Demands> dlist = demandsService.getDemandsByCity(guideService.getCity());
Iterator<Demands> iterator = dlist.iterator();
while (iterator.hasNext()) {
Demands demand = iterator.next();
if (demand.getStatus() > 1) {
iterator.remove(); // 使用迭代器的 remove 方法
}
}
int length = dlist.size();
double[] sumScores = new double[length];
int i = 0;
for (Demands demands : dlist) {
double sumScore = 0;
int demandsSumDay = Integer.parseInt(demands.getSumDay());
String demandsDepartureDate = demands.getDepartureDate();
String demandsEndDate = demands.getEndDate();
String demandsMessage = demands.getMessage();
double timeScore = timeScore(guideServiceSumDay,guideServiceDepartureDate,guideServiceEndDate,demandsSumDay,demandsDepartureDate,demandsEndDate);
double messageScore = messageScore(guideServiceMessage, demandsMessage);
sumScore += timeScore + messageScore;
sumScores[i] = sumScore;
i++;
}
// 创建一个包含索引和值的列表
List<Map.Entry<Double, Demands>> list = new ArrayList<>();
for (int j = 0; j < sumScores.length; j++) {
list.add(new AbstractMap.SimpleEntry<>(sumScores[j], dlist.get(j)));
}
// 根据sumScores的元素大小对 list 进行排序
list.sort(new Comparator<Map.Entry<Double, Demands>>() {
@Override
public int compare(Map.Entry<Double, Demands> o1, Map.Entry<Double, Demands> o2) {
return o2.getKey().compareTo(o1.getKey());
}
});
List<Demands> newdList = new ArrayList<>();
for (Map.Entry<Double, Demands> entry : list) {
newdList.add(entry.getValue());
}
return newdList;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int match(int gid, int did){
Demands demand = demandsService.getDemandById(did);
GuideService guideService = guideServiceService.getGuideServiceById(gid);
demand.setStatus(1);
List<Integer> guideServiceIdList = demand.getGuideServiceIdList();
if (guideServiceIdList == null) {
guideServiceIdList = new ArrayList<>();
}
if(!guideServiceIdList.contains(gid)){
guideServiceIdList.add(gid);
}
demand.setGuideServiceIdList(guideServiceIdList);
// List<Integer> demandIdList = guideService.getDemandIdList();
// if (demandIdList == null) {
// demandIdList = new ArrayList<>();
// }
// demandIdList.add(did);
// guideService.setDemandIdList(demandIdList);
demandsService.update(demand);
guideServiceService.update(guideService);
System.out.println(demand.getGuideServiceIdList());
return 1006;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public List<Demands> confirmedPage(int gid){
GuideService guideService = guideServiceService.getGuideServiceById(gid);
List<Integer> demandIdList = guideService.getDemandIdList();
List<Demands> demandsList = new ArrayList<>();
for(int number : demandIdList) {
Demands demand = demandsService.getDemandById(number);
demandsList.add(demand);
}
return demandsList;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int confirmed(int gid, int did){
Demands demand = demandsService.getDemandById(did);
GuideService guideService = guideServiceService.getGuideServiceById(gid);
demand.setStatus(2);
demand.setGuideServiceId(gid);
guideService.setStatus(2);
guideService.setDemandId(did);
demandsService.update(demand);
guideServiceService.update(guideService);
return 1007;
}
/**
* @description:
* @param: did,gid
* @return: int
* author: wuyifan
* @date: 2024/5/28 19:52
*/
@Override
public int refuse(int gid){
GuideService guideService = guideServiceService.getGuideServiceById(gid);
int did = guideService.getDemandId();
Demands demand = demandsService.getDemandById(gid);
List<Integer> demandIdList = guideService.getDemandIdList();
if (demandIdList == null) {
guideService.setStatus(0);
}else {
guideService.setStatus(1);
}
List<Integer> guideServiceIdList = demand.getGuideServiceIdList();
if(guideServiceIdList == null){
demand.setStatus(0);
}else {
demand.setStatus(1);
}
guideService.setDemandId(null);
demand.setGuideServiceId(null);
demandsService.update(demand);
guideServiceService.update(guideService);
return 1;
}
@Override
public int delete(int gid){
GuideService guideService = guideServiceService.getGuideServiceById(gid);
guideService.setStatus(4);
guideServiceService.update(guideService);
return 1;
}
public static boolean isRangeWithinRange(LocalDate startDate1, LocalDate endDate1, LocalDate startDate2, LocalDate endDate2) {
return !startDate1.isBefore(startDate2) && !endDate1.isAfter(endDate2);
}
/**
* @description:
* @param: gsumdsumddateedate
* @return: float
* @author: wuyifan
* @date: 2024/5/28 20:35
*/
@Override
public double timeScore(int gsum, String gddate, String gedate, int dsum, String dddate, String dedate){
double score = 0;
int difference = gsum - dsum;
if (abs(difference) < 15 ){
score += 10 / (float)(abs(difference) + 1);
}
// 使用DateTimeFormatter将字符串转换为LocalDate对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate1 = LocalDate.parse(dddate, formatter);
LocalDate endDate1 = LocalDate.parse(dedate, formatter);
System.out.println(startDate1);
System.out.println(endDate1);
LocalDate startDate2 = LocalDate.parse(gddate, formatter);
LocalDate endDate2 = LocalDate.parse(gedate, formatter);
System.out.println(startDate2);
System.out.println(endDate2);
// 判断第一个范围是否在第二个范围内
boolean isRange1WithinRange2 = isRangeWithinRange(startDate1, endDate1, startDate2, endDate2);
if (isRange1WithinRange2){
score += 100;
}
return score;
}
/**
* @description: Jaccard
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:35
*/
public static double jaccardSimilarity(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
Set<Character> set1 = new HashSet<>();
Set<Character> set2 = new HashSet<>();
for (char c : s1.toCharArray()) {
set1.add(c);
}
for (char c : s2.toCharArray()) {
set2.add(c);
}
Set<Character> intersection = new HashSet<>(set1);
intersection.retainAll(set2);
Set<Character> union = new HashSet<>(set1);
union.addAll(set2);
return (double) intersection.size() / union.size();
}
/**
* @description:
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:35
*/
private static Map<Character, Integer> getCharacterFrequency(String s) {
Map<Character, Integer> frequencyMap = new HashMap<>();
for (char c : s.toCharArray()) {
frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
}
return frequencyMap;
}
public static double cosineSimilarity(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
Map<Character, Integer> freq1 = getCharacterFrequency(s1);
Map<Character, Integer> freq2 = getCharacterFrequency(s2);
double dotProduct = 0.0;
double mag1 = 0.0;
double mag2 = 0.0;
for (char c : freq1.keySet()) {
if (freq2.containsKey(c)) {
dotProduct += freq1.get(c) * freq2.get(c);
}
mag1 += Math.pow(freq1.get(c), 2);
}
for (char c : freq2.keySet()) {
mag2 += Math.pow(freq2.get(c), 2);
}
mag1 = Math.sqrt(mag1);
mag2 = Math.sqrt(mag2);
return dotProduct / (mag1 * mag2);
}
/**
* @description: Dice
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:25
*/
public static double diceCoefficient(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
int intersection = 0;
for (int i = 0; i < s1.length() - 1; i++) {
String bigram = s1.substring(i, i + 2);
if (s2.contains(bigram)) {
intersection++;
}
}
int union = s1.length() + s2.length() - intersection;
return (double) (2 * intersection) / union;
}
/**
* @description: N-gram
* @param: String
* @return: float
* @author: wuyifan
* @date: 2024/5/30 20:22
*/
private static Set<String> generateNGrams(String s, int n) {
if (s == null || s.length() < n || n <= 0) {
throw new IllegalArgumentException("Invalid input string or n-gram size");
}
if (s.isEmpty()) {
return new HashSet<>(); // 返回空集合
}
Set<String> nGrams = new HashSet<>();
for (int i = 0; i <= s.length() - n; i++) {
nGrams.add(s.substring(i, i + n));
}
return nGrams;
}
public static double bigramSimilarity(String s1, String s2) {
if (s1 == null || s2 == null || s1.isEmpty() || s2.isEmpty()) {
return 0.0; // 如果任何一个字符串为空直接返回0
}
Set<String> bigrams1 = generateNGrams(s1, 2);
Set<String> bigrams2 = generateNGrams(s2, 2);
Set<String> commonBigrams = new HashSet<>(bigrams1);
commonBigrams.retainAll(bigrams2);
Set<String> allBigrams = new HashSet<>(bigrams1);
allBigrams.addAll(bigrams2);
return (double) commonBigrams.size() / allBigrams.size();
}
/**
* @description:
* @param: gmessagedmessage
* @return: float
* @author: wuyifan
* @date: 2024/5/28 20:35
*/
@Override
public double messageScore(String gmessage, String dmessage){
double score = 0;
double similarity1 = jaccardSimilarity(gmessage, dmessage);
double similarity2 = cosineSimilarity(gmessage, dmessage);
double similarity3 = diceCoefficient(gmessage, dmessage);
double similarity4 = bigramSimilarity(gmessage, dmessage);
score = similarity1 + similarity2 + similarity3 + similarity4;
return score;
}
}

@ -1,13 +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);
}

@ -6,13 +6,15 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
/**
* @description:guideService
* @author:wuyifan
* @date:2024/5/13 9:14
*/
@Entity
@Table(name="guideService")
@Table(name = "guideService")
@Setter
@Getter
@NoArgsConstructor
@ -20,25 +22,32 @@ import lombok.Setter;
public class GuideService {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer uid;
private Integer gid;
@Column
private String phone;//导游手机号码
@Column(name="guide_gender")
@Column(name = "guide_gender")
private boolean guideGender;//导游性别 ture:male, false:female
@Column
private String nickname;//发布需求的导游昵称信息
@Column(name="create_time")
@Column(name = "create_time")
private String createTime;//服务发布时间
@Column(name="departure_date")
@Column(name = "departure_date")
private String departureDate;//导游服务起始日期
@Column(name="end_date")
@Column(name = "end_date")
private String endDate;//导游服务结束日期
@Column(name="sum_day")
@Column(name = "sum_day")
private String sumDay;//导游服务总天数
@Column
private String province;//导游服务的目的省份
@Column
private String city;//导游服务的目的城市
@Column
private String message;//导游服务备注内容
@Column
private Integer status;//导游服务状态 0未匹配 1已匹配 2已完成
private Integer status;//导游服务状态 0未匹配 1请求匹配 2已完成匹配 3已完成所有服务
@Column
private Integer demandId;//导游服务最终匹配到的游客需求id
@ElementCollection
@Column
private List<Integer> demandIdList;//游客需求申请匹配到的导游服务id
}

@ -1,13 +1,13 @@
package com.softegg.freetogo.GuideService.controller;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.GuideService.bean.GuideService;
import com.softegg.freetogo.GuideService.service.GuideServiceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @description:Guide
@ -22,7 +22,9 @@ public class GuideServiceController {
private GuideServiceService guideServiceService;
@GetMapping("findAll")
public List<GuideService> findAll() {return guideServiceService.findAll();}
public List<GuideService> findAll() {
return guideServiceService.findAll();
}
@GetMapping("add")
public String add(String phone,
@ -32,24 +34,34 @@ public class GuideServiceController {
String dDate,
String eDate,
String sDay,
String procvince,
String city,
String message,
Integer status) {
Integer status,
Integer demandId,
List<Integer> demandIdList) {
GuideService guideService = new GuideService();
setDemands(phone, gGender, nkn, ct, dDate, eDate, sDay, city, message, status, guideService);
setDemands(phone, gGender, nkn, ct, dDate, eDate, sDay, procvince, city, message, status, guideService, demandId, demandIdList);
guideServiceService.add(guideService);
return "添加成功";
}
@GetMapping("delbyid")
public String delById(int id) {
guideServiceService.deleteById(id);
return "删除成功";
@PostMapping("delbyid")
public String delById(@RequestBody Map<String, Object> map) {
int gid = (int) map.get("gid");
guideServiceService.deleteById(gid);
return "1";
}
@GetMapping("findbyid")
public GuideService getUserById(int id) {
return guideServiceService.getGuideServiceById(id);
public GuideService getUserById(int gid) {
return guideServiceService.getGuideServiceById(gid);
}
@GetMapping("getByPhone")
public List<GuideService> getByPhone(String phone) {
System.out.println("根据手机号获取游客需求信息:" + phone);
return guideServiceService.getGuideServiceByPhone(phone);
}
@GetMapping("update")
@ -61,16 +73,19 @@ public class GuideServiceController {
String dDate,
String eDate,
String sDay,
String province,
String city,
String message,
Integer status) {
Integer status,
Integer demandId,
List<Integer> demandIdList) {
GuideService guideService = guideServiceService.getGuideServiceById(id);
setDemands(phone, gGender, nkn, ct, dDate, eDate, sDay, city, message, status, guideService);
setDemands(phone, gGender, nkn, ct, dDate, eDate, sDay, province, city, message, status, guideService, demandId, demandIdList);
guideServiceService.update(guideService);
return "更新成功";
}
private void setDemands(String phone, boolean gGender, String nkn, String ct, String dDate, String eDate, String sDay, String city, String message,Integer status, GuideService guideservice) {
private void setDemands(String phone, boolean gGender, String nkn, String ct, String dDate, String eDate, String sDay, String province, String city, String message, Integer status, GuideService guideservice, Integer demandId, List<Integer> demandIdList) {
guideservice.setPhone(phone);
guideservice.setGuideGender(gGender);
guideservice.setNickname(nkn);
@ -78,9 +93,11 @@ public class GuideServiceController {
guideservice.setDepartureDate(dDate);
guideservice.setEndDate(eDate);
guideservice.setSumDay(sDay);
guideservice.setProvince(province);
guideservice.setCity(city);
guideservice.setMessage(message);
guideservice.setStatus(status);
// demand.setGuideGender(gGender);
guideservice.setDemandId(demandId);
guideservice.setDemandIdList(demandIdList);
}
}

@ -3,6 +3,7 @@ package com.softegg.freetogo.GuideService.service;
import com.softegg.freetogo.GuideService.bean.GuideService;
import java.util.List;
/**
* @description:
* @author:wuyifan
@ -18,4 +19,10 @@ public interface GuideServiceService {
GuideService getGuideServiceById(int id);//获得对应id需求
void update(GuideService guideService);//更新需求信息
List<GuideService> getGuideServiceByPhone(String phone);//获得对应手机号的导游用户的所有服务
List<GuideService> getGuideServiceByCity(String city);//根据所选城市获得导游服务列表
List<GuideService> getGuideServiceByProvince(String province);//根据所选城市获得导游服务列表
}

@ -0,0 +1,128 @@
package com.softegg.freetogo.GuideService.service;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.GuideService.Dao.GuideServiceRepository;
import com.softegg.freetogo.GuideService.bean.GuideService;
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/13 9:19
*/
@Component
public class GuideServiceServiceImpl implements GuideServiceService {
@Autowired
private GuideServiceRepository GuideServiceRepository;
@Autowired
private GuideServiceRepository guideServiceRepository;
/**
* @description:
* @param: null
* @return: java.util.List<com.softegg.freetogo.GuideService.Bean.GuideService>
* @author: wuyifan
* @date: 2024/5/13 9:21
*/
public List<GuideService> findAll() {
System.out.println("查询成功");
return GuideServiceRepository.findAll();
}
/**
* @description: guideService
* @param: guideService
* @return: void
* @author: wuyifan
* @date: 2024/5/13 922
*/
public void add(GuideService guideService) {
GuideServiceRepository.save(guideService);
System.out.println("添加成功");
}
/**
* @description: id
* @param: id
* @return: com.softegg.freetogo.GuideService.Bean.GuideService
* @author: wuyifan
* @date: 2024/5/10 20:02
*/
public GuideService getGuideServiceById(int id) {
return GuideServiceRepository.findById(id).orElse(null);
}
/**
* @description: gid
* @param: id
* @return: void
* @author: zhanglinhao
* @date: 2024/5/9 22:53
*/
public void deleteById(int gid) {
guideServiceRepository.deleteById(gid);
System.out.println("删除成功:" + gid);
}
/**
* @description:
* @param: guideService
* @return: void
* @author: wuyifan
* @date: 2024/5/10 20:05
*/
public void update(GuideService guideService) {
GuideServiceRepository.save(guideService);
System.out.println("服务更新成功");
}
/**
* @description:
* @param: phone
* @return: com.softegg.freetogo.GuideService.Bean.GuideService
* @author: wuyifan
* @date: 2024/5/16 15:18
*/
public List<GuideService> getGuideServiceByPhone(String phone) {
List<GuideService> guideServiceList = GuideServiceRepository.findByPhone(phone);
Iterator<GuideService> iterator = guideServiceList.iterator();
while (iterator.hasNext()) {
GuideService guideService = iterator.next();
if (guideService.getStatus() == 4) {
iterator.remove(); // 使用迭代器的 remove 方法
}
}
return guideServiceList;
}
/**
* @description:
* @param: city
* @return: com.softegg.freetogo.GuideService.Bean.GuideService
* @author: wuyifan
* @date: 2024/5/16 15:30
*/
public List<GuideService> getGuideServiceByCity(String city) {
return GuideServiceRepository.findByCity(city);
}
/**
* @description:
* @param: city
* @return: com.softegg.freetogo.GuideService.Bean.GuideService
* @author: wuyifan
* @date: 2024/5/16 15:30
*/
public List<GuideService> getGuideServiceByProvince(String province) {
return GuideServiceRepository.findByProvince(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

@ -1,79 +0,0 @@
package com.softegg.freetogo.Login.controller;
import com.softegg.freetogo.Login.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* @description:
* @author:zhanglinhao
* @date:2024/5/9 9:35
*/
@RestController
//@CrossOrigin(origins = "*")
@RequestMapping("/Login")
public class LoginController {
@Autowired
LoginService loginService;
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: zhanglinhao
* @date: 2024/5/9 22:44
*/
@PostMapping("login")
public int Login(@RequestBody Map<String, Object> map) {
System.out.println(map);
System.out.println("phone:" + map.get("phone").toString());
System.out.println("password" + map.get("password").toString());
int tag = loginService.loginAccount(map.get("name").toString(), map.get("password").toString());
System.out.println("LoginTag:" + tag);
=======
System.out.println("phone:" + map.get("phone").toString());
System.out.println("password" + map.get("password").toString());
int tag = loginService.loginAccount(map.get("name").toString(), map.get("password").toString());
System.out.println("LoginTag:" + tag);
>>>>>>> zhanglinhao_branch
return switch (tag) {
case 1000 -> 1;//登陆成功
case 1001 -> 2;//密码或账号错误
case 1002 -> 3;//该账户未注册
case 1005 -> 6;//未输入账号密码
case 1006 -> 7;//未输入账号
case 1007 -> 8;//未输入密码
case 1008 -> 9;//身份证输入错误
default -> 0;
};
}
/**
* @description:
* @param: map
* @return: java.lang.String
* @author: zhanglinhao
* @date: 2024/5/9 22:45
*/
@PostMapping("register")
public int Register(@RequestBody Map<String, Object> map) {
System.out.println(map);
int tag = loginService.registerAccount((String) map.get("name"), (String) map.get("password"), (String) map.get("phone"), (String) map.get("nickname"), (String) map.get("IDCard"));
System.out.println("RegisterTag:" + tag);
=======
int tag = loginService.registerAccount((String) map.get("name"), (String) map.get("password"), (String) map.get("phone"), (String) map.get("nickname"), (String) map.get("IDCard"));
System.out.println("RegisterTag:" + tag);
>>>>>>> zhanglinhao_branch
return switch (tag) {
case 1003 -> 4;//该账户已经注册
case 1004 -> 5;//注册成功
default -> 0;
};
}
}

@ -1,20 +0,0 @@
package com.softegg.freetogo.Login.service;
import org.springframework.stereotype.Service;
/**
* @description:
* @author:zhanglinhao
* @date:2024/5/9 8:37
*/
@Service
public interface LoginService {
int loginAccount(String phone, String password);//登录
// int registerAccount(String phone, String password);
int registerAccount(String name,
String password,
String phone,
String nickname,
String IDCard);//注册
}

@ -1,88 +0,0 @@
package com.softegg.freetogo.Login.service;
import com.softegg.freetogo.User.bean.Users;
import com.softegg.freetogo.User.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
=======
>>>>>>> zhanglinhao_branch
/**
* @description:
* @author:zhanglinhao
* @date:2024/5/9 9:33
*/
@Component
public class LoginServiceImpl implements LoginService {
@Autowired
UsersService usersService;
/**
* @description:
* @param: phone
* @param: password
* @return: int
* @author: zhanglinhao
* @date: 2024/5/9 22:46
*/
@Override
public int loginAccount(String phone, String password) {
if (phone.isEmpty() && password.isEmpty())
return 1005;//未输入账号密码
else if (phone.isEmpty())
return 1006;//未输入账号
else if (password.isEmpty())
return 1007;//未输入密码
if (usersService.isRegister(phone)) {
if (usersService.getUserByPhone(phone).getPassword().equals(password))
return 1000;//登录成功
else
return 1001;//密码或账号错误
} else
return 1002;//该账户未注册
}
/**
* @description:
* @param: name
* @param: password
* @param: phone
* @param: nickname
* @param: IDCard
* @return: int
* @author: zhanglinhao
* @date: 2024/5/11 15:57
*/
@Override
public int registerAccount(String name,
String password,
String phone,
String nickname,
String IDCard) {
if (usersService.isRegister(phone))
return 1003;//该账户已经注册
else if (IDCard.length() != 18)
return 1008;//身份证输入错误
else {
LocalDateTime currentTime = LocalDateTime.now();
System.out.println("注册信息:姓名:" + name + "密码:" + password + "电话:" + phone + "昵称:" + nickname + "身份证:" + IDCard);
Users user = new Users();
user.setPhone(phone);
user.setPassword(password);
user.setNickname(nickname);
user.setIDCard(IDCard);
user.setName(name);
user.setCreatetime((currentTime.getYear() + "-" + currentTime.getMonthValue() + "-" + currentTime.getDayOfMonth()));
user.setGender(isMale(IDCard));
usersService.add(user);
return 1004;//注册成功
}
}
boolean isMale(String IDCard) {
System.out.println("根据身份证判断性别:" + IDCard + " 第17位:" + IDCard.charAt(16));
return (int) IDCard.charAt(16) % 2 != 0;
}
}

@ -1,9 +0,0 @@
1000->1 登录成功
1001->2 密码或账号错误
1002->3 该账户未注册
1003->4 该账户已经注册
1004->5 注册成功
1005->6 未输入账号密码
1006->7 未输入账号
1007->8 身份证输入错误
1008->9

@ -0,0 +1,4 @@
package com.softegg.freetogo.Search.controller;
public class SearchController {
}

@ -0,0 +1,4 @@
package com.softegg.freetogo.Search.service;
public interface SearchService {
}

@ -0,0 +1,4 @@
package com.softegg.freetogo.Search.service;
public class SearchServiceImpl {
}

@ -1,10 +1,15 @@
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
@ -18,6 +23,8 @@ public class SendDemandController {
@Autowired
SendDemandService sendDemandService;
@Autowired
DemandsService demandsService;
/**
* @description:
@ -28,17 +35,38 @@ public class SendDemandController {
*/
@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"))){
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";
};
}
// @GetMapping("register")
// public String SendDemand(String city,String phone) {
// return switch (sendDemandService.sendnewDemandAccount(city,phone)){
// 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);
}
}

@ -9,5 +9,5 @@ import org.springframework.stereotype.Service;
*/
@Service
public interface SendDemandService {
int sendnewDemandAccount(String city, String phone, String date,String message);
int sendnewDemandAccount(String city, String phone, String date, String message);
}

@ -2,14 +2,13 @@ package com.softegg.freetogo.SendDemand.service;
import com.softegg.freetogo.Demand.bean.Demands;
import com.softegg.freetogo.Demand.service.DemandsService;
import com.softegg.freetogo.User.service.UsersService;
import com.softegg.freetogo.User.bean.Users;
import com.softegg.freetogo.User.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
@ -24,8 +23,9 @@ public class SendDemandServiceImpl implements SendDemandService {
DemandsService demandsService;
@Autowired
UsersService usersService;
/**
* @description:
* @description:
* @param: city
* @return: int
* @author: wuyifan
@ -33,7 +33,7 @@ public class SendDemandServiceImpl implements SendDemandService {
*/
@Override
public int sendnewDemandAccount(String city, String phone ,String date,String message) {
public int sendnewDemandAccount(String city, String phone, String date, String message) {
LocalDateTime currentDateTime = LocalDateTime.now();
//对获取的date信息进行处理
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@ -45,10 +45,6 @@ public class SendDemandServiceImpl implements SendDemandService {
String eDate = parts[1];
//获取整个导游服务的总天数
eDate = eDate.trim();
// ZonedDateTime zoneddDate = ZonedDateTime.parse(dDate);
// ZonedDateTime zonedeDate = ZonedDateTime.parse(eDate);
// LocalDate startDate = zoneddDate.toLocalDate();
// LocalDate endDate = zonedeDate.toLocalDate();
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate = LocalDate.parse(dDate, formatter2);
LocalDate endDate = LocalDate.parse(eDate, formatter2);

@ -1,11 +1,14 @@
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 com.softegg.freetogo.User.service.UsersService;
import com.softegg.freetogo.User.bean.Users;
import java.util.List;
import java.util.Map;
/**
@ -21,6 +24,8 @@ public class SendGuideServiceController {
SendGuideServiceService sendGuideServiceService;
@Autowired
UsersService usersService;
@Autowired
GuideServiceService guideServiceService;
/**
* @description:
@ -38,17 +43,34 @@ public class SendGuideServiceController {
case 1005 -> 1;//服务发送成功
default -> 0;
};
}
else{
} else {
return 2;//用户非导游
}
}
// @GetMapping("register")
// public String SendDemand(String city,String phone) {
// return switch (sendGuideServiceService.sendnewGuideServiceAccount(city,phone)){
// case 1006 -> "1";//需求发送成功
// default -> "0";
// };
// }
/**
* @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);
}
}

@ -2,14 +2,13 @@ package com.softegg.freetogo.SendGuideService.service;
import com.softegg.freetogo.GuideService.bean.GuideService;
import com.softegg.freetogo.GuideService.service.GuideServiceService;
import com.softegg.freetogo.User.service.UsersService;
import com.softegg.freetogo.User.bean.Users;
import com.softegg.freetogo.User.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
//import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
@ -24,6 +23,7 @@ public class SendGuideServiceServiceImpl implements SendGuideServiceService {
GuideServiceService guideServiceService;
@Autowired
UsersService usersService;
/**
* @description:
* @param: city
@ -32,7 +32,7 @@ public class SendGuideServiceServiceImpl implements SendGuideServiceService {
* @date: 2024/5/10 23:25
*/
@Override
public int sendnewGuideServiceAccount(String city, String phone, String date,String message) {
public int sendnewGuideServiceAccount(String city, String phone, String date, String message) {
LocalDateTime currentDateTime = LocalDateTime.now();
//对获取的date信息进行处理
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@ -47,12 +47,10 @@ public class SendGuideServiceServiceImpl implements SendGuideServiceService {
System.out.println(eDate);
dDate = dDate.trim();
eDate = eDate.trim();
dDate = dDate.substring(0, 10);
eDate = eDate.substring(0, 10);
System.out.println(dDate);
System.out.println(eDate);
// ZonedDateTime zoneddDate = ZonedDateTime.parse(dDate);
// ZonedDateTime zonedeDate = ZonedDateTime.parse(eDate);
// LocalDate startDate = zoneddDate.toLocalDate();
// LocalDate endDate = zonedeDate.toLocalDate();
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate = LocalDate.parse(dDate, formatter2);
LocalDate endDate = LocalDate.parse(eDate, formatter2);

@ -1,13 +0,0 @@
package com.softegg.freetogo.User.Dao;
import com.softegg.freetogo.User.bean.Users;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @description:Jpa
* @author:zhanglinhao
* @date:2024/5/8 8:50
*/
public interface UsersRepository extends JpaRepository<Users, Integer> {
Users findByPhone(String phone);//自定义函数,根据手机号进行查找返回对应对象
}

@ -1,60 +0,0 @@
package com.softegg.freetogo.User.bean;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @description:users
* @author:zhanglinhao
* @date:2024/5/7 15:36
*/
@Entity
@Table(name = "users")
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer uid;
@Column
private String name;
@Column
private String email;
@Column
private String password;
@Column
private String createtime;
@Column
private String IDCard;
@Column
private int reputation;
@Column
private boolean gender;//ture:male, false:female
@Column
private boolean membertype;//true:guide, false:visitor
@Column
private String phone;
@Column
private String nickname;
@Column
private int status;
public Users(String name, String email, String psw, String ct, int rpt, String phone, String nkn, String idc, boolean gender, boolean type, int status) {
this.name = name;
this.email = email;
this.password = psw;
this.createtime = ct;
this.reputation = rpt;
this.phone = phone;
this.nickname = nkn;
this.IDCard = idc;
this.gender = gender;
this.membertype = type;
this.status = status;
}
}

@ -1,217 +0,0 @@
package com.softegg.freetogo.User.controller;
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:Users
* @author:zhanglinhao
* @date:2024/5/8 8:28
*/
@RestController
//@CrossOrigin(origins = "*")
@RequestMapping("/Users")
public class UsersController {
@Autowired
private UsersService usersService;
/**
* @description: users
* @param: null
* @return: java.util.List<com.softegg.freetogo.User.bean.Users>
* @author: zhanglinhao
* @date: 2024/5/10 8:16
*/
@GetMapping("findAll")
public List<Users> findAll() {
System.out.println("响应查找所有数据");
return usersService.findAll();
}
/**
* @description:
* @param: name
* @param: email
* @param: psw
* @param: ct
* @param: rpt
* @param: phone
* @param: nkn
* @param: idc
* @param: gender
* @param: type
* @param: status
* @return: java.lang.String
* @author: zhanglinhao
* @date: 2024/5/10 8:17
*/
@GetMapping("add")
public String add(String name,
String email,
String password,
String createtime,
int reputation,
String phone,
String nickname,
String IDCard,
boolean gender,
boolean type,
int status) {
Users user = new Users(name, email, password, createtime, reputation, phone, nickname, IDCard, gender, type, status);
usersService.add(user);
System.out.println("添加用户");
return "添加成功";
}
/**
* @description: id
* @param: id
* @return: java.lang.String
* @author: zhanglinhao
* @date: 2024/5/10 8:17
*/
@GetMapping("delbyid")
public String delById(int id) {
usersService.deleteById(id);
System.out.println("通过id删除用户");
return "删除成功";
}
/**
* @description: id
* @param: id
* @return: com.softegg.freetogo.User.bean.Users
* @author: zhanglinhao
* @date: 2024/5/10 8:17
*/
@GetMapping("findbyid")
public Users getUserById(int id) {
System.out.println("通过id获取用户数据");
return usersService.getUserById(id);
}
/**
* @description: 使GET
* @param: name
* @param: email
* @param: password
* @param: ct
* @param: rpt
* @param: phone
* @param: nkn
* @param: idc
* @param: gender
* @param: type
* @param: status
* @return: java.lang.String
* @author: zhanglinhao
* @date: 2024/5/10 8:17
*/
@GetMapping("update")
public String update(String name,
String email,
String password,
String createtime,
int reputation,
String phone,
String nickname,
String IDCard,
boolean gender,
boolean type,
int status) {
Users User = usersService.getUserByPhone(phone);
System.out.println(User);
setUsers(name, email, password, createtime, reputation, phone, nickname, IDCard, gender, type, status, User);
usersService.update(User);
System.out.println("更新用户信息:" + User);
return "更新成功";
}
/**
* @description: 使POST
* @param: user
* @return: void
* @author: zhanglinhao
* @date: 2024/5/10 19:45
*/
@PostMapping("pupdate")
public boolean pupdate(@RequestBody Map<String, Map<String, Object>> user) {
Map<String, Object> ubody = user.get("user");
// System.out.println(ubody);
// System.out.println(ubody.get("uid"));
Users User = new Users((int) ubody.get("uid"), (String) ubody.get("name"), (String) ubody.get("email"), (String) ubody.get("password"), (String) ubody.get("createtime"), (String) ubody.get("IDCard"), (int) ubody.get("reputation"), (boolean) ubody.get("gender"), (boolean) ubody.get("membertype"), (String) ubody.get("phone"), (String) ubody.get("nickname"), (int) ubody.get("status"));
usersService.update(User);
return true;
}
@PostMapping("Pupdate")
public boolean Pupdate(@RequestBody Map<String, Users> user) {
Users ubody = user.get("user");
System.out.println(ubody);
// System.out.println(ubody.get("uid"));
Users User = new Users(ubody.getUid(), ubody.getName(), ubody.getEmail(), ubody.getPassword(), ubody.getCreatetime(), ubody.getIDCard(), ubody.getReputation(), ubody.isGender(), ubody.isMembertype(), ubody.getPhone(), ubody.getNickname(), ubody.getStatus());
usersService.update(User);
return true;
}
/**
* @description:
* @param: phone
* @return: com.softegg.freetogo.User.bean.Users
* @author: zhanglinhao
* @date: 2024/5/10 8:17
*/
@GetMapping("getByPhone")
public Users getByPhone(String phone) {
System.out.println("根据手机号获取用户信息:" + phone);
return usersService.getUserByPhone(phone);
}
/**
* @description: user
* @param: name
* @param: email
* @param: psw
* @param: ct
* @param: rpt
* @param: phone
* @param: nkn
* @param: idc
* @param: gender
* @param: type
* @param: status
* @param: user
* @return: void
* @author: zhanglinhao
* @date: 2024/5/10 8:18
*/
private void setUsers(String name,
String email,
String psw,
String ct,
int rpt,
String phone,
String nkn,
String idc,
boolean gender,
boolean type,
int status,
Users user) {
user.setName(name);
user.setGender(gender);
user.setPassword(psw);
user.setEmail(email);
user.setReputation(rpt);
user.setMembertype(type);
user.setCreatetime(ct);
user.setPhone(phone);
user.setNickname(nkn);
user.setIDCard(idc);
user.setStatus(status);
}
}

@ -1,103 +0,0 @@
package com.softegg.freetogo.User.service;
import com.softegg.freetogo.User.Dao.UsersRepository;
import com.softegg.freetogo.User.bean.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @description:
* @author: zhanglinhao
* @date: 2024/5/8 8:50
*/
@Component
public class UserServiceImpl implements UsersService {
@Autowired
private UsersRepository usersRepository;
/**
* @description:
* @param: null
* @return: java.util.List<com.softegg.freetogo.User.Bean.Users>
* @author: zhanglinhao
* @date: 2024/5/9 22:52
*/
public List<Users> findAll() {
System.out.println("查询成功");
return usersRepository.findAll();
}
/**
* @description: user
* @param: user
* @return: void
* @author: zhanglinhao
* @date: 2024/5/9 22:53
*/
public void add(Users user) {
usersRepository.save(user);
System.out.println("添加成功:" + user);
}
/**
* @description: id
* @param: id
* @return: void
* @author: zhanglinhao
* @date: 2024/5/9 22:53
*/
public void deleteById(int id) {
usersRepository.deleteById(id);
System.out.println("删除成功:" + id);
}
/**
* @description: id
* @param: id
* @return: com.softegg.freetogo.User.Bean.Users
* @author: zhanglinhao
* @date: 2024/5/9 22:54
*/
public Users getUserById(int id) {
return usersRepository.findById(id).orElse(null);
}
/**
* @description:
* @param: user
* @return: void
* @author: zhanglinhao
* @date: 2024/5/9 22:54
*/
public void update(Users user) {
usersRepository.save(user);
System.out.println("更新成功:" + user);
}
/**
* @description:
* @param: phone
* @return: boolean
* @author: zhanglinhao
* @date: 2024/5/9 22:54
*/
public boolean isRegister(String phone) {
Users users = usersRepository.findByPhone(phone);
System.out.println("正在验证用户是否注册:" + users);
return users != null;
}
/**
* @description:
* @param: phone
* @return: com.softegg.freetogo.User.Bean.Users
* @author: zhanglinhao
* @date: 2024/5/9 22:55
*/
public Users getUserByPhone(String phone) {
System.out.println("通过手机号查找用户:" + phone);
return usersRepository.findByPhone(phone);
}
}

@ -1,28 +0,0 @@
package com.softegg.freetogo.User.service;
import com.softegg.freetogo.User.bean.Users;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @author:zhanglinhaon
* @date:2024/5/7 16:06
*/
@Service
public interface UsersService {
List<Users> findAll();//查找所有用户
void add(Users user);//以user为用户入库
void deleteById(int id);//删除对应id用户
Users getUserById(int id);//获得对应id用户
void update(Users user);//更新用户信息
boolean isRegister(String phone);//判断该手机号(账号)是否已经入库
Users getUserByPhone(String phone);//根据手机号获得用户
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" packagePrefix="com.softegg.freetogo" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Loading…
Cancel
Save