diff --git a/sql/picturebed.sql b/sql/picturebed.sql index a1ed495e..7ccb8dae 100644 --- a/sql/picturebed.sql +++ b/sql/picturebed.sql @@ -248,7 +248,10 @@ CREATE TABLE `user` ( `isok` int(2) NOT NULL, `memory` int(10) NULL DEFAULT NULL COMMENT '用户内存大小', `groupid` int(255) NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE + `apikey` VARCHAR(100) NULL DEFAULT NULL COMMENT '调用API的Key', + PRIMARY KEY (`id`) USING BTREE, + INDEX `apikey` (`apikey`), + INDEX `email` (`email`) ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- diff --git a/src/main/java/cn/hellohao/controller/AdminController.java b/src/main/java/cn/hellohao/controller/AdminController.java index 1ced80d0..c21b1eb0 100644 --- a/src/main/java/cn/hellohao/controller/AdminController.java +++ b/src/main/java/cn/hellohao/controller/AdminController.java @@ -369,6 +369,7 @@ public String toapi(HttpSession session, Model model, HttpServletRequest request //key信息 model.addAttribute("username", u.getUsername()); model.addAttribute("level", u.getLevel()); + model.addAttribute("apikey",u.getApikey()); model.addAttribute("domain", config.getDomain()); return "admin/api"; } diff --git a/src/main/java/cn/hellohao/controller/ClientController.java b/src/main/java/cn/hellohao/controller/ClientController.java index 344745bf..e385cf8a 100644 --- a/src/main/java/cn/hellohao/controller/ClientController.java +++ b/src/main/java/cn/hellohao/controller/ClientController.java @@ -57,282 +57,312 @@ public class ClientController { @PostMapping(value = "/clientupimg") @ResponseBody - public ResultBean clientupimg(HttpServletRequest request,@RequestParam("file") List file, String email, String pass) throws Exception { + public ResultBean clientupimg(HttpServletRequest request, @RequestParam("file") List file, @RequestParam(required = false) String apikey, @RequestParam(required = false) String email, @RequestParam(required = false) String pass) throws Exception { String userip = GetIPS.getIpAddr(request); - Print.Normal("上传者ip:"+userip); + Print.Normal("上传者ip:" + userip); ResultBean resultBean = null; JSONArray jsonArray = new JSONArray(); UploadConfig uploadConfig = uploadConfigService.getUpdateConfig(); if (uploadConfig.getApi() == 1) { - if (email != null && pass != null) { - Integer ret = userService.login(email, Base64Encryption.encryptBASE64(pass.getBytes()),null); + User user = null; + boolean iscon = false; + if (apikey != null) { + iscon = userService.isApiKeyExist(apikey); + if (iscon) { + user = userService.getUsersByApiKey(apikey); + } + } else if (email != null && pass != null) { + Integer ret = userService.login(email, Base64Encryption.encryptBASE64(pass.getBytes()), null); if (ret > 0) { - User user = userService.getUsers(email); - if (user.getIsok() == 1) { - User u = userService.getUsers(email); - Config config = configService.getSourceype();//查询当前系统使用的存储源类型。 + iscon = true; + user = userService.getUsers(email); + } + } + if (iscon) { + if (user.getIsok() == 1) { + User u = user; +// User u = userService.getUsersByApiKey(apikey); + Config config = configService.getSourceype();//查询当前系统使用的存储源类型。 - Integer Sourcekey = GetCurrentSource.GetSource(u.getId()); + Integer Sourcekey = GetCurrentSource.GetSource(u.getId()); - Keys key = keysService.selectKeys(Sourcekey); - if (key.getStorageType() != 0 && key.getStorageType() != null) { - if (key.getStorageType() == 1) { - nOSImageupload.Initialize(key);//实例化网易 - } else if (key.getStorageType() == 2) { - OSSImageupload.Initialize(key); - } else if (key.getStorageType() == 3 || key.getStorageType()==8) { - USSImageupload.Initialize(key); - } else if (key.getStorageType() == 4) { - KODOImageupload.Initialize(key); - } else if (key.getStorageType() == 6) { - COSImageupload.Initialize(key); - } else if (key.getStorageType() == 7) { - FTPImageupload.Initialize(key); - } else { - System.err.println("客户端:未获取到对象存储参数,初始化失败。"); + Keys key = keysService.selectKeys(Sourcekey); + if (key.getStorageType() != 0 && key.getStorageType() != null) { + if (key.getStorageType() == 1) { + nOSImageupload.Initialize(key);//实例化网易 + } else if (key.getStorageType() == 2) { + OSSImageupload.Initialize(key); + } else if (key.getStorageType() == 3 || key.getStorageType() == 8) { + USSImageupload.Initialize(key); + } else if (key.getStorageType() == 4) { + KODOImageupload.Initialize(key); + } else if (key.getStorageType() == 6) { + COSImageupload.Initialize(key); + } else if (key.getStorageType() == 7) { + FTPImageupload.Initialize(key); + } else { + System.err.println("客户端:未获取到对象存储参数,初始化失败。"); + } + } + Print.Normal("客户端:初始化上传。"); + Boolean b = false; + if (Sourcekey == 5) { + b = true; + } else { + b = StringUtils.doNull(Sourcekey, key);//判断对象是否有空值 + } + if (b) { + long stime = System.currentTimeMillis(); + String userpath = "tourist"; + if (uploadConfig.getUrltype() == 2) { + java.text.DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); + userpath = dateFormat.format(new Date()); + } else { + if (u != null) { + userpath = u.getUsername(); + } + } + Map map = new HashMap<>(); + for (MultipartFile multipartFile : file) { + //获取文件名 + String fileName = multipartFile.getOriginalFilename(); + String lastname = fileName.substring(fileName.lastIndexOf(".") + 1);//获取文件后缀 + if (!multipartFile.isEmpty()) { //判断文件是否为空 + map.put(lastname, multipartFile); } } - Print.Normal("客户端:初始化上传。"); - Boolean b = false; - if (Sourcekey == 5) { - b = true; + Map m = null; + Map m2 = null; + if (key.getStorageType() == 1) { + m = nOSImageupload.clientuploadNOS(map, userpath, uploadConfig); + } else if (key.getStorageType() == 2) { + m = ossImageupload.clientuploadOSS(map, userpath, uploadConfig); + } else if (key.getStorageType() == 3 || key.getStorageType() == 8) { + m = ussImageupload.clientuploadUSS(map, userpath, uploadConfig); + } else if (key.getStorageType() == 4) { + m = kodoImageupload.clientuploadKODO(map, userpath, uploadConfig); + } else if (key.getStorageType() == 5) { + m2 = LocUpdateImg.clientLocUpdateImg(map, userpath, uploadConfig); + } else if (key.getStorageType() == 6) { + m = cosImageupload.clientuploadCOS(map, userpath, uploadConfig); + } else if (key.getStorageType() == 7) { + m = ftpImageupload.clientuploadFTP(map, userpath, uploadConfig); } else { - b = StringUtils.doNull(Sourcekey, key);//判断对象是否有空值 + System.err.println("未获取到对象存储参数,上传失败。"); } - if (b) { - long stime = System.currentTimeMillis(); - String userpath = "tourist"; - if (uploadConfig.getUrltype() == 2) { - java.text.DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); - userpath = dateFormat.format(new Date()); - } else { - if (u != null) { - userpath = u.getUsername(); + Images img = new Images(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String times = df.format(new Date()); + System.out.println("上传图片的时间是:" + times); + if (key.getStorageType() == 5) { + for (Map.Entry entry : m2.entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("Imgname", entry.getKey().getImgname()); + if (key.getStorageType() == 5) { + if (config.getDomain() != null) { + jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); + img.setImgurl(config.getDomain() + "/" + entry.getKey().getImgurl());//图片链接 + } else { + jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); + img.setImgurl("http://" + IPPortUtil.getLocalIP() + ":" + IPPortUtil.getLocalPort() + "/" + entry.getKey().getImgurl());//图片链接 + } + } else { + jsonObject.put("Imgname", entry.getKey().getImgurl()); + img.setImgurl(entry.getKey().getImgurl());//图片链接 } - } - Map map = new HashMap<>(); - for (MultipartFile multipartFile : file) { - //获取文件名 - String fileName = multipartFile.getOriginalFilename(); - String lastname = fileName.substring(fileName.lastIndexOf(".") + 1);//获取文件后缀 - if (!multipartFile.isEmpty()) { //判断文件是否为空 - map.put(lastname, multipartFile); + img.setUpdatetime(times); + img.setSource(key.getStorageType()); + if (u == null) { + img.setUserid(0);//用户id + } else { + img.setUserid(u.getId());//用户id } + img.setSizes((entry.getValue())); + img.setImgname(SetText.getSubString(entry.getKey().getImgurl(), key.getRequestAddress() + "/", "")); + img.setAbnormal(userip); + img.setImgtype(0); + //-1证明超出大小, + if (entry.getValue() != -1) { + userService.insertimg(img); + } + long etime = System.currentTimeMillis(); + System.out.println("上传图片所用时长:" + String.valueOf(etime - stime) + "ms"); + jsonArray.add(jsonObject); } - Map m = null; - Map m2 = null; - if (key.getStorageType() == 1) { - m = nOSImageupload.clientuploadNOS(map, userpath, uploadConfig); - } else if (key.getStorageType() == 2) { - m = ossImageupload.clientuploadOSS(map, userpath, uploadConfig); - } else if (key.getStorageType() == 3 || key.getStorageType()==8) { - m = ussImageupload.clientuploadUSS(map, userpath, uploadConfig); - } else if (key.getStorageType() == 4) { - m = kodoImageupload.clientuploadKODO(map, userpath, uploadConfig); - } else if (key.getStorageType() == 5) { - m2 = LocUpdateImg.clientLocUpdateImg(map, userpath, uploadConfig); - } else if (key.getStorageType() == 6) { - m = cosImageupload.clientuploadCOS(map, userpath, uploadConfig); - } else if (key.getStorageType() == 7) { - m = ftpImageupload.clientuploadFTP(map, userpath, uploadConfig); - } else { - System.err.println("未获取到对象存储参数,上传失败。"); - } - Images img = new Images(); - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - String times = df.format(new Date()); - System.out.println("上传图片的时间是:" + times); - if (key.getStorageType() == 5) { - for (Map.Entry entry : m2.entrySet()) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("Imgname", entry.getKey().getImgname()); - if (key.getStorageType() == 5) { - if (config.getDomain() != null) { - jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); - img.setImgurl(config.getDomain() + "/" + entry.getKey().getImgurl());//图片链接 - } else { - jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); - img.setImgurl("http://" + IPPortUtil.getLocalIP() + ":" + IPPortUtil.getLocalPort() + "/" + entry.getKey().getImgurl());//图片链接 - } - } else { - jsonObject.put("Imgname", entry.getKey().getImgurl()); - img.setImgurl(entry.getKey().getImgurl());//图片链接 - } - img.setUpdatetime(times); - img.setSource(key.getStorageType()); - if (u == null) { - img.setUserid(0);//用户id + } else { + for (Map.Entry entry : m.entrySet()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("Imgname", entry.getKey().getImgname()); + if (key.getStorageType() == 5) { + if (config.getDomain() != null) { + jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); + img.setImgurl(config.getDomain() + "/" + entry.getKey().getImgurl());//图片链接 } else { - img.setUserid(u.getId());//用户id - } - img.setSizes((entry.getValue())); - img.setImgname(SetText.getSubString(entry.getKey().getImgurl(), key.getRequestAddress() + "/", "")); - img.setAbnormal(userip); - img.setImgtype(0); - //-1证明超出大小, - if (entry.getValue() != -1) { - userService.insertimg(img); + jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); + img.setImgurl("http://" + IPPortUtil.getLocalIP() + ":" + IPPortUtil.getLocalPort() + "/" + entry.getKey().getImgurl());//图片链接 } - long etime = System.currentTimeMillis(); - System.out.println("上传图片所用时长:" + String.valueOf(etime - stime) + "ms"); - jsonArray.add(jsonObject); + } else { + jsonObject.put("Imgurl", entry.getKey().getImgurl()); + img.setImgurl(entry.getKey().getImgurl());//图片链接 } - } else { - for (Map.Entry entry : m.entrySet()) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("Imgname", entry.getKey().getImgname()); - if (key.getStorageType() == 5) { - if (config.getDomain() != null) { - jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); - img.setImgurl(config.getDomain() + "/" + entry.getKey().getImgurl());//图片链接 - } else { - jsonObject.put("Imgurl", config.getDomain() + "/" + entry.getKey().getImgurl()); - img.setImgurl("http://" + IPPortUtil.getLocalIP() + ":" + IPPortUtil.getLocalPort() + "/" + entry.getKey().getImgurl());//图片链接 - } - } else { - jsonObject.put("Imgurl", entry.getKey().getImgurl()); - img.setImgurl(entry.getKey().getImgurl());//图片链接 - } - img.setUpdatetime(times); - img.setSource(key.getStorageType()); - if (u == null) { - img.setUserid(0);//用户id - } else { - img.setUserid(u.getId());//用户id - } - img.setSizes((entry.getValue())/1024); - img.setImgname(SetText.getSubString(entry.getKey().getImgurl(), key.getRequestAddress() + "/", "")); - img.setAbnormal(userip); - img.setImgtype(0); - //-1证明超出大小, - if (entry.getValue() != -1) { - userService.insertimg(img); - } - long etime = System.currentTimeMillis(); - System.out.println("上传图片所用时长:" + String.valueOf(etime - stime) + "ms"); - jsonArray.add(jsonObject); + img.setUpdatetime(times); + img.setSource(key.getStorageType()); + if (u == null) { + img.setUserid(0);//用户id + } else { + img.setUserid(u.getId());//用户id } + img.setSizes((entry.getValue()) / 1024); + img.setImgname(SetText.getSubString(entry.getKey().getImgurl(), key.getRequestAddress() + "/", "")); + img.setAbnormal(userip); + img.setImgtype(0); + //-1证明超出大小, + if (entry.getValue() != -1) { + userService.insertimg(img); + } + long etime = System.currentTimeMillis(); + System.out.println("上传图片所用时长:" + String.valueOf(etime - stime) + "ms"); + jsonArray.add(jsonObject); } - resultBean = ResultBean.success(jsonArray); - } else {resultBean = ResultBean.error(-1, "服务器内部错误,请联系管理员");} + } + resultBean = ResultBean.success(jsonArray); + } else { + resultBean = ResultBean.error(-1, "服务器内部错误,请联系管理员"); } - } else {resultBean = ResultBean.error(-2, "此用户信息不正确。");} - } else {resultBean = ResultBean.error(-3, "邮箱密码为空");} - } - else{resultBean = ResultBean.error(-4, "管理员关闭了API接口");} - return resultBean; + } + } else { + resultBean = ResultBean.error(-2, "此用户信息不正确。"); + } + } else + + { + resultBean = ResultBean.error(-4, "管理员关闭了API接口"); } + return resultBean; +} @PostMapping(value = "/clientupurlimg") @ResponseBody - public ResultBean clientupurlimg( String imgurl, HttpServletRequest request, Integer setday, - String email,String pass) throws Exception { + public ResultBean clientupurlimg(String imgurl, HttpServletRequest request, Integer setday, + String email, String pass) throws Exception { String userip = GetIPS.getIpAddr(request); - Print.Normal("上传者ip:"+userip); + Print.Normal("上传者ip:" + userip); ResultBean resultBean = null; UploadConfig uploadConfig = uploadConfigService.getUpdateConfig(); if (uploadConfig.getApi() == 1) { if (email != null && pass != null) { - Integer ret = userService.login(email, Base64Encryption.encryptBASE64(pass.getBytes()),null); + Integer ret = userService.login(email, Base64Encryption.encryptBASE64(pass.getBytes()), null); if (ret > 0) { User u = userService.getUsers(email); Config config = configService.getSourceype();//查询当前系统使用的存储源类型。 - Integer usermemory =0; - Integer memory =0; - Integer Sourcekey=0; - if(u==null){ + Integer usermemory = 0; + Integer memory = 0; + Integer Sourcekey = 0; + if (u == null) { Sourcekey = GetCurrentSource.GetSource(null); memory = uploadConfig.getVisitormemory(); - usermemory= imgService.getusermemory(0); - if(usermemory==null){usermemory = 0;} - }else{ + usermemory = imgService.getusermemory(0); + if (usermemory == null) { + usermemory = 0; + } + } else { Sourcekey = GetCurrentSource.GetSource(u.getId()); memory = userService.getUsers(u.getEmail()).getMemory(); - usermemory= imgService.getusermemory(u.getId()); - if(usermemory==null){usermemory = 0;} + usermemory = imgService.getusermemory(u.getId()); + if (usermemory == null) { + usermemory = 0; + } } String userpath = "tourist"; - if(uploadConfig.getUrltype()==2){ + if (uploadConfig.getUrltype() == 2) { java.text.DateFormat dateFormat = new java.text.SimpleDateFormat("yyyy/MM/dd"); userpath = dateFormat.format(new Date()); - }else{if (u != null) { userpath = u.getUsername();}} + } else { + if (u != null) { + userpath = u.getUsername(); + } + } JSONArray jsonArray = new JSONArray(); Keys key = keysService.selectKeys(Sourcekey); long imgsize = ImgUrlUtil.getFileLength(imgurl); Integer youke = uploadConfig.getFilesizetourists(); Integer yonghu = uploadConfig.getFilesizeuser(); - String uuid= UUID.randomUUID().toString().replace("-", ""); - Boolean bo =false; - if(Sourcekey==5){ - bo =true; - }else{bo = StringUtils.doNull(Sourcekey,key);//判断对象是否有空值 + String uuid = UUID.randomUUID().toString().replace("-", ""); + Boolean bo = false; + if (Sourcekey == 5) { + bo = true; + } else { + bo = StringUtils.doNull(Sourcekey, key);//判断对象是否有空值 } // //容量判断 - if(u==null){ + if (u == null) { memory = uploadConfig.getVisitormemory(); - usermemory= imgService.getusermemory(0); - if(usermemory==null){usermemory = 0;} - }else{ + usermemory = imgService.getusermemory(0); + if (usermemory == null) { + usermemory = 0; + } + } else { memory = userService.getUsers(u.getEmail()).getMemory(); - usermemory= imgService.getusermemory(u.getId()); - if(usermemory==null){usermemory = 0;} + usermemory = imgService.getusermemory(u.getId()); + if (usermemory == null) { + usermemory = 0; + } } - Print.warning("上传地址是:"+request.getSession().getServletContext().getRealPath("/")+"/hellohaotmp/"); - if(bo){ - if(usermemory/10240 && imgsize<=(yonghu*1024*1024)){ - try{ - boolean bl =ImgUrlUtil.downLoadFromUrl(imgurl, - uuid, request.getSession().getServletContext().getRealPath("/")+"/hellohaotmp/"); - if(bl==true){ - FileInputStream is = new FileInputStream(request.getSession().getServletContext().getRealPath("/")+"/hellohaotmp/"+uuid); + if (u != null) { + if (imgsize > 0 && imgsize <= (yonghu * 1024 * 1024)) { + try { + boolean bl = ImgUrlUtil.downLoadFromUrl(imgurl, + uuid, request.getSession().getServletContext().getRealPath("/") + "/hellohaotmp/"); + if (bl == true) { + FileInputStream is = new FileInputStream(request.getSession().getServletContext().getRealPath("/") + "/hellohaotmp/" + uuid); byte[] b = new byte[3]; is.read(b, 0, b.length); String xxx = ImgUrlUtil.bytesToHexString(b); xxx = xxx.toUpperCase(); String ooo = TypeDict.checkType(xxx); - if(is!=null){ + if (is != null) { is.close(); } - if(!ooo.equals("0000")){ + if (!ooo.equals("0000")) { Map map = new HashMap<>(); - map.put(ooo, request.getSession().getServletContext().getRealPath("/")+"/hellohaotmp/"+uuid); + map.put(ooo, request.getSession().getServletContext().getRealPath("/") + "/hellohaotmp/" + uuid); Map m = null; - if(key.getStorageType()==1){ - m = nOSImageupload.Imageupload(null, userpath,map,setday); - }else if (key.getStorageType()==2){ - m = ossImageupload.ImageuploadOSS(null, userpath,map,setday); - }else if(key.getStorageType()==3 || key.getStorageType()==8){ - m = ussImageupload.ImageuploadUSS(null, userpath,map,setday); - }else if(key.getStorageType()==4){ - m = kodoImageupload.ImageuploadKODO(null, userpath,map,setday); - }else if(key.getStorageType()==5){ - m = LocUpdateImg.ImageuploadLOC(null,userpath,map,setday); - }else if(key.getStorageType()==6){ - m = cosImageupload.ImageuploadCOS(null,userpath,map,setday); - }else if(key.getStorageType()==7){ - m = ftpImageupload.ImageuploadFTP(null,userpath,map,setday); - } - else{ + if (key.getStorageType() == 1) { + m = nOSImageupload.Imageupload(null, userpath, map, setday); + } else if (key.getStorageType() == 2) { + m = ossImageupload.ImageuploadOSS(null, userpath, map, setday); + } else if (key.getStorageType() == 3 || key.getStorageType() == 8) { + m = ussImageupload.ImageuploadUSS(null, userpath, map, setday); + } else if (key.getStorageType() == 4) { + m = kodoImageupload.ImageuploadKODO(null, userpath, map, setday); + } else if (key.getStorageType() == 5) { + m = LocUpdateImg.ImageuploadLOC(null, userpath, map, setday); + } else if (key.getStorageType() == 6) { + m = cosImageupload.ImageuploadCOS(null, userpath, map, setday); + } else if (key.getStorageType() == 7) { + m = ftpImageupload.ImageuploadFTP(null, userpath, map, setday); + } else { System.err.println("未获取到对象存储参数,上传失败。"); } Images img = new Images(); - SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String times = df.format(new Date()); - System.out.println("上传图片的时间是:"+times); + System.out.println("上传图片的时间是:" + times); for (Map.Entry entry : m.entrySet()) { - if(key.getStorageType()==5){ - if(config.getDomain()!=null){ - jsonArray.add(config.getDomain()+"/links/"+entry.getKey().getImgurl()); - img.setImgurl(config.getDomain()+"/links/"+entry.getKey().getImgurl());//图片链接 - }else{ - jsonArray.add(config.getDomain()+"/links/"+entry.getKey().getImgurl()); - img.setImgurl("http://"+IPPortUtil.getLocalIP()+":"+IPPortUtil.getLocalPort()+"/links/"+entry.getKey().getImgurl());//图片链接 + if (key.getStorageType() == 5) { + if (config.getDomain() != null) { + jsonArray.add(config.getDomain() + "/links/" + entry.getKey().getImgurl()); + img.setImgurl(config.getDomain() + "/links/" + entry.getKey().getImgurl());//图片链接 + } else { + jsonArray.add(config.getDomain() + "/links/" + entry.getKey().getImgurl()); + img.setImgurl("http://" + IPPortUtil.getLocalIP() + ":" + IPPortUtil.getLocalPort() + "/links/" + entry.getKey().getImgurl());//图片链接 } - }else{ + } else { jsonArray.add(entry.getKey().getImgurl()); img.setImgurl(entry.getKey().getImgurl()); } @@ -352,69 +382,68 @@ public ResultBean clientupurlimg( String imgurl, HttpServletRequest request, Int System.out.println("上传图片所用时长:" + String.valueOf(etime - stime) + "ms"); } resultBean = ResultBean.success(jsonArray); - }else{ - resultBean = ResultBean.error(-3,"文件类型不符合要求"); + } else { + resultBean = ResultBean.error(-3, "文件类型不符合要求"); } } - }catch (Exception e) { + } catch (Exception e) { // TODO: handle exception Print.warning(e.toString()); - resultBean = ResultBean.error(-4,"该文件不支持上传"); + resultBean = ResultBean.error(-4, "该文件不支持上传"); } - }else{ - resultBean = ResultBean.error(-2,"文件过大"); + } else { + resultBean = ResultBean.error(-2, "文件过大"); } - }else{ - if(imgsize>0 && imgsize<=(youke*1024*1024)){ - try{ + } else { + if (imgsize > 0 && imgsize <= (youke * 1024 * 1024)) { + try { boolean bl = ImgUrlUtil.downLoadFromUrl(imgurl, - uuid, request.getSession().getServletContext().getRealPath("/")+"/hellohaotmp/"); - if(bl==true){ - FileInputStream is = new FileInputStream(request.getSession().getServletContext().getRealPath("/")+"/hellohaotmp/"+uuid); + uuid, request.getSession().getServletContext().getRealPath("/") + "/hellohaotmp/"); + if (bl == true) { + FileInputStream is = new FileInputStream(request.getSession().getServletContext().getRealPath("/") + "/hellohaotmp/" + uuid); byte[] b = new byte[3]; is.read(b, 0, b.length); String xxx = ImgUrlUtil.bytesToHexString(b); xxx = xxx.toUpperCase(); String ooo = TypeDict.checkType(xxx); - if(is!=null){ + if (is != null) { is.close(); } - if(!xxx.equals("0000")){ + if (!xxx.equals("0000")) { Map map = new HashMap<>(); - map.put(ooo, request.getSession().getServletContext().getRealPath("/")+"/hellohaotmp/"+uuid); + map.put(ooo, request.getSession().getServletContext().getRealPath("/") + "/hellohaotmp/" + uuid); Map m = null; - if(key.getStorageType()==1){ - m = nOSImageupload.Imageupload(null, userpath,map,setday); - }else if (key.getStorageType()==2){ - m = ossImageupload.ImageuploadOSS(null, userpath,map,setday); - }else if(key.getStorageType()==3 || key.getStorageType()==8){ - m = ussImageupload.ImageuploadUSS(null, userpath,map,setday); - }else if(key.getStorageType()==4){ - m = kodoImageupload.ImageuploadKODO(null, userpath,map,setday); - }else if(key.getStorageType()==5){ - m =LocUpdateImg.ImageuploadLOC(null,userpath, map,setday); - }else if(key.getStorageType()==6){ - m =cosImageupload.ImageuploadCOS(null,userpath, map,setday); - }else if(key.getStorageType()==7){ - m = ftpImageupload.ImageuploadFTP(null,userpath,map,setday); - } - else{ + if (key.getStorageType() == 1) { + m = nOSImageupload.Imageupload(null, userpath, map, setday); + } else if (key.getStorageType() == 2) { + m = ossImageupload.ImageuploadOSS(null, userpath, map, setday); + } else if (key.getStorageType() == 3 || key.getStorageType() == 8) { + m = ussImageupload.ImageuploadUSS(null, userpath, map, setday); + } else if (key.getStorageType() == 4) { + m = kodoImageupload.ImageuploadKODO(null, userpath, map, setday); + } else if (key.getStorageType() == 5) { + m = LocUpdateImg.ImageuploadLOC(null, userpath, map, setday); + } else if (key.getStorageType() == 6) { + m = cosImageupload.ImageuploadCOS(null, userpath, map, setday); + } else if (key.getStorageType() == 7) { + m = ftpImageupload.ImageuploadFTP(null, userpath, map, setday); + } else { System.err.println("未获取到对象存储参数,上传失败。"); } Images img = new Images(); - SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String times = df.format(new Date()); - System.out.println("上传图片的时间是:"+times); + System.out.println("上传图片的时间是:" + times); for (Map.Entry entry : m.entrySet()) { - if(key.getStorageType()==5){ - if(config.getDomain()!=null){ - jsonArray.add(config.getDomain()+"/links/"+entry.getKey().getImgurl()); - img.setImgurl(config.getDomain()+"/links/"+entry.getKey().getImgurl());//图片链接 - }else{ - jsonArray.add(config.getDomain()+"/links/"+entry.getKey().getImgurl()); - img.setImgurl("http://"+IPPortUtil.getLocalIP()+":"+IPPortUtil.getLocalPort()+"/links/"+entry.getKey().getImgurl());//图片链接 + if (key.getStorageType() == 5) { + if (config.getDomain() != null) { + jsonArray.add(config.getDomain() + "/links/" + entry.getKey().getImgurl()); + img.setImgurl(config.getDomain() + "/links/" + entry.getKey().getImgurl());//图片链接 + } else { + jsonArray.add(config.getDomain() + "/links/" + entry.getKey().getImgurl()); + img.setImgurl("http://" + IPPortUtil.getLocalIP() + ":" + IPPortUtil.getLocalPort() + "/links/" + entry.getKey().getImgurl());//图片链接 } - }else{ + } else { jsonArray.add(entry.getKey().getImgurl()); img.setImgurl(entry.getKey().getImgurl());//图片链接 } @@ -434,29 +463,35 @@ public ResultBean clientupurlimg( String imgurl, HttpServletRequest request, Int System.out.println("上传图片所用时长:" + String.valueOf(etime - stime) + "ms"); } resultBean = ResultBean.success(jsonArray); - }else{ - resultBean = ResultBean.error(-3,"文件类型不符合要求"); + } else { + resultBean = ResultBean.error(-3, "文件类型不符合要求"); } } - }catch (Exception e) { + } catch (Exception e) { // TODO: handle exception Print.warning(e.toString()); - resultBean = ResultBean.error(-4,"文件类型不符合要求"); + resultBean = ResultBean.error(-4, "文件类型不符合要求"); } - }else{ - resultBean = ResultBean.error(-2,"图片太大或不存在"); + } else { + resultBean = ResultBean.error(-2, "图片太大或不存在"); } } - }else{ - resultBean = ResultBean.error(-5,"可用空间不足"); + } else { + resultBean = ResultBean.error(-5, "可用空间不足"); } - }else{ - resultBean = ResultBean.error(-1,"未配置存储源"); + } else { + resultBean = ResultBean.error(-1, "未配置存储源"); } - }else {resultBean = ResultBean.error(-2, "此用户信息不正确。");} - }else {resultBean = ResultBean.error(-3, "邮箱或密码为空");} - }else{resultBean = ResultBean.error(-4, "管理员关闭了API接口");} -Print.Normal(resultBean.toString()); + } else { + resultBean = ResultBean.error(-2, "此用户信息不正确。"); + } + } else { + resultBean = ResultBean.error(-3, "邮箱或密码为空"); + } + } else { + resultBean = ResultBean.error(-4, "管理员关闭了API接口"); + } + Print.Normal(resultBean.toString()); return resultBean; /** * 错误返回值含义: @@ -468,17 +503,17 @@ public ResultBean clientupurlimg( String imgurl, HttpServletRequest request, Int @RequestMapping("/clientlogin") @ResponseBody - public String login( HttpSession httpSession, String email, String password) { + public String login(HttpSession httpSession, String email, String password) { JSONArray jsonArray = new JSONArray(); String basepass = Base64Encryption.encryptBASE64(password.getBytes()); - Integer ret = userService.login(email, basepass,null); + Integer ret = userService.login(email, basepass, null); if (ret > 0) { User user = userService.getUsers(email); if (user.getIsok() == 1) { jsonArray.add(1); - } else if(ret==-1){ + } else if (ret == -1) { jsonArray.add(-1); - }else { + } else { jsonArray.add(-2); } } else { @@ -487,7 +522,7 @@ public String login( HttpSession httpSession, String email, String password) { return jsonArray.toString(); } - @GetMapping (value = "/notices") + @GetMapping(value = "/notices") @ResponseBody public String notices() throws Exception { return "-1";//-1就是没有公告,客户端不显示 @@ -498,16 +533,14 @@ public String notices() throws Exception { public Msg getNotice() { Msg msg = new Msg(); String url = "http://tc.hellohao.cn/getNoticeText"; - if(TestUrl.testUrlWithTimeOut(url,2000)){ - String urls =url; + if (TestUrl.testUrlWithTimeOut(url, 2000)) { + String urls = url; msg.setData(HttpUtil.get(urls)); - }else{ + } else { msg.setData("暂无公告"); } return msg; } - - } diff --git a/src/main/java/cn/hellohao/controller/UserController.java b/src/main/java/cn/hellohao/controller/UserController.java index 57d5a23a..69307e44 100644 --- a/src/main/java/cn/hellohao/controller/UserController.java +++ b/src/main/java/cn/hellohao/controller/UserController.java @@ -2,10 +2,7 @@ import java.net.URLDecoder; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Random; -import java.util.UUID; +import java.util.*; import javax.mail.internet.MimeMessage; import javax.servlet.http.Cookie; @@ -47,7 +44,18 @@ public class UserController { private SysConfigService sysConfigService; @Autowired private UserGroupService userGroupService; - + @RequestMapping("/reset/apikey") + @ResponseBody + public ResultBean resetApikey(HttpSession session) { + Map map = new HashMap<>(); + User user = (User)session.getAttribute("user"); + String newApikey = userService.resetApikey(user.getId()); + + map.put("newApikey",newApikey); + user.setApikey(newApikey); + session.setAttribute("user",user); + return ResultBean.success(map); + } @RequestMapping("/register") @ResponseBody public String Register(@Valid User u,Integer zctmp) { @@ -72,6 +80,7 @@ public String Register(@Valid User u,Integer zctmp) { user.setEmail(u.getEmail()); user.setUsername(u.getUsername()); user.setPassword(Base64Encryption.encryptBASE64(u.getPassword().getBytes())); + user.setApikey(userService.createApikey()); Config config = configService.getSourceype(); System.err.println("是否启用了邮箱激活:"+emailConfig.getUsing()); Integer type = 0; diff --git a/src/main/java/cn/hellohao/dao/UserMapper.java b/src/main/java/cn/hellohao/dao/UserMapper.java index 6a4f8319..11dc4961 100644 --- a/src/main/java/cn/hellohao/dao/UserMapper.java +++ b/src/main/java/cn/hellohao/dao/UserMapper.java @@ -10,6 +10,14 @@ @Mapper public interface UserMapper { + Integer resetApikey(@Param("userid")Integer userid,@Param("newApikey")String newApikey); + User getUsersByApikey(@Param("apikey") String apikey); + /** + * 检查APIkey用户名是否重复 + * @param apikey + * @return + */ + Integer checkApiKey(@Param("apikey") String apikey); //注册 Integer register(User user); diff --git a/src/main/java/cn/hellohao/pojo/User.java b/src/main/java/cn/hellohao/pojo/User.java index afa502ad..72100026 100644 --- a/src/main/java/cn/hellohao/pojo/User.java +++ b/src/main/java/cn/hellohao/pojo/User.java @@ -22,7 +22,15 @@ public class User { private Integer isok; private Integer memory; private Integer groupid; + private String apikey; + public String getApikey() { + return apikey; + } + + public void setApikey(String apikey) { + this.apikey = apikey; + } public User() { super(); diff --git a/src/main/java/cn/hellohao/service/UserService.java b/src/main/java/cn/hellohao/service/UserService.java index 63faa1b4..dc0b6b54 100644 --- a/src/main/java/cn/hellohao/service/UserService.java +++ b/src/main/java/cn/hellohao/service/UserService.java @@ -7,6 +7,29 @@ import java.util.List; public interface UserService { + User getUsersByApiKey(String apikey); + /** + * + * @param userid + * @return 新的Apikey + */ + String resetApikey(Integer userid); + + /** + * apikey是否存在 + * + * @param apikey + * @return + */ + Boolean isApiKeyExist(String apikey); + /** + * 创建一个新的Apikey + * + * @return + */ + String createApikey(); + User getUsersByApikey(String apikey); + //注册 Integer register(User user); diff --git a/src/main/java/cn/hellohao/service/impl/UserServiceImpl.java b/src/main/java/cn/hellohao/service/impl/UserServiceImpl.java index c54a9bc3..3e7154b8 100644 --- a/src/main/java/cn/hellohao/service/impl/UserServiceImpl.java +++ b/src/main/java/cn/hellohao/service/impl/UserServiceImpl.java @@ -7,10 +7,12 @@ import cn.hellohao.pojo.User; import cn.hellohao.service.UserService; import cn.hellohao.utils.Print; +import cn.hutool.crypto.digest.DigestUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.List; @Service @@ -19,6 +21,50 @@ public class UserServiceImpl implements UserService { private UserMapper userMapper; @Autowired private CodeMapper codeMapper; + + @Override + public String createApikey() { + String apikey; + do { + apikey = DigestUtil.md5Hex(LocalDateTime.now().toString()); + } while (isApiKeyExist(apikey)); + return apikey; + } + + @Override + public User getUsersByApikey(String apikey) { + // TODO Auto-generated method stub + return userMapper.getUsersByApikey(apikey); + } + + /** + * apikey是否存在 + * + * @param apikey + * @return + */ + @Override + public Boolean isApiKeyExist(String apikey) { + if (userMapper.checkApiKey(apikey) > 0) { + return true; + } + return false; + } + + @Override + public User getUsersByApiKey(String apikey) { + return userMapper.getUsersByApikey(apikey); + } + + @Override + public String resetApikey(Integer userid){ + String newApikey=createApikey(); + userMapper.resetApikey( userid, newApikey); + return newApikey; + } + + + @Override public Integer register(User user) { // TODO Auto-generated method stub diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index b65d446d..f9342b38 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -1,11 +1,36 @@ - + + + + + UPDATE `user` + + `apikey` = #{newApikey} + + where `id`=#{userid} + - INSERT INTO user (id, username, PASSWORD, email, birthder, LEVEL,uid,isok,memory,groupid) - VALUES (NULL, #{username}, #{password}, #{email}, #{birthder}, #{level},#{uid},#{isok},#{memory},#{groupid} ) + INSERT INTO user (id, username, PASSWORD, email, birthder, LEVEL,uid,isok,memory,groupid,apikey) + VALUES (NULL, #{username}, #{password}, #{email}, #{birthder}, #{level},#{uid},#{isok},#{memory},#{groupid} ,#{apikey} ) @@ -73,7 +99,8 @@ uid, isok, memory, - groupid + groupid, + apikey FROM user WHERE id = #{id} @@ -88,7 +115,8 @@ uid, isok, memory, - groupid + groupid, + apikey FROM user WHERE uid = #{uid} diff --git a/src/main/resources/static/static/js/toastr.min.js b/src/main/resources/static/static/js/toastr.min.js new file mode 100644 index 00000000..4b5f34a0 --- /dev/null +++ b/src/main/resources/static/static/js/toastr.min.js @@ -0,0 +1,7 @@ +/* + * Note that this is toastr v2.1.3, the "latest" version in url has no more maintenance, + * please go to https://cdnjs.com/libraries/toastr.js and pick a certain version you want to use, + * make sure you copy the url from the website since the url may change between versions. + * */ +!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return g({type:O.error,iconClass:m().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=m()),v=e("#"+t.containerId),v.length?v:(n&&(v=d(t)),v)}function o(e,t,n){return g({type:O.info,iconClass:m().iconClasses.info,message:e,optionsOverride:n,title:t})}function s(e){C=e}function i(e,t,n){return g({type:O.success,iconClass:m().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return g({type:O.warning,iconClass:m().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e,t){var o=m();v||n(o),u(e,o,t)||l(o)}function c(t){var o=m();return v||n(o),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function l(t){for(var n=v.children(),o=n.length-1;o>=0;o--)u(e(n[o]),t)}function u(t,n,o){var s=!(!o||!o.force)&&o.force;return!(!t||!s&&0!==e(":focus",t).length)&&(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0)}function d(t){return v=e("
").attr("id",t.containerId).addClass(t.positionClass),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1}}function f(e){C&&C(e)}function g(t){function o(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function s(){c(),u(),d(),p(),g(),C(),l(),i()}function i(){var e="";switch(t.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}I.attr("aria-live",e)}function a(){E.closeOnHover&&I.hover(H,D),!E.onclick&&E.tapToDismiss&&I.click(b),E.closeButton&&j&&j.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),E.onCloseClick&&E.onCloseClick(e),b(!0)}),E.onclick&&I.click(function(e){E.onclick(e),b()})}function r(){I.hide(),I[E.showMethod]({duration:E.showDuration,easing:E.showEasing,complete:E.onShown}),E.timeOut>0&&(k=setTimeout(b,E.timeOut),F.maxHideTime=parseFloat(E.timeOut),F.hideEta=(new Date).getTime()+F.maxHideTime,E.progressBar&&(F.intervalId=setInterval(x,10)))}function c(){t.iconClass&&I.addClass(E.toastClass).addClass(y)}function l(){E.newestOnTop?v.prepend(I):v.append(I)}function u(){if(t.title){var e=t.title;E.escapeHtml&&(e=o(t.title)),M.append(e).addClass(E.titleClass),I.append(M)}}function d(){if(t.message){var e=t.message;E.escapeHtml&&(e=o(t.message)),B.append(e).addClass(E.messageClass),I.append(B)}}function p(){E.closeButton&&(j.addClass(E.closeClass).attr("role","button"),I.prepend(j))}function g(){E.progressBar&&(q.addClass(E.progressClass),I.prepend(q))}function C(){E.rtl&&I.addClass("rtl")}function O(e,t){if(e.preventDuplicates){if(t.message===w)return!0;w=t.message}return!1}function b(t){var n=t&&E.closeMethod!==!1?E.closeMethod:E.hideMethod,o=t&&E.closeDuration!==!1?E.closeDuration:E.hideDuration,s=t&&E.closeEasing!==!1?E.closeEasing:E.hideEasing;if(!e(":focus",I).length||t)return clearTimeout(F.intervalId),I[n]({duration:o,easing:s,complete:function(){h(I),clearTimeout(k),E.onHidden&&"hidden"!==P.state&&E.onHidden(),P.state="hidden",P.endTime=new Date,f(P)}})}function D(){(E.timeOut>0||E.extendedTimeOut>0)&&(k=setTimeout(b,E.extendedTimeOut),F.maxHideTime=parseFloat(E.extendedTimeOut),F.hideEta=(new Date).getTime()+F.maxHideTime)}function H(){clearTimeout(k),F.hideEta=0,I.stop(!0,!0)[E.showMethod]({duration:E.showDuration,easing:E.showEasing})}function x(){var e=(F.hideEta-(new Date).getTime())/F.maxHideTime*100;q.width(e+"%")}var E=m(),y=t.iconClass||E.iconClass;if("undefined"!=typeof t.optionsOverride&&(E=e.extend(E,t.optionsOverride),y=t.optionsOverride.iconClass||y),!O(E,t)){T++,v=n(E,!0);var k=null,I=e("
"),M=e("
"),B=e("
"),q=e("
"),j=e(E.closeHtml),F={intervalId:null,hideEta:null,maxHideTime:null},P={toastId:T,state:"visible",startTime:new Date,options:E,map:t};return s(),r(),a(),f(P),E.debug&&console&&console.log(P),I}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),w=void 0))}var v,C,w,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:o,options:{},subscribe:s,success:i,version:"2.1.3",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); +//# sourceMappingURL=toastr.js.map diff --git a/src/main/resources/templates/admin/api.html b/src/main/resources/templates/admin/api.html index bc414f5c..54c0b466 100644 --- a/src/main/resources/templates/admin/api.html +++ b/src/main/resources/templates/admin/api.html @@ -6,6 +6,7 @@ +