package com.doumee.cloud.web; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.doumee.api.BaseController; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.config.annotation.LoginNoRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.haikang.model.HKConstants; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.FacePictureCheckRequest; import com.doumee.core.haikang.model.param.respose.FacePictureCheckResponse; import com.doumee.core.haikang.service.HKService; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.FtpUtil; import com.doumee.core.utils.HttpsUtil; import com.doumee.core.utils.aliyun.ALiYunUtil; import com.doumee.dao.business.model.Cars; import com.doumee.dao.business.model.JkCabinetLog; import com.doumee.dao.web.reqeust.VisitRecordDTO; import com.doumee.dao.web.response.VisitRecordVO; import com.doumee.service.business.third.model.ApiResponse; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; import com.sun.net.httpserver.HttpExchange; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java.net.URI; import java.util.*; /** * @author Eva.Caesar Liu * @date 2023/02/14 11:14 */ @Api(tags = "【简道云】业务接口") @Trace(exclude = true) @RestController @LoginNoRequired @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/jiandaoyun") @Slf4j public class JiandaoyunCloudController extends BaseController { @Autowired private SystemDictDataBiz systemDictDataBiz; @ApiOperation("简道云推送用车申请") @PostMapping("/pushCarApply") public void pushCarApply (HttpServletRequest request, HttpServletResponse response) { log.error("简道云=========getRequestURI:"+request.getRequestURI()); log.error("简道云=========getRequestURL:"+request.getRequestURL()); try { String jdy = request.getHeader("x-jdy-signature"); StringBuilder json = new StringBuilder(); String line; BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); while ((line = reader.readLine()) != null) { json.append(line); } // String payload = IOUtils.toString(request.getInputStream(), "utf-8"); String payload = json.toString(); String uri = request.getRequestURI(); Map parameterMap = parseParameter(request.getQueryString()); String nonce = parameterMap.get("nonce"); String timestamp = parameterMap.get("timestamp"); String signature = getSignature(nonce, payload, SECRET, timestamp); log.error("简道云=========nonce:"+nonce); log.error("简道云=========timestamp:"+timestamp); log.error("简道云=========payload:"+payload); log.error("简道云=========签名:"+jdy); log.error("简道云=========签名(正确):"+signature); if (!signature.equals(jdy)) { response.setStatus(401); response.getWriter().write("fail"); response.getWriter().close();; return ; } response.setStatus(200); response.getWriter().write("success"); response.getWriter().close(); }catch (Exception e){ e.printStackTrace(); log.error("简道云=========异常:"+e.getMessage()); } } @ApiOperation("简道云提交钥匙借还信息") @PostMapping("/submitKeyRecord") public ApiResponse submitKeyRecord (HttpServletRequest request, HttpServletResponse response) { JkCabinetLog log = new JkCabinetLog(); log.setKeyId(1); log.setCreateDate(new Date()); log.setMemberName("张三"); return ApiResponse.success(log); } public static final String SECRET ="yKSKuO0LoFf06jWGrwwuGudK"; private static String getSignature(String nonce, String payload, String secret, String timestamp) { return DigestUtils.sha1Hex(nonce + ":" + payload + ":" + secret + ":" + timestamp); } private static Map parseParameter(String query) { Map paramMap = new HashMap(); String[] params = query.split("&"); for (String param : params) { String[] keyValue = param.split("="); paramMap.put(keyValue[0], keyValue[1]); } return paramMap; } public static void main(String[] args) { String url = "https://api.jiandaoyun.com/api/v1/automation/tenant/6909b792324dc197821895d1/hooks/6909d0fbdb93690b128a0d56b068192dc4a9c9722dbac428"; // String url = "https://api.jiandaoyun.com/api/v1/automation/tenant/6909b792324dc197821895d1/hooks/6909d0fbdb93690af97e41d1b068192dc4a9705aca3321e2"; JSONObject object = new JSONObject(); object.put("create_date","20251104160000"); object.put("start_date",System.currentTimeMillis() ); object.put("end_date", System.currentTimeMillis() + 24*3600*1000); object.put("id","10000020251105"); object.put("type",1); String result = HttpsUtil.postJson(url,JSONObject.toJSONString(object)); System.out.println(result); } }