Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -8,7 +8,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
public class MyWebConfigurer implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(new UserInterceptor()).addPathPatterns("/*/**").excludePathPatterns("/error","/login","/register","/findThePassword","/verifyCode","/sendActiveCode");
|
||||
// registry.addInterceptor(new UserInterceptor()).addPathPatterns("/*/**").excludePathPatterns("/error","/login","/register","/findThePassword","/verifyCode","/sendActiveCode");
|
||||
WebMvcConfigurer.super.addInterceptors(registry);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,92 @@
|
||||
package com.lovenav.controller;
|
||||
|
||||
import com.lovenav.entity.Attachment;
|
||||
import com.lovenav.entity.Config;
|
||||
import com.lovenav.service.AttachmentService;
|
||||
import com.lovenav.service.ConfigService;
|
||||
import org.apache.catalina.core.ApplicationContext;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.context.support.ServletContextResource;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.ServletContext;
|
||||
import java.io.*;
|
||||
import java.util.HashMap;
|
||||
|
||||
import static java.lang.System.out;
|
||||
|
||||
@RestController
|
||||
public class AttachmentController {
|
||||
//附件上传
|
||||
@Autowired
|
||||
AttachmentService attachmentService;
|
||||
@Autowired
|
||||
ConfigService configService;
|
||||
//上传附件
|
||||
@RequestMapping("/uploadfile")
|
||||
public HashMap<String, String> uploadFile(MultipartFile multipartFile,String cate,Config config) throws IOException {//@RequestPart("photos") MultipartFile multipartFile
|
||||
HashMap<String,String> map=new HashMap<>();
|
||||
Long id=null;
|
||||
if (multipartFile==null){
|
||||
map.put("msg","文件不能为空!");
|
||||
return map;
|
||||
}
|
||||
out.println(multipartFile.getOriginalFilename());
|
||||
map=attachmentService.upload(multipartFile,cate,id);
|
||||
config.setValue(map.get("id"));
|
||||
config.setType("image");
|
||||
map.put("msg",configService.addConfig(config));
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping(value = "/getAttachment",produces =MediaType.IMAGE_JPEG_VALUE)//,produces = MediaType.IMAGE_JPEG_VALUE
|
||||
@ResponseBody
|
||||
public ResponseEntity getAttachment(Config config) throws Exception {
|
||||
byte[] bytes1 ;
|
||||
Config config1=configService.selectAlreadyExist(config);
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
if (config1==null){
|
||||
bytes1= "没有该Config!".getBytes();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
return new ResponseEntity<byte[]>(bytes1, headers, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
Attachment attachment =attachmentService.selectAttachment(Long.valueOf(config1.getValue()));
|
||||
if (attachment==null){
|
||||
bytes1= "没有该Attachment!".getBytes();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
return new ResponseEntity<byte[]>(bytes1, headers, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
String fileUrl=attachment.getPath()+attachment.getFileName()+attachment.getSuffix();
|
||||
out.println(fileUrl);
|
||||
out.println(attachment.getSuffix().replace(".",""));
|
||||
File file = new File(fileUrl);
|
||||
FileInputStream inputStream = new FileInputStream(file);
|
||||
byte[] bytes = new byte[inputStream.available()];
|
||||
inputStream.read(bytes, 0, inputStream.available());
|
||||
//设置ContentType的值 IMAGE_JPEG在浏览器返回图片
|
||||
if(attachment.getSuffix().replace(".","").equals("png")){
|
||||
headers.setContentType(MediaType.IMAGE_PNG);
|
||||
}else if (attachment.getSuffix().replace(".","").equals("jpeg")){
|
||||
headers.setContentType(MediaType.IMAGE_JPEG);
|
||||
}else{
|
||||
bytes= "没有该文件!".getBytes();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// 内容是字节流
|
||||
return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -1,30 +1,47 @@
|
||||
package com.lovenav.controller;
|
||||
|
||||
import com.lovenav.entity.Config;
|
||||
import com.lovenav.service.AttachmentService;
|
||||
import com.lovenav.service.ConfigService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@RestController
|
||||
public class ConfigController {
|
||||
//配置文件操作
|
||||
@Autowired
|
||||
ConfigService configService;
|
||||
@Autowired
|
||||
AttachmentService attachmentService;
|
||||
@RequestMapping("/updateConfig")
|
||||
public String updateConfig(Config config){
|
||||
if (configService.updateConfis(config)==1){
|
||||
return "更新成功";
|
||||
Date date=new Date();
|
||||
int date1=Integer.valueOf(date.toString());
|
||||
config.setUpdatetime(date1);
|
||||
if (config==null){
|
||||
return "配置文件不能为空!";
|
||||
}
|
||||
else {
|
||||
return "更新配置失败";
|
||||
if (configService.updateConfig(config)==1){
|
||||
|
||||
return "更新成功!";
|
||||
}
|
||||
else if (configService.updateConfig(config)==2){
|
||||
return "不存在名称为"+config.getName()+"的配置文件,请先添加!";
|
||||
}
|
||||
return "更新失败!";
|
||||
}
|
||||
@RequestMapping("/addConfig")
|
||||
@RequestMapping("/addConfigString")
|
||||
public String addConfig(Config config){
|
||||
if (config.getName()==null||config.getValue()==null){
|
||||
return "属性值不能为空";
|
||||
}else {
|
||||
Date date=new Date();
|
||||
int date1=Integer.valueOf(date.toString());
|
||||
config.setUpdatetime(date1);
|
||||
return configService.addConfig(config);
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,36 @@
|
||||
package com.lovenav.controller;
|
||||
|
||||
import com.lovenav.entity.UrlAccess;
|
||||
import com.lovenav.service.UrlAccessService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
||||
@RestController
|
||||
public class UrlAccessController {
|
||||
|
||||
@Autowired
|
||||
UrlAccessService urlAccessService;
|
||||
|
||||
//浏览url,访问量加1
|
||||
@RequestMapping("/addUrlAccessViews")
|
||||
public String addUrlAccessViews(UrlAccess urlAccess){
|
||||
String result=urlAccessService.inreaseUrlViews(urlAccess);
|
||||
return result;
|
||||
}
|
||||
|
||||
@RequestMapping("/getUrlAccess")
|
||||
public HashMap<Date, Object> getUrlAccess(UrlAccess urlAccess){
|
||||
HashMap<Date,Object> map=new HashMap<>();
|
||||
map=urlAccessService.getUrlAccess(urlAccess);
|
||||
if (map.isEmpty()){
|
||||
Date date=new Date();
|
||||
map.put(date,"查不到该数据");
|
||||
return map;
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
@@ -13,6 +13,7 @@ import com.lovenav.entity.UrlList;
|
||||
import com.lovenav.service.UrlCateListService;
|
||||
import com.lovenav.service.UrlListService;
|
||||
import com.lovenav.vo.CateAndUrl;
|
||||
import io.swagger.models.auth.In;
|
||||
import org.apache.poi.hssf.usermodel.HSSFCell;
|
||||
import org.apache.poi.hssf.usermodel.HSSFRow;
|
||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||
@@ -53,15 +54,15 @@ public class UrlAndCateController {
|
||||
UserDao userDao;
|
||||
//处理JSON
|
||||
@RequestMapping("/disposeJson")
|
||||
public String disposeJson(@RequestBody String data2 ,String email)
|
||||
public String disposeJson(@RequestBody String data2 ,Integer userId)
|
||||
{
|
||||
String jsonString;
|
||||
//先转换成ObjectMapper类型
|
||||
ObjectNode objectNode = objectMapper.createObjectNode();
|
||||
try {
|
||||
JsonNode rootNode = objectMapper.readTree(data2);
|
||||
disposeBookmarkFunction1(rootNode,"top",email);
|
||||
countCateContainUrlNumber(email);
|
||||
disposeBookmarkFunction1(rootNode,"top",userId);
|
||||
countCateContainUrlNumber(userId);
|
||||
HashMap<String, Object> result = new HashMap<>();
|
||||
result.put("code", 200);
|
||||
result.put("msg", "查询成功");
|
||||
@@ -71,23 +72,35 @@ public class UrlAndCateController {
|
||||
}
|
||||
return jsonString;
|
||||
}
|
||||
public void disposeBookmarkFunction1(JsonNode rootNode,String parent,String email)
|
||||
public void disposeBookmarkFunction1(JsonNode rootNode,String parent,Integer userId)
|
||||
{
|
||||
|
||||
for(int i=0;i<rootNode.size();i++)
|
||||
{
|
||||
JsonNode sonNode = rootNode.get(i);
|
||||
if(String.valueOf(sonNode.get("folder")).equals("true")){
|
||||
urlCateListService.selectAndInsertUrlCate(email,String.valueOf(sonNode.get("name")),parent);
|
||||
if(String.valueOf(sonNode.get("type")).equals("\"folder\"")){
|
||||
String icon = String.valueOf(sonNode.get("icon"));
|
||||
System.out.println(icon.length());
|
||||
if (icon.length() == 2) icon ="https://imgbed.landaiqing.space/img/1/2023/12/25/1_6588644cb1f03_1703437387965_20231225.webp";
|
||||
else{
|
||||
icon=icon.substring(1,icon.length()-1);
|
||||
}
|
||||
urlCateListService.selectAndInsertUrlCate(userId,String.valueOf(sonNode.get("name")),parent,icon);
|
||||
JsonNode children = sonNode.get("children");
|
||||
disposeBookmarkFunction1(children, String.valueOf(sonNode.get("name")),email);
|
||||
disposeBookmarkFunction1(children, String.valueOf(sonNode.get("name")),userId);
|
||||
|
||||
}else{
|
||||
String name = String.valueOf(sonNode.get("name"));
|
||||
String url = String.valueOf(sonNode.get("url"));
|
||||
String adddata = String.valueOf(sonNode.get("adddata"));
|
||||
urlListService.selectCateAndInsertUrl(parent,name,"123",url,email);
|
||||
System.out.println(name +"---" + url + "---" + adddata + "---" + parent );
|
||||
String url = String.valueOf(sonNode.get("href")).substring(1,String.valueOf(sonNode.get("href")).length()-1);
|
||||
String icon = String.valueOf(sonNode.get("icon"));
|
||||
if (icon.length() == 2 )
|
||||
{
|
||||
icon="https://imgbed.landaiqing.space/img/1/2023/12/25/1_6588644cb1f03_1703437387965_20231225.webp";
|
||||
}else{
|
||||
icon =icon.substring(1,String.valueOf(sonNode.get("icon")).length()-1);
|
||||
}
|
||||
urlListService.selectCateAndInsertUrl(parent,name,icon , url,userId);
|
||||
// System.out.println(name +"---" + url + "---" + parent );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -110,13 +123,14 @@ public class UrlAndCateController {
|
||||
cateAndUrl.setName(urlCateList.getName());
|
||||
cateAndUrl.setParentId(urlCateList.getRootCateId());
|
||||
cateAndUrl.setCateId(urlCateList.getId());
|
||||
cateAndUrl.setNumber(urlCateList.getUrlNumber());
|
||||
cateAndUrlList.add(cateAndUrl);
|
||||
}
|
||||
for( int i = 0 ; i < urlLists.size() ; i++){
|
||||
UrlList urlList = urlLists.get(i);
|
||||
if(urlList.getStatus() == 0 ) continue;
|
||||
if(urlList.getStatus() == 1 ) continue;
|
||||
for(CateAndUrl cateAndUrl1 : cateAndUrlList) {
|
||||
if (urlList.getCateId() == cateAndUrl1.getCateId())
|
||||
if (String.valueOf(urlList.getCateId()).equals(cateAndUrl1.getCateId()+""))
|
||||
{
|
||||
CateAndUrl cateAndUrl = new CateAndUrl();
|
||||
cateAndUrl.setFloder("false");
|
||||
@@ -169,11 +183,11 @@ public class UrlAndCateController {
|
||||
List<UrlList> urlLists = urlListService.selectUrListByNeedLogin();
|
||||
List<CateAndUrl> cateAndUrlList = new ArrayList<>();
|
||||
Set<String> parentSet = new HashSet<>();
|
||||
List<Integer> integers = new ArrayList<>();
|
||||
for( int i = 0 ; i < urlLists.size() ; i++)
|
||||
{
|
||||
String parentString = urlCateListService.selectUrListCateByUrlCateId(urlLists.get(i).getCateId());
|
||||
String [] parentList = parentString.split(",");
|
||||
System.out.println(parentString);
|
||||
for(String parent : parentList)
|
||||
{
|
||||
if(parent.equals("0")){
|
||||
@@ -182,8 +196,13 @@ public class UrlAndCateController {
|
||||
parentSet.add(parent);
|
||||
}
|
||||
}
|
||||
|
||||
for (String str : parentSet) {
|
||||
for(String str : parentSet)
|
||||
{
|
||||
integers.add(Integer.valueOf(str));
|
||||
}
|
||||
Collections.sort(integers);
|
||||
for (Integer str : integers) {
|
||||
System.out.println(str);
|
||||
UrlCateList urlCateList =urlCateListService.selectByPrimaryKey(Integer.valueOf(str));
|
||||
CateAndUrl cateAndUrl = new CateAndUrl();
|
||||
cateAndUrl.setFloder("true");
|
||||
@@ -283,11 +302,11 @@ public class UrlAndCateController {
|
||||
}
|
||||
|
||||
|
||||
public String countCateContainUrlNumber(String email){
|
||||
public String countCateContainUrlNumber(Integer userId){
|
||||
HashMap<String, Object> result = new HashMap<>();
|
||||
result.put("code", 200);
|
||||
result.put("msg", "查询成功");
|
||||
result.put("data",urlCateListService.countCateContainUrlNumber(email));
|
||||
result.put("data",urlCateListService.countCateContainUrlNumber(userId));
|
||||
String jsonString = JSONObject.toJSONString(result);
|
||||
return jsonString;
|
||||
}
|
||||
@@ -444,12 +463,13 @@ public class UrlAndCateController {
|
||||
public String disposeBookmarkExhibitedToJsonNew(){
|
||||
List<UrlList> urlLists = urlListService.selectUrListByNeedLogin();
|
||||
List<CateAndUrl> cateAndUrlList = new ArrayList<>();
|
||||
CateAndUrl pub = new CateAndUrl();
|
||||
Set<String> parentSet = new HashSet<>();
|
||||
for( int i = 0 ; i < urlLists.size() ; i++)
|
||||
{
|
||||
String parentString = urlCateListService.selectUrListCateByUrlCateId(urlLists.get(i).getCateId());
|
||||
if(parentString == null) continue;
|
||||
String [] parentList = parentString.split(",");
|
||||
System.out.println(parentString);
|
||||
for(String parent : parentList)
|
||||
{
|
||||
if(parent.equals("0")){
|
||||
@@ -458,18 +478,22 @@ public class UrlAndCateController {
|
||||
parentSet.add(parent);
|
||||
}
|
||||
}
|
||||
for (String str : parentSet) {
|
||||
List<String> ls=Arrays.asList(parentSet.toArray(new String[0]));
|
||||
Collections.sort(ls);
|
||||
for (String str : ls) {
|
||||
System.out.println(str);
|
||||
UrlCateList urlCateList =urlCateListService.selectByPrimaryKey(Integer.valueOf(str));
|
||||
CateAndUrl cateAndUrl = new CateAndUrl();
|
||||
cateAndUrl.setFloder("true");
|
||||
cateAndUrl.setName(urlCateList.getName());
|
||||
cateAndUrl.setParentId(urlCateList.getRootCateId());
|
||||
cateAndUrl.setCateId(urlCateList.getId());
|
||||
cateAndUrl.setNumber(urlCateList.getUrlNumber());
|
||||
cateAndUrlList.add(cateAndUrl);
|
||||
}
|
||||
for( int i = 0 ; i < urlLists.size() ; i++){
|
||||
UrlList urlList = urlLists.get(i);
|
||||
if(urlList.getStatus() == 0 ) continue ;
|
||||
if(urlList.getStatus() == 1 ) continue ;
|
||||
CateAndUrl cateAndUrl = new CateAndUrl();
|
||||
cateAndUrl.setFloder("false");
|
||||
cateAndUrl.setName(urlList.getName());
|
||||
@@ -489,13 +513,27 @@ public class UrlAndCateController {
|
||||
cateAndUrl.setIsAd(urlList.getIsAd());
|
||||
cateAndUrl.setIsTop(urlList.getIsTop());
|
||||
cateAndUrl.setIsEncrypt(urlList.getIsEncrypt());
|
||||
int flag =0 ;
|
||||
for(CateAndUrl cateAndUrl1 : cateAndUrlList){
|
||||
if(cateAndUrl.getParentId() == cateAndUrl1.getCateId())
|
||||
if(String.valueOf(urlList.getCateId()).equals(cateAndUrl1.getCateId()+""))
|
||||
{
|
||||
flag = 1;
|
||||
cateAndUrl1.getChildUC().add(cateAndUrl);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(flag == 0)
|
||||
{
|
||||
pub.setName("默认文件夹");
|
||||
|
||||
pub.getChildUC().add(cateAndUrl);
|
||||
}
|
||||
}
|
||||
|
||||
if(pub.getChildUC().size()!=0)
|
||||
{
|
||||
pub.setNumber(Long.valueOf(pub.getChildUC().size()));
|
||||
cateAndUrlList.add(pub);
|
||||
}
|
||||
return JSONObject.toJSONString(cateAndUrlList);
|
||||
|
||||
@@ -529,6 +567,7 @@ public class UrlAndCateController {
|
||||
cateAndUrl.setName(urlCateList.getName());
|
||||
cateAndUrl.setParentId(urlCateList.getRootCateId());
|
||||
cateAndUrl.setCateId(urlCateList.getId());
|
||||
cateAndUrl.setNumber(urlCateList.getUrlNumber());
|
||||
cateAndUrlList.add(cateAndUrl);
|
||||
}
|
||||
|
||||
@@ -630,7 +669,7 @@ public class UrlAndCateController {
|
||||
|
||||
}
|
||||
|
||||
urlCateListService.countCateContainUrlNumber(userDao.selectByPrimaryKey(Integer.valueOf(userId)).getUserEmail());
|
||||
urlCateListService.countCateContainUrlNumber(userDao.selectByPrimaryKey(Integer.valueOf(userId)).getId());
|
||||
result.put("code", 200);
|
||||
result.put("msg", "处理成功");
|
||||
return JSONObject.toJSONString(result);
|
||||
|
@@ -1,15 +1,18 @@
|
||||
package com.lovenav.controller;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.lovenav.entity.LoginLogs;
|
||||
import com.lovenav.entity.UrlList;
|
||||
import com.lovenav.entity.User;
|
||||
import com.lovenav.service.ConfigService;
|
||||
import com.lovenav.service.LoginLogsService;
|
||||
import com.lovenav.service.UserService;
|
||||
import com.lovenav.utils.MD5Utils;
|
||||
import com.lovenav.utils.RandomValidateCode;
|
||||
import com.lovenav.utils.TokenUtils;
|
||||
import com.lovenav.utils.*;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpRequest;
|
||||
import org.springframework.mail.javamail.JavaMailSenderImpl;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
@@ -34,6 +37,12 @@ public class UserController {
|
||||
UserService userService;
|
||||
@Autowired
|
||||
TokenUtils tokenUtils;
|
||||
@Autowired
|
||||
LoginLogsService loginLogsService;
|
||||
@Autowired
|
||||
ConfigService configService;
|
||||
@Autowired
|
||||
IPutils iPutils;
|
||||
//发送邮箱验证码
|
||||
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
|
||||
//这个是我用户Service实现类可以自行替换
|
||||
@@ -42,8 +51,14 @@ public class UserController {
|
||||
|
||||
@GetMapping("/sendActiveCode")
|
||||
public String sendActiveCode(HttpSession session, User user){
|
||||
|
||||
String activecode=userService.sendEmailActivecode(user);
|
||||
HashMap<String,String> configMap=new HashMap<>();
|
||||
configMap=configService.selectEmailConfig();
|
||||
String activecode=userService.sendEmailActivecode(user,configMap);
|
||||
if (activecode=="配置文件有错误"){
|
||||
return "邮箱配置文件有错误,请重新确认!";
|
||||
} else if (activecode=="该邮箱不存在") {
|
||||
return "将要发送的邮箱不存在!";
|
||||
}
|
||||
session.setAttribute(user.getUserEmail(),activecode);
|
||||
scheduledExecutorService.schedule(new Runnable() {
|
||||
@Override
|
||||
@@ -80,7 +95,8 @@ public class UserController {
|
||||
return "注册成功!";
|
||||
}
|
||||
@RequestMapping(value = "/login",produces = {"application/json;charset=UTF-8"})
|
||||
public Map<String,Object>login(User user,String code,HttpSession session){
|
||||
public Map<String,Object>login(User user, String code, HttpSession session, HttpServletRequest request){
|
||||
LoginLogs loginLogs=new LoginLogs();
|
||||
Map<String,Object> result=new HashMap<>();
|
||||
Map<String,Object> map=new HashMap<>();
|
||||
|
||||
@@ -99,9 +115,18 @@ public class UserController {
|
||||
return result;
|
||||
}
|
||||
|
||||
User user1 = userService.userLogin(user);
|
||||
|
||||
String ip=IPutils.getIpAddress(request);
|
||||
System.out.println(ip);
|
||||
|
||||
String locat= String.valueOf(IPutils.getLocation(ip));
|
||||
User user1 = userService.userLogin(user);
|
||||
|
||||
if(user1!=null){
|
||||
loginLogs.setUserId(user1.getId());
|
||||
loginLogs.setLoginIp(ip);
|
||||
loginLogs.setLocation(locat);
|
||||
loginLogsService.addLoginLogs(loginLogs);
|
||||
result.put("code",200);
|
||||
map.put("userEmail",user1.getUserEmail());
|
||||
map.put("userLogin",user1.getUserLogin());
|
||||
@@ -166,6 +191,9 @@ public class UserController {
|
||||
return map;
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping("/getAllUsers")
|
||||
public HashMap<Integer,Object> getAllUsers(){
|
||||
return userService.getAllUsers();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,9 +1,11 @@
|
||||
package com.lovenav.dao;
|
||||
|
||||
import com.lovenav.entity.Attachment;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface AttachmentDao {
|
||||
int deleteByPrimaryKey(Long id);
|
||||
|
||||
|
@@ -1,12 +1,14 @@
|
||||
package com.lovenav.dao;
|
||||
|
||||
import com.lovenav.entity.Comment;
|
||||
import com.lovenav.entity.CommentNode;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface CommentDao {
|
||||
@@ -25,4 +27,7 @@ public interface CommentDao {
|
||||
List<Comment> selectAllComment();
|
||||
|
||||
List<Comment> selectByAllReply(int id);
|
||||
List<CommentNode> queryFirstCommentList(int urlid);
|
||||
|
||||
List<CommentNode> querySecondCommentList(int UrlId);
|
||||
}
|
@@ -1,8 +1,9 @@
|
||||
package com.lovenav.dao;
|
||||
|
||||
import com.lovenav.entity.LoginLogs;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface LoginLogsDao {
|
||||
int deleteByPrimaryKey(Integer id);
|
||||
@@ -16,4 +17,8 @@ public interface LoginLogsDao {
|
||||
int updateByPrimaryKeySelective(LoginLogs record);
|
||||
|
||||
int updateByPrimaryKey(LoginLogs record);
|
||||
|
||||
LoginLogs selectAlreadyExist(int userId);
|
||||
|
||||
int updateByUserId(LoginLogs record);
|
||||
}
|
@@ -1,9 +1,15 @@
|
||||
package com.lovenav.dao;
|
||||
|
||||
import com.lovenav.entity.UrlAccess;
|
||||
import org.apache.ibatis.annotations.MapKey;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface UrlAccessDao {
|
||||
int deleteByPrimaryKey(Integer id);
|
||||
|
||||
@@ -14,6 +20,11 @@ public interface UrlAccessDao {
|
||||
UrlAccess selectByPrimaryKey(Integer id);
|
||||
|
||||
int updateByPrimaryKeySelective(UrlAccess record);
|
||||
UrlAccess selectAlreadyExist(UrlAccess urlAccess);
|
||||
|
||||
int updateByPrimaryKey(UrlAccess record);
|
||||
|
||||
int updateByUrlId(UrlAccess record);
|
||||
@MapKey("time")
|
||||
HashMap<Date,Object> selectUrlAccess(UrlAccess urlAccess);
|
||||
}
|
@@ -1,10 +1,13 @@
|
||||
package com.lovenav.dao;
|
||||
|
||||
import com.lovenav.entity.User;
|
||||
import org.apache.ibatis.annotations.MapKey;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface UserDao {
|
||||
@@ -26,6 +29,7 @@ public interface UserDao {
|
||||
User selectByUserLogin(String user_login);
|
||||
|
||||
int updateByEmail(User user);
|
||||
|
||||
@MapKey("id")
|
||||
HashMap<Integer,Object> selectAllUsers();
|
||||
|
||||
}
|
@@ -1,6 +1,7 @@
|
||||
package com.lovenav.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -57,7 +58,7 @@ public class Attachment implements Serializable {
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Integer createtime;
|
||||
private Date createtime;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
44
src/main/java/com/lovenav/entity/CommentNode.java
Normal file
44
src/main/java/com/lovenav/entity/CommentNode.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package com.lovenav.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 功能描述:封装博客评论的BO <br>
|
||||
* 采用链表结构实现
|
||||
**/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class CommentNode extends Comment {
|
||||
|
||||
/**
|
||||
* 评论的用户信息
|
||||
*/
|
||||
private User user;
|
||||
|
||||
/**
|
||||
* 下一条回复
|
||||
*/
|
||||
private List<CommentNode> nextNodes = new ArrayList<>();
|
||||
|
||||
public CommentNode ( CommentNode commentNode ) {
|
||||
super();
|
||||
setId(commentNode.getId());
|
||||
setUrlId(commentNode.getUrlId());
|
||||
setUserId(commentNode.getUserId());
|
||||
setContent(commentNode.getContent());
|
||||
setRootCommentId(commentNode.getRootCommentId());
|
||||
setCommentStatus(commentNode.getCommentStatus());
|
||||
setCommentTime(commentNode.getCommentTime());
|
||||
setUpdateTime(commentNode.getUpdateTime());
|
||||
setRating(commentNode.getRating());
|
||||
setLikeCount(commentNode.getLikeCount());
|
||||
this.user = commentNode.getUser();
|
||||
}
|
||||
}
|
23
src/main/java/com/lovenav/entity/IpLocation.java
Normal file
23
src/main/java/com/lovenav/entity/IpLocation.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package com.lovenav.entity;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
@Data
|
||||
public class IpLocation implements Serializable {
|
||||
@ApiModelProperty("ip地址")
|
||||
private String ip;
|
||||
|
||||
@ApiModelProperty("国家")
|
||||
private String country;
|
||||
|
||||
@ApiModelProperty("省")
|
||||
private String province;
|
||||
|
||||
@ApiModelProperty("省")
|
||||
private String city;
|
||||
|
||||
@ApiModelProperty("服务商")
|
||||
private String isp;
|
||||
}
|
@@ -22,7 +22,7 @@ public class LoginLogs implements Serializable {
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Byte userId;
|
||||
private Integer userId;
|
||||
|
||||
/**
|
||||
* 登录时间
|
||||
|
@@ -2,6 +2,8 @@ package com.lovenav.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -22,6 +24,7 @@ public class UrlAccess implements Serializable {
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
private Date time;
|
||||
|
||||
/**
|
||||
|
@@ -1,9 +1,18 @@
|
||||
package com.lovenav.service;
|
||||
|
||||
import com.lovenav.dao.AttachmentDao;
|
||||
import com.lovenav.entity.Attachment;
|
||||
import com.lovenav.entity.Config;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public interface AttachmentService {
|
||||
// public HashMap<String,String>storeFile(MultipartFile multipartFile);
|
||||
HashMap<String,String> upload(MultipartFile file,String cate,Long id) throws IOException;
|
||||
|
||||
public HashMap<String,String>storeFile(MultipartFile multipartFile,String cate,Long id) throws IOException;
|
||||
|
||||
public Attachment selectAttachment(Long id);
|
||||
}
|
||||
|
@@ -6,7 +6,15 @@ import java.util.HashMap;
|
||||
|
||||
public interface ConfigService {
|
||||
public HashMap<String,Object>getAllConfig();
|
||||
public int updateConfis(Config config);
|
||||
public int updateConfig(Config config);
|
||||
|
||||
|
||||
|
||||
public String addConfig(Config config);
|
||||
|
||||
HashMap<String, String> selectEmailConfig();
|
||||
|
||||
public Config selectAlreadyExist(Config config);
|
||||
|
||||
|
||||
}
|
||||
|
9
src/main/java/com/lovenav/service/LoginLogsService.java
Normal file
9
src/main/java/com/lovenav/service/LoginLogsService.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package com.lovenav.service;
|
||||
|
||||
|
||||
import com.lovenav.entity.LoginLogs;
|
||||
|
||||
public interface LoginLogsService {
|
||||
public String addLoginLogs(LoginLogs loginLogs);
|
||||
|
||||
}
|
13
src/main/java/com/lovenav/service/UrlAccessService.java
Normal file
13
src/main/java/com/lovenav/service/UrlAccessService.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.lovenav.service;
|
||||
|
||||
import com.lovenav.entity.UrlAccess;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
||||
public interface UrlAccessService {
|
||||
public String inreaseUrlViews(UrlAccess urlAccess);
|
||||
|
||||
public HashMap<Date,Object> getUrlAccess(UrlAccess urlAccess);
|
||||
}
|
@@ -8,10 +8,10 @@ import java.util.List;
|
||||
public interface UrlCateListService {
|
||||
|
||||
|
||||
public int selectAndInsertUrlCate(String email , String cateName , String parent);
|
||||
public int selectAndInsertUrlCate(Integer userId , String cateName , String parent,String icon);
|
||||
public List<UrlCateList> selectUrListByUserId(Integer userId);
|
||||
|
||||
public String countCateContainUrlNumber(String userId);
|
||||
public String countCateContainUrlNumber(Integer userId);
|
||||
|
||||
public JSONArray getUrl(String userId);
|
||||
public String selectUrListCateByUrlCateId(Integer cateId);
|
||||
|
@@ -6,7 +6,7 @@ import java.util.List;
|
||||
|
||||
public interface UrlListService {
|
||||
|
||||
public int selectCateAndInsertUrl(String parent,String name , String icon ,String url ,String email );
|
||||
public int selectCateAndInsertUrl(String parent,String name , String icon ,String url ,Integer userId );
|
||||
public List<UrlList> selectUrList();
|
||||
public UrlList selectUrListByInput(String input);
|
||||
public UrlList selectUrlListByUrlId(Long urlId);
|
||||
|
@@ -2,12 +2,12 @@ package com.lovenav.service;
|
||||
|
||||
import com.lovenav.entity.User;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
|
||||
public interface UserService {
|
||||
|
||||
public String sendEmailActivecode(User user);
|
||||
public String sendEmailActivecode(User user, HashMap<String,String>configMap);
|
||||
public int UserRegister(User user);
|
||||
|
||||
public User selectUserAlreadyExist(User user);
|
||||
@@ -16,4 +16,6 @@ public interface UserService {
|
||||
|
||||
public int updatePassword(User user);
|
||||
|
||||
HashMap<Integer,Object> getAllUsers();
|
||||
|
||||
}
|
||||
|
@@ -1,6 +1,14 @@
|
||||
package com.lovenav.service.serviceImpl;
|
||||
|
||||
import com.lovenav.dao.AttachmentDao;
|
||||
import com.lovenav.dao.ConfigDao;
|
||||
import com.lovenav.entity.Attachment;
|
||||
import com.lovenav.entity.Config;
|
||||
import com.lovenav.service.AttachmentService;
|
||||
import com.lovenav.utils.MD5Utils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@@ -14,45 +22,72 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AttachmentServiceImpl implements AttachmentService {
|
||||
// @Override
|
||||
// public HashMap<String, String> storeFile(MultipartFile multipartFile) {
|
||||
// HashMap<String,String> map = new HashMap<>();
|
||||
// }
|
||||
// File path = null;
|
||||
//// try {
|
||||
// path = new File(ResourceUtils.getURL("classpath:").getPath());
|
||||
// File upload = new File(path.getAbsolutePath(),"static/img/");
|
||||
// Date date=new Date();
|
||||
//
|
||||
// DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
// String date1=format.format(date);
|
||||
// String fileName = multipartFile.getOriginalFilename();//文件全名
|
||||
// File parentDir = new File(upload.getAbsolutePath()+"/" + date1);
|
||||
// System.out.println(upload.getAbsolutePath());
|
||||
// System.out.println(fileName);
|
||||
// map
|
||||
// return
|
||||
// if(!upload.exists()){
|
||||
// upload.mkdirs();
|
||||
// }
|
||||
// if(!parentDir.exists()){
|
||||
// parentDir.mkdirs();
|
||||
// }
|
||||
// String suffix = suffix(fileName);//文件后缀
|
||||
// String relPath = "/" + yearMonth + "/" + "-" + UUID.randomUUID().toString().replaceAll("-","") + suffix;
|
||||
// File fileUp = new File(upload.getAbsolutePath()+ relPath);
|
||||
// file.transferTo(fileUp);
|
||||
// Map<String, String> map = new HashMap();
|
||||
// map.put("url", "/img" + relPath);
|
||||
// log.info(relPath);
|
||||
// return map;
|
||||
// } catch (FileNotFoundException e) {
|
||||
// throw e;
|
||||
// } catch (IOException e) {
|
||||
// throw e;
|
||||
// }
|
||||
// }
|
||||
@Autowired
|
||||
AttachmentDao attachmentDao;
|
||||
|
||||
@Override
|
||||
public HashMap<String,String> upload(MultipartFile file,String cate,Long id) throws IOException {
|
||||
HashMap<String, String> map = storeFile(file,cate,id);
|
||||
return map;
|
||||
}
|
||||
@Override
|
||||
public HashMap<String, String> storeFile(MultipartFile multipartFile,String cate,Long id) throws IOException {
|
||||
HashMap<String,String> map = new HashMap<>();
|
||||
Attachment attachment=new Attachment();
|
||||
File path = null;
|
||||
try {
|
||||
path = new File(ResourceUtils.getURL("classpath:").getPath());
|
||||
File upload = new File(path.getAbsolutePath(),"static/"+cate+"/");
|
||||
Date date=new Date();
|
||||
|
||||
DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
DateFormat format1 = new SimpleDateFormat("yyyyMM");
|
||||
String date1=format.format(date);
|
||||
String fileName = multipartFile.getOriginalFilename();//文件全名
|
||||
String date2=format1.format(date);
|
||||
File parentDir = new File(upload.getAbsolutePath()+"/" + date2);
|
||||
if(!upload.exists()){
|
||||
upload.mkdirs();
|
||||
}
|
||||
if(!parentDir.exists()){
|
||||
parentDir.mkdirs();
|
||||
}
|
||||
String suffix = suffix(fileName);//文件后缀
|
||||
String finalFileName=UUID.randomUUID().toString().replaceAll("-","");
|
||||
String relPath = "/" + date2 + "/" + finalFileName + suffix;
|
||||
File fileUp = new File(upload.getAbsolutePath()+ relPath);
|
||||
|
||||
attachment.setCreatetime(date);
|
||||
attachment.setFileName(finalFileName);
|
||||
attachment.setPath(upload.getAbsolutePath()+ "/" + date2 + "/");
|
||||
attachment.setSuffix(suffix);
|
||||
attachment.setMd5(MD5Utils.md5(upload.getAbsolutePath()+ relPath));
|
||||
attachment.setStorage("local");
|
||||
attachment.setId(id);
|
||||
attachmentDao.insertSelective(attachment);
|
||||
map.put("id", String.valueOf(attachment.getId()));
|
||||
multipartFile.transferTo(fileUp);
|
||||
map.put("url", "/img" + relPath);
|
||||
log.info(relPath);
|
||||
return map;
|
||||
} catch (FileNotFoundException e) {
|
||||
throw e;
|
||||
} catch (IOException e) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Attachment selectAttachment(Long id) {
|
||||
Attachment attachment=attachmentDao.selectByPrimaryKey(id);
|
||||
return attachment;
|
||||
}
|
||||
|
||||
private static String suffix(String fileName) {
|
||||
int i = fileName.lastIndexOf('.');
|
||||
return i == -1 ? "" : fileName.substring(i);
|
||||
}
|
||||
}
|
||||
|
@@ -5,6 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import com.lovenav.dao.CommentDao;
|
||||
import com.lovenav.dao.UserDao;
|
||||
import com.lovenav.entity.Comment;
|
||||
import com.lovenav.entity.CommentNode;
|
||||
import com.lovenav.entity.User;
|
||||
import com.lovenav.service.CommentService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -64,10 +66,16 @@ public class CommentServiceImpl implements CommentService {
|
||||
return JSON.toJSONString(hashMap);
|
||||
}
|
||||
|
||||
// 显示评论
|
||||
// 显示一级评论和用户信息
|
||||
public String View_comment(){
|
||||
List<Comment> list = commentDao.selectAllComment();
|
||||
return JSON.toJSONString(list);
|
||||
List<Comment> list_comment = commentDao.selectAllComment();
|
||||
HashMap<Comment, User> result = new HashMap<>();
|
||||
for(int i=0;i<list_comment.size();++i){
|
||||
int user_id = list_comment.get(i).getUserId();
|
||||
User user = userDao.selectByPrimaryKey(user_id);
|
||||
result.put(list_comment.get(i),user );
|
||||
}
|
||||
return JSON.toJSONString(result);
|
||||
}
|
||||
|
||||
// 显示回复
|
||||
@@ -75,4 +83,57 @@ public class CommentServiceImpl implements CommentService {
|
||||
List<Comment> list = commentDao.selectByAllReply(id);
|
||||
return JSON.toJSONString(list);
|
||||
}
|
||||
|
||||
|
||||
private boolean addNode (List<CommentNode> firstList, CommentNode commentNode ) {
|
||||
//循环添加
|
||||
for (CommentNode node : firstList) {
|
||||
//判断留言的上一段是否是这条留言(判断这条回复,是否是当前评论的回复)
|
||||
if (node.getId().equals(commentNode.getRootCommentId())) {
|
||||
//是,添加,返回true
|
||||
node.getNextNodes().add(commentNode);
|
||||
return true;
|
||||
} else {
|
||||
//否则递归继续判断
|
||||
if (node.getNextNodes().size() != 0) {
|
||||
if (addNode(node.getNextNodes(), commentNode)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 功能描述:将查出来的lastId不为null的回复都添加到第一层Node集合中
|
||||
*
|
||||
* @param firstList 第一层评论集合(链表)
|
||||
* @param thenList 非第一层评论集合(链表)
|
||||
* @return 所有评论集合(非第一层评论集合对应添加到第一层评论集合,返回)
|
||||
*/
|
||||
private List<CommentNode> addAllNode ( List<CommentNode> firstList, List<CommentNode> thenList ) {
|
||||
while (thenList.size() != 0) {
|
||||
int size = thenList.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (addNode(firstList, new CommentNode(thenList.get(i)))) {
|
||||
thenList.remove(i);
|
||||
i--;
|
||||
size--;
|
||||
}
|
||||
}
|
||||
}
|
||||
return firstList;
|
||||
}
|
||||
|
||||
public List<CommentNode> queryObserveByBlogId ( Integer UrlId ) {
|
||||
//所有未处理的一级评论集合
|
||||
List<CommentNode> firstCommentList = commentDao.queryFirstCommentList(UrlId);
|
||||
//所有未处理的二级评论集合
|
||||
List<CommentNode> secondCommentList = commentDao.querySecondCommentList(UrlId);
|
||||
|
||||
//将二级评论用链表的方式添加到一级评论
|
||||
List<CommentNode> list = addAllNode(firstCommentList, secondCommentList);
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,10 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateConfis(Config config) {
|
||||
public int updateConfig(Config config) {
|
||||
if (configDao.selectByName(config.getName())==null){
|
||||
return 2;
|
||||
}
|
||||
return configDao.updateByName(config);
|
||||
}
|
||||
|
||||
@@ -35,5 +38,36 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
}
|
||||
|
||||
}
|
||||
//获得邮箱配置的信息,若没有值则采用默认信息
|
||||
@Override
|
||||
public HashMap<String, String> selectEmailConfig() {
|
||||
HashMap<String,String> configMap= new HashMap<>();
|
||||
if (configDao.selectByName("email_sendEmail").getValue()!=null){
|
||||
configMap.put("email_sendEmail",configDao.selectByName("email_sendEmail").getValue());
|
||||
}else {
|
||||
configMap.put("email_sendEmail","482370576@qq.com");
|
||||
return configMap;
|
||||
}
|
||||
if (configDao.selectByName("email_host").getValue()!=null){
|
||||
configMap.put("email_host",configDao.selectByName("email_host").getValue());
|
||||
}else {
|
||||
configMap.put("email_host","smtp.qq.com");
|
||||
return configMap;
|
||||
}
|
||||
if (configDao.selectByName("email_password").getValue()!=null){
|
||||
configMap.put("email_password",configDao.selectByName("email_password").getValue());
|
||||
}else {
|
||||
configMap.put("email_password","ksuebkfenixhdbbh");
|
||||
return configMap;
|
||||
}
|
||||
return configMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Config selectAlreadyExist(Config config) {
|
||||
|
||||
return configDao.selectByName(config.getName());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,30 @@
|
||||
package com.lovenav.service.serviceImpl;
|
||||
|
||||
import com.lovenav.dao.LoginLogsDao;
|
||||
import com.lovenav.entity.LoginLogs;
|
||||
import com.lovenav.service.LoginLogsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Service
|
||||
public class LoginLogsServiceImpl implements LoginLogsService {
|
||||
@Autowired
|
||||
LoginLogsDao loginLogsDao;
|
||||
@Override
|
||||
public String addLoginLogs(LoginLogs loginLogs) {
|
||||
Date date=new Date();
|
||||
loginLogs.setLoginTime(date);
|
||||
if (loginLogsDao.selectAlreadyExist(loginLogs.getUserId())==null){
|
||||
if (loginLogsDao.insertSelective(loginLogs)!=1){
|
||||
return "登录日志更新成功!";
|
||||
}
|
||||
}else {
|
||||
if (loginLogsDao.updateByUserId(loginLogs)!=1){
|
||||
return "登录日志更新失败!";
|
||||
}
|
||||
}
|
||||
return "更新登录日志失败";
|
||||
}
|
||||
}
|
@@ -22,39 +22,80 @@ public class QRCServiceImpl implements QRCService{
|
||||
private CollectIconListDao collectIconListDao;
|
||||
|
||||
public String QR(CollectIconList collect) throws Exception {
|
||||
String logoPath ="src/main/resources/static/logo/NAV.png";
|
||||
String logoPath = "src/main/resources/static/logo/NAV.png";
|
||||
String destPath = "src/main/resources/static/qr";
|
||||
// 通过传入collect的url_id查找相同网址图片列表
|
||||
// List<CollectIconList> collectIconList = collectIconListDao.selectByUrlid(collect.getUrl_id());
|
||||
|
||||
// 通过collect的url_id查找网址id对应网址
|
||||
UrlList urlList = urlListDao.selectByPrimaryKey(Long.valueOf(collect.getUrl_id()));
|
||||
|
||||
List<CollectIconList> list = collectIconListDao.selectByUrlid(collect.getUrl_id());
|
||||
if(list.size()==0){
|
||||
if(urlList != null){
|
||||
// 将icon下载到本地并存储本地路径
|
||||
// 如果表中没有可以插入
|
||||
if (list.size() == 0) {
|
||||
// 如果icon是url
|
||||
if(QRCodeUtil.notBase64(collect.getIcon_url())){
|
||||
String icon_url = QRCodeUtil.downloadPicture(collect.getIcon_url());
|
||||
collect.setIcon_url(icon_url);
|
||||
// 获取网址url
|
||||
String url = urlList.getUrl();
|
||||
// 将网址生成二维码并返回本地路径
|
||||
// 将网址生成二维码并返回本地路径
|
||||
String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true);
|
||||
// 为collect设置二维码本地路径
|
||||
collect.setQr_url(url_wait);
|
||||
collectIconListDao.insert(collect);
|
||||
String base64 = QRCodeUtil.ImageToBase64(url_wait);
|
||||
collectIconListDao.insert(collect);
|
||||
return JSON.toJSONString(base64);
|
||||
}else{
|
||||
HashMap<String,Object> result = new HashMap<>();
|
||||
result.put("code",500);
|
||||
result.put("msg", "找不到对应网址");
|
||||
return JSON.toJSONString(result);
|
||||
}
|
||||
}else{
|
||||
String url_wait = list.get(0).getQr_url();
|
||||
String base64 = QRCodeUtil.ImageToBase64(url_wait);
|
||||
return JSON.toJSONString(base64);
|
||||
else {
|
||||
String base64str = QRCodeUtil.delete_profix(collect.getIcon_url());
|
||||
String icon_url = QRCodeUtil.GenerateImage(base64str,"src/main/resources/static/icon");
|
||||
collect.setIcon_url(icon_url);
|
||||
|
||||
String url = urlList.getUrl();
|
||||
String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true);
|
||||
collect.setQr_url(url_wait);
|
||||
|
||||
String base64 = QRCodeUtil.ImageToBase64(url_wait);
|
||||
collectIconListDao.insert(collect);
|
||||
return JSON.toJSONString(base64);
|
||||
}
|
||||
} else {
|
||||
return JSON.toJSONString(QRCodeUtil.ImageToBase64(list.get(0).getQr_url()));
|
||||
}
|
||||
}
|
||||
|
||||
//// 通过传入collect的url_id查找相同网址图片列表
|
||||
//// List<CollectIconList> collectIconList = collectIconListDao.selectByUrlid(collect.getUrl_id());
|
||||
//
|
||||
//// 通过collect的url_id查找网址id对应网址
|
||||
// UrlList urlList = urlListDao.selectByPrimaryKey(Long.valueOf(collect.getUrl_id()));
|
||||
//
|
||||
// List<CollectIconList> list = collectIconListDao.selectByUrlid(collect.getUrl_id());
|
||||
// if(list.size()==0){
|
||||
// if(urlList != null && collect.getIcon_url()!=null){
|
||||
//// 将icon下载到本地并存储本地路径
|
||||
// String icon_url = QRCodeUtil.downloadPicture(collect.getIcon_url());
|
||||
// collect.setIcon_url(icon_url);
|
||||
//
|
||||
//
|
||||
//// 为collect设置二维码本地路径
|
||||
// collect.setQr_url(url_wait);
|
||||
// collectIconListDao.insert(collect);
|
||||
// String base64 = QRCodeUtil.ImageToBase64(url_wait);
|
||||
// return JSON.toJSONString(base64);
|
||||
// }else if(urlList != null && collect.getIcon_url()==null){
|
||||
//// 获取网址url
|
||||
// String url = urlList.getUrl();
|
||||
// String url_wait = QRCodeUtil.encode(url, logoPath, destPath, true);
|
||||
//// 为collect设置二维码本地路径
|
||||
// collect.setQr_url(url_wait);
|
||||
// collectIconListDao.insert(collect);
|
||||
// String base64 = QRCodeUtil.ImageToBase64(url_wait);
|
||||
// return JSON.toJSONString(base64);
|
||||
// }
|
||||
// }else{
|
||||
// String url_wait = list.get(0).getQr_url();
|
||||
// String base64 = QRCodeUtil.ImageToBase64(url_wait);
|
||||
// return JSON.toJSONString(base64);
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,44 @@
|
||||
package com.lovenav.service.serviceImpl;
|
||||
|
||||
import com.lovenav.dao.UrlAccessDao;
|
||||
import com.lovenav.entity.UrlAccess;
|
||||
import com.lovenav.service.UrlAccessService;
|
||||
import lombok.Data;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
||||
@Service
|
||||
public class UrlAccessServiceImpl implements UrlAccessService {
|
||||
@Autowired
|
||||
UrlAccessDao urlAccessDao;
|
||||
@Override
|
||||
public String inreaseUrlViews(UrlAccess urlAccess){
|
||||
if (urlAccess.getUrlId()==null){
|
||||
return "url的Id不能为空!";
|
||||
}
|
||||
Date date=new Date();
|
||||
urlAccess.setTime(date);
|
||||
urlAccess.setUrlId(2);
|
||||
UrlAccess urlAccess1=urlAccessDao.selectAlreadyExist(urlAccess);
|
||||
if (urlAccess1==null){
|
||||
urlAccess.setViews(1L);
|
||||
urlAccessDao.insertSelective(urlAccess);
|
||||
}else {
|
||||
urlAccess.setViews(urlAccess1.getViews()+1);
|
||||
urlAccessDao.updateByUrlId(urlAccess);
|
||||
}
|
||||
return "更新成功!";
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<Date, Object> getUrlAccess(UrlAccess urlAccess) {
|
||||
HashMap<Date, Object> map=new HashMap<>();
|
||||
map=urlAccessDao.selectUrlAccess(urlAccess);
|
||||
return map;
|
||||
}
|
||||
}
|
@@ -27,22 +27,24 @@ public class UrlCateListServiceImpl implements UrlCateListService {
|
||||
UrlListDao urlListDao;
|
||||
@Autowired
|
||||
UserDao userDao;
|
||||
public int selectAndInsertUrlCate(String email , String cateName , String parent )
|
||||
public int selectAndInsertUrlCate(Integer userId , String cateName , String parent,String icon )
|
||||
{
|
||||
//找用户ID
|
||||
User user = userDao.selectByEmail(email);
|
||||
int userId = user.getId();
|
||||
|
||||
parent = parent.substring(1,parent.length()-1);
|
||||
//找父标签有没有
|
||||
UrlCateList cateParent = urlCateListDao.selectCateByNameAnduserId(parent,userId);
|
||||
|
||||
UrlCateList targetCate = new UrlCateList();
|
||||
|
||||
//设置属性
|
||||
targetCate.setName(cateName);
|
||||
targetCate.setName(cateName.substring(1,cateName.length()-1));
|
||||
targetCate.setUserId(userId);
|
||||
Date date = new Date();
|
||||
targetCate.setCreatetime(date.getTime());
|
||||
|
||||
targetCate.setWeigh(Long.valueOf(0));
|
||||
targetCate.setStatus(Byte.valueOf(0+""));
|
||||
targetCate.setNeedLogin(Byte.valueOf(0+""));
|
||||
targetCate.setIco(icon);
|
||||
if(cateParent != null)
|
||||
{
|
||||
targetCate.setRootCateId(cateParent.getId());
|
||||
@@ -85,10 +87,9 @@ public class UrlCateListServiceImpl implements UrlCateListService {
|
||||
return urlCateListDao.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
public String countCateContainUrlNumber(String email){
|
||||
User user = userDao.selectByEmail(email);
|
||||
int userId = user.getId();
|
||||
List<UrlCateList> urlCateLists =urlCateListDao.selectUrListByUserId(userId);
|
||||
public String countCateContainUrlNumber(Integer userId){
|
||||
|
||||
List<UrlCateList> urlCateLists =urlCateListDao.selectUrListByUserId(3);
|
||||
List<UrlList> urlLists = urlListDao.selectUrList();
|
||||
HashMap<String,Integer> CateNumber = new HashMap<>();
|
||||
|
||||
@@ -96,24 +97,27 @@ public class UrlCateListServiceImpl implements UrlCateListService {
|
||||
{
|
||||
CateNumber.put(urlCateList.getName(),0);
|
||||
}
|
||||
for(UrlList urlList : urlLists){
|
||||
Long id = Long.valueOf(urlList.getCateId());
|
||||
|
||||
while(id!= 0)
|
||||
for(UrlList urlList : urlLists){
|
||||
String parentString = urlCateListDao.selectUrListCateByUrlCateId(urlList.getCateId());
|
||||
if (parentString == null) continue;
|
||||
String [] strings = parentString.split(",");
|
||||
|
||||
for(String str :strings)
|
||||
{
|
||||
if(str.equals("0")) continue;
|
||||
for(UrlCateList urlCateList :urlCateLists)
|
||||
{
|
||||
if(id == Long.valueOf(urlCateList.getId())){
|
||||
if(urlCateList.getId() == Integer.valueOf(str)){
|
||||
int cateNum = CateNumber.get(urlCateList.getName())+1;
|
||||
CateNumber.put(urlCateList.getName(),cateNum);
|
||||
id=Long.valueOf(urlCateList.getRootCateId());
|
||||
System.out.println(urlCateList.getName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Iterator iterator = CateNumber.entrySet().iterator();
|
||||
while(iterator.hasNext()) {
|
||||
|
@@ -25,22 +25,29 @@ public class UrlLiserServiceImpl implements UrlListService {
|
||||
UrlListDao urlListDao;
|
||||
@Autowired
|
||||
UserDao userDao;
|
||||
public int selectCateAndInsertUrl(String parent,String name , String icon ,String url ,String email)
|
||||
public int selectCateAndInsertUrl(String parent,String name , String icon ,String url ,Integer userId)
|
||||
{
|
||||
//找用户ID
|
||||
User user = userDao.selectByEmail(email);
|
||||
int userId = user.getId();
|
||||
|
||||
parent = parent.substring(1,parent.length()-1);
|
||||
UrlCateList urlCateList = urlCateListDao.selectCateByNameAnduserId(parent,userId);
|
||||
UrlList urlList = new UrlList();
|
||||
if (urlCateList == null)
|
||||
{
|
||||
urlList.setCateId(0);
|
||||
}else{
|
||||
urlList.setCateId(urlCateList.getId());
|
||||
}
|
||||
//设置属性
|
||||
urlList.setCateId(urlCateList.getId());
|
||||
|
||||
urlList.setUrl(url);
|
||||
urlList.setIcon(icon);
|
||||
urlList.setName(name);
|
||||
urlList.setName(name.substring(1,name.length()-1));
|
||||
Date date = new Date();
|
||||
urlList.setCreatetime(date.getTime());
|
||||
urlList.setViews(Long.valueOf("0"));
|
||||
urlList.setIsNeedAgent(Byte.valueOf(0+""));
|
||||
urlList.setIsAd(Byte.valueOf(0+""));
|
||||
urlList.setIsTop(Byte.valueOf(0+""));
|
||||
urlList.setStatus(Byte.valueOf(0+""));
|
||||
Byte b = 0;
|
||||
urlList.setNeedLogin(b);
|
||||
int flag = urlListDao.insert(urlList);
|
||||
|
@@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
@@ -59,8 +60,15 @@ public class UserServiceImpl implements UserService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String sendEmailActivecode(User user) {
|
||||
return EmailUtils.sendEmail(user);
|
||||
public HashMap<Integer, Object> getAllUsers() {
|
||||
HashMap<Integer, Object> map=new HashMap<>();
|
||||
map=userDao.selectAllUsers();
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String sendEmailActivecode(User user, HashMap<String,String>configMap) {
|
||||
return EmailUtils.sendEmail(user,configMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -5,6 +5,8 @@ package com.lovenav.utils;
|
||||
|
||||
|
||||
import com.lovenav.entity.User;
|
||||
import com.sun.mail.smtp.SMTPSendFailedException;
|
||||
import com.sun.mail.util.MailConnectException;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
|
||||
@@ -14,6 +16,7 @@ import javax.mail.internet.InternetAddress;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
import java.io.File;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Properties;
|
||||
|
||||
/*
|
||||
@@ -22,14 +25,18 @@ import java.util.Properties;
|
||||
* */
|
||||
public class EmailUtils {
|
||||
|
||||
public static String sendEmail(User user) {
|
||||
public static String sendEmail(User user, HashMap<String,String> configMap) {
|
||||
|
||||
//邮箱 lx_teach@163.com
|
||||
String myAccount = "482370576@qq.com";
|
||||
//授权码 java168
|
||||
String myPass = "hlilinclupppbice";
|
||||
//邮箱服务器
|
||||
String SMTPHost = "smtp.qq.com";
|
||||
// String myAccount = "482370576@qq.com";
|
||||
// //授权码 java168
|
||||
// String myPass = "hlilinclupppbice";
|
||||
// //邮箱服务器
|
||||
// String SMTPHost = "smtp.qq.com";
|
||||
String myAccount=configMap.get("email_sendEmail");
|
||||
String myPass=configMap.get("email_password");
|
||||
String SMTPHost = configMap.get("email_host");
|
||||
|
||||
//设置属性信息
|
||||
Properties prop = new Properties();
|
||||
//设置协议
|
||||
@@ -44,9 +51,13 @@ public class EmailUtils {
|
||||
//设置是否需要调试
|
||||
session.setDebug(false);
|
||||
//2、创建发送信息
|
||||
MimeMessage message = createMsg(session, myAccount, user, activecode);
|
||||
|
||||
|
||||
|
||||
|
||||
//4发送信息操作
|
||||
try {
|
||||
MimeMessage message = createMsg(session, myAccount, user, activecode);
|
||||
Transport tran = session.getTransport();
|
||||
//连接
|
||||
tran.connect(myAccount, myPass);
|
||||
@@ -54,10 +65,18 @@ public class EmailUtils {
|
||||
tran.sendMessage(message, message.getAllRecipients());
|
||||
//关闭
|
||||
tran.close();
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}catch (SMTPSendFailedException s){
|
||||
s.printStackTrace();
|
||||
return "该邮箱不存在";
|
||||
}catch (MailConnectException m){
|
||||
m.printStackTrace();
|
||||
return "配置文件有错误";
|
||||
}catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
return "配置文件有错误";}
|
||||
|
||||
return activecode;
|
||||
}
|
||||
|
||||
|
105
src/main/java/com/lovenav/utils/IPutils.java
Normal file
105
src/main/java/com/lovenav/utils/IPutils.java
Normal file
@@ -0,0 +1,105 @@
|
||||
package com.lovenav.utils;
|
||||
|
||||
|
||||
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.lovenav.entity.IpLocation;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.lionsoul.ip2region.xdb.Searcher;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class IPutils {
|
||||
|
||||
/**
|
||||
* 字符常量0
|
||||
*/
|
||||
private static final String ZERO="0";
|
||||
/**
|
||||
* 本级ip
|
||||
*/
|
||||
private static final String LOCALHOST="127.0.0.1";
|
||||
|
||||
|
||||
/**
|
||||
* 获取客户端的IP地址
|
||||
*/
|
||||
public static String getIpAddress(HttpServletRequest request) {
|
||||
|
||||
String ipAddress = request.getHeader("X-Forwarded-For");
|
||||
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
|
||||
ipAddress = request.getHeader("Proxy-Client-IP");
|
||||
}
|
||||
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
|
||||
ipAddress = request.getHeader("WL-Proxy-Client-IP");
|
||||
}
|
||||
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
|
||||
ipAddress = request.getRemoteAddr();
|
||||
if (LOCALHOST.equals(ipAddress)) {
|
||||
// 根据网卡取本机配置的IP
|
||||
InetAddress inet = null;
|
||||
try {
|
||||
inet = InetAddress.getLocalHost();
|
||||
ipAddress = inet.getHostAddress();
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
// 对于通过多个代理转发的情况,取第一个非unknown的IP地址。
|
||||
// 这里假设第一个IP为真实IP,后面的为代理IP。
|
||||
if (ipAddress != null && ipAddress.length() > 15) {
|
||||
if (ipAddress.indexOf(",") > 0) {
|
||||
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
|
||||
}
|
||||
}
|
||||
return ipAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据iP获取归属地信息
|
||||
* @return
|
||||
*/
|
||||
public static IpLocation getLocation(String ip) {
|
||||
IpLocation location = new IpLocation();
|
||||
location.setIp(ip);
|
||||
try (InputStream inputStream = IPutils.class.getResourceAsStream("/ip2region.xdb");) {
|
||||
byte[] bytes = IoUtil.readBytes(inputStream);
|
||||
Searcher searcher = Searcher.newWithBuffer(bytes);
|
||||
String region = searcher.search(ip);
|
||||
if (StrUtil.isAllNotBlank(region)) {
|
||||
// xdb返回格式 国家|区域|省份|城市|ISP,
|
||||
// 只有中国的数据绝大部分精确到了城市,其他国家部分数据只能定位到国家,后前的选项全部是0
|
||||
String[] result = region.split("\\|");
|
||||
location.setCountry(ZERO.equals(result[0])?StrUtil.EMPTY:result[0]);
|
||||
location.setProvince(ZERO.equals(result[2])?StrUtil.EMPTY:result[2]);
|
||||
location.setCity(ZERO.equals(result[3])?StrUtil.EMPTY:result[3]);
|
||||
location.setIsp(ZERO.equals(result[4])?StrUtil.EMPTY:result[4]);
|
||||
}
|
||||
searcher.close();
|
||||
} catch (Exception e) {
|
||||
log.error("ip地址解析异常,error:{}",e);
|
||||
return location;
|
||||
}
|
||||
return location;
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
@@ -250,4 +250,14 @@ public class CateAndUrl {
|
||||
public void setIsEncrypt(Byte isEncrypt) {
|
||||
this.isEncrypt = isEncrypt;
|
||||
}
|
||||
|
||||
Long number ;
|
||||
|
||||
public Long getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void setNumber(Long number) {
|
||||
this.number = number;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user