diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/controller/WpsController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/controller/WpsController.java index 1f07e6c..5718800 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/controller/WpsController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/controller/WpsController.java @@ -7,10 +7,12 @@ import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.model.AttachmentDetail; import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.model.AttachmentEntity; import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityEntity; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; import com.chinaunicom.mall.ebtp.common.log.OperationLogDetail; import com.chinaunicom.mall.ebtp.common.log.enums.EbtpLogBusinessModule; import com.chinaunicom.mall.ebtp.common.log.enums.EbtpLogType; import com.chinaunicom.mall.ebtp.extend.feign.client.UnicomOAuthClient; +import com.chinaunicom.mall.ebtp.extend.shortmessage.utils.RSA; import com.chinaunicom.mall.ebtp.extend.wps.entity.KingSoftFileSaveVo; import com.chinaunicom.mall.ebtp.extend.wps.enums.WpsExceptionEnum; import com.chinaunicom.mall.ebtp.extend.wps.service.WpsService; @@ -124,11 +126,41 @@ public class WpsController { * @param in * @return */ +// @ApiOperation("(金山)获得编辑或查看链接") +// @PostMapping("/kingSoft/getWpsUrl") +// public BaseResponse getKSWpsUrl(@RequestBody WpsClientInVo in) { +// String str = this.wpsService.getKSWpsUrl(in); +// return BaseResponse.success(str); +// } + /** + * (金山)获得编辑或查看链接 + * + * @return + */ @ApiOperation("(金山)获得编辑或查看链接") - @PostMapping("/kingSoft/getWpsUrl") - public BaseResponse getKSWpsUrl(@RequestBody WpsClientInVo in) { - String str = this.wpsService.getKSWpsUrl(in); - return BaseResponse.success(str); + @GetMapping("/kingSoft/getWpsUrl") + public void getWpsUrlBy(HttpServletRequest request, HttpServletResponse response, @RequestParam("key") String key) { + //cookie传输token + Optional cookie = Optional.ofNullable(request.getCookies()) + .flatMap(cookies -> Stream.of(cookies) + .filter(item -> StringUtils.equals(item.getName(), COOKIE_TOKEN_CODE) + ).findFirst()); + + if (cookie.isPresent()) { + String authToken = cookie.get().getValue(); + WpsClientInVo in = this.wpsService.getKSWpsUrlDecrypt(key); + in.setUserToken(authToken); + String str = this.wpsService.getKSWpsUrl(in); + try { + response.setContentType("text/html;charset=utf-8"); + PrintWriter out = response.getWriter(); + out.println(str); + }catch (Exception e){ + e.printStackTrace(); + } + }else{ + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("无效请求",true); + } } /** * (金山)获得编辑或查看链接 @@ -150,32 +182,9 @@ public class WpsController { in.setType(type); String str = this.wpsService.getKSWpsUrl(in); try { - String token = userToken; -// Optional optionalCookie = Optional.ofNullable(request.getCookies()) -// .flatMap(cookies -> -// Stream.of(cookies) -// .filter(item -> StringUtils.equals(item.getName(), COOKIE_TOKEN_CODE)) -// .findFirst()); -// -// if (optionalCookie.isPresent()) { -// token = optionalCookie.get().getValue(); -// log.info("cookie:",token); -// }else{ -// log.error("未获取到cookie"); -// } - -// log.info("传入token : cookie:"+userToken); -// log.info("传入token : token:"+token); - response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); -// response.setHeader("Cookie","mall3_token="+userToken); -// Cookie theC = new Cookie("mall3_token",userToken); -// theC.setMaxAge(-1); -// theC.setPath("/"); -// response.addCookie(theC); out.println(str); - }catch (Exception e){ e.printStackTrace(); } @@ -210,9 +219,11 @@ public class WpsController { Optional optional = attachmentClient.findByBusinessId(businessIdList); - String fileLength = "10"; + String fileName = fileId; - byte buf[] = new byte[0]; + String text = " "; + byte buf[] = text.getBytes(); + String fileLength = String.valueOf(buf.length); if(optional!=null&&optional.get()!=null){ AttachmentDetail detail = optional.get(); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/WpsService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/WpsService.java index 92362ec..6af9cfd 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/WpsService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/WpsService.java @@ -20,11 +20,13 @@ public interface WpsService{ Object saveWpsFile(String token, String userId, String userName, String fileId, String fileName, File file); + WpsClientInVo getKSWpsUrlDecrypt(String key); + String getKSWpsUrl(WpsClientInVo in); byte[] getKSWpsFile(String id); - public String downloadDecrypt(String key); + String downloadDecrypt(String key); Map saveKSFile(KingSoftFileSaveVo vo); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/impl/WpsServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/impl/WpsServiceImpl.java index 5e094f0..ef363bf 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/impl/WpsServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/wps/service/impl/WpsServiceImpl.java @@ -80,6 +80,9 @@ public class WpsServiceImpl implements WpsService { @Resource private UnicomOAuthClient unicomOAuthClient; + @Resource + private IBaseCacheUserService iBaseCacheUserService; + @Value("${mconfig.wps.bssAppId}") private String bss_app_id; @Value("${mconfig.wps.bssAppSecret}") @@ -262,6 +265,45 @@ public class WpsServiceImpl implements WpsService { return wpsFile; } + @Override + public WpsClientInVo getKSWpsUrlDecrypt(String key){ + String val = RSA.decrypt(key,kswprivateKey); + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("请求参数无效",val.indexOf("_")<0); + + //fileId_yyyyMMddHHmmss_type + String[] value = val.split("_"); + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("请求参数无效",value.length<4); + + String fileId = value[0]; + String time = value[1]; + String type = value[2]; + String extension = value[3]; + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); + long newDateLong = System.currentTimeMillis(); + long inDateLong = 0; + try { + Date inDate = format.parse(time); + inDateLong = inDate.getTime(); + }catch (Exception e){ + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("请求时间戳错误",true); + } + + //time_limit = "120000"; + log.info("newDateLong:"+newDateLong); + log.info("inDateLong:"+inDateLong); + if(newDateLong-inDateLong>Long.valueOf(kswTimeLimit)){// + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("请求已失效-",true); + } + + WpsClientInVo in = new WpsClientInVo(); + in.setFileId(fileId); + in.setFileName(fileId+"."+extension); + in.setType(type); + + return in; + } + private Map validateWps(String token,String fileId,Optional op,String permission){ Map mess= new HashMap<>(); mess.put("result","20501007"); @@ -593,6 +635,7 @@ public class WpsServiceImpl implements WpsService { String token = value[1]; String time = value[2]; String md = value[3]; + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("令牌无效",val.length()<4); String o_key = MdConstants.getSha256(time+fileId+appName+token);// @@ -705,7 +748,11 @@ public class WpsServiceImpl implements WpsService { wpsService.kswpublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtUm+H78uT39TOsgS5XdbIuC0BRLiktqbuI3F9VFbPWDcX15Ptb2u2yTCSOB0Gl+yI+hqpClyV9nyjnu0LgoWpsIDZSLVLdrltYKz9N8jwXKhybomT2EuYU7hzWT1Ea4fkIBfYMCl+BQYSkXD6eqObg4mq2/wUFUVX/+/vjsMShwIDAQAB"; wpsService.kswprivateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAK1Sb4fvy5Pf1M6yBLld1si4LQFEuKS2pu4jcX1UVs9YNxfXk+1va7bJMJI4HQaX7Ij6GqkKXJX2fKOe7QuChamwgNlItUt2uW1grP03yPBcqHJuiZPYS5hTuHNZPURrh+QgF9gwKX4FBhKRcPp6o5uDiarb/BQVRVf/7++OwxKHAgMBAAECgYA77iY8hdEJx7qo4es6QVVUQELnjmCeK74a18yVPoVp2qHqL5Op5P4EzRprZNW8gum6D2kKjFepTvqYBQsIENCwY3a6iKQf+8kwJ/GhVP+7uT3bnxdQFNXA99ujVu7Q2nFQZYAYJWiuMOQKGWrVJperlli0Ip3htCNmtTaviVfAcQJBANTAbX210K1zWe40nSxuuc6ONBqK/YF5hkqKpWB/XzfgFgQ4tPOfvWnnp0pt9rWUV9PzO6NYr2ya60yu2Y6aE+kCQQDQjhfdIid458UOYbjAixY5ONZOcswFQi77pk6MB5Cp8aHn8gHtapDnXt5DiHhqzJCya31FYYoqGtp/4fIntRzvAkA1N2Dr5fOpv0XKcLyz5YpyoV1lGkko/sXZlW6igZnGtzWqnqicm+NcP0a4NmNUriN978SGKmPO7b1XtBDVO7MpAkA/Q1sp0Tp4CpZUDoCkp4xOP1eC5H/O+IyX+ZLKF2Fiq9GZMmgzRKhABx8VDUi53OPnu4N8kGIA87RkJn32XZIxAkAtL+skd+5wkL71VZVnZafLIjWlJM/RKxqyaLbF8irT2sq2+ae8A19hfXj3zT7CeLn5xjKP1/cuGakeOBL8cNaw"; wpsService.appName = "biz-service-ebtp-extend"; - String key = wpsService.getDownloadEncrypt("1679764839191080961","3a1f5aae-3cd2-4599-87b0-712e40625c7c"); + String jm = RSA.encrypt("1679764839191080961_20231213145159_0_doc",wpsService.kswpublicKey); + System.out.println(jm); + String jem = RSA.decrypt(jm,wpsService.kswprivateKey); + System.out.println(jem); + //String key = wpsService.getDownloadEncrypt("1679764839191080961","3a1f5aae-3cd2-4599-87b0-712e40625c7c"); //加解密 // String key = URLDecoder.decode( "FkvDifsfK8frde0ywRzdPMmOlR4%2FO8C4VORaw%2FwshgBt%2B49Z2%2B0al4KwyQ97Js8Yh24%2ByMT%2Fln4Aqx%2BVZNkGqOh0OxP1H3qj%2BP%2BlP1Sybvs5I0q%2BtFpW9nMQcGAsenFNLgcFtUtsQAJG4ALG4cH34TnDnSjuivM9tmA1Gt%2BzsJU%3D","utf-8"); // String val = RSA.decrypt(key,wpsService.kswprivateKey);