@Override public ResultDto editScmBusinessRelationShip(ScmBusinessRelationshipEditRequest editRequest) { if (LongUtil.isEmpty(editRequest.getId()) && exits(editRequest.getTenantId(), editRequest.getSupplierId())) { return ResultDto.fail(ResponseStatusConstants.Code.DATA_EXISTS, "数据已存在"); } if (LongUtil.isEmpty(editRequest.getId())) { editRequest.setId(SnowFlake.getInstance().newId()); } String rowKey = Long.toString(editRequest.getId()); if (conflictWithScm(editRequest.getTenantId(), editRequest.getSupplierId(), rowKey)) { return ResultDto.fail(ResponseStatusConstants.Code.DATA_EXISTS, "数据已存在"); } // 将生成或修改的 商业编号复制给mercid String mercid = String.valueOf(editRequest.getId()); // 保存到大数据中 List<HbasePut> putList = new ArrayList<>(); putList.add(HbasePut.builder() .tableName(SCM_HBASE_TABLE_NAME) .rowKey(rowKey) .cf(CF) .data(JSONObject.parseObject(JSON.toJSONString(BeanConverter.INSTANCE.businessRelationshipToScmHbasePutItem(editRequest)))) .build()); HbasePutList hbasePutList = HbasePutList.builder() .tableName(SCM_HBASE_TABLE_NAME) .putList(putList) .build(); bigdataUtil.update(hbasePutList); // 返回商编 }
时间: 2024-04-24 10:21:59 浏览: 28
这是一个 Java 方法的定义,名为 editScmBusinessRelationShip,返回类型为 ResultDto。它需要一个 ScmBusinessRelationshipEditRequest 类型的参数 editRequest。
方法中首先进行了数据存在性的判断,如果需要修改的数据已经存在,则返回失败的 ResultDto 对象;如果需要新增数据,则生成新的数据 ID。
接下来,对商业关系进行了冲突检查,如果存在冲突,则返回失败的 ResultDto 对象。
然后,将生成或修改的商业编号复制给 mercid 变量。接着,将数据保存到大数据中,通过 HBase 进行操作。
最后,返回商业编号的 ResultDto 对象。
相关问题
public class UserAccessInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // String token = TokenHelper.getFromReq(request); String token = request.getHeader(Authentication.TOKEN_NAME); if (StringUtils.isEmpty(token)) { // mute for OPTIONS if (StringUtils.isEmpty(token)) { // mute for OPTIONS if (request.getMethod().equalsIgnoreCase(HttpMethod.OPTIONS.name())) { return true; } // need log return false; } } UserContext userContext = Authentication.verify(token); if (userContext == null) { log.error(""); return false; } UserContextHolder.set(userContext); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } }解释一下这个类中方法用处
这个类是一个拦截器(Interceptor),用于在用户访问请求被处理前进行一些预处理操作。它实现了HandlerInterceptor接口,并重写了其中的三个方法。
1. preHandle方法:
这个方法在请求被处理之前被调用。它接收HttpServletRequest、HttpServletResponse和Object类型的参数。preHandle方法返回一个boolean值,表示是否继续执行后续的处理流程。
在这个方法中,首先从请求头中获取token,然后判断token是否为空。如果为空,还会进一步判断请求方法是否为OPTIONS,如果是则返回true,表示允许跨域请求的预检请求通过;否则,返回false,表示需要进行记录日志等操作。
如果token不为空,会调用Authentication.verify(token)方法进行验证。如果验证通过,将用户信息存入UserContextHolder中,并返回true;否则,记录错误日志,并返回false。
2. postHandle方法:
这个方法在请求被处理之后、视图渲染之前调用。它接收HttpServletRequest、HttpServletResponse、Object和ModelAndView类型的参数。postHandle方法没有返回值。
在这个方法中,可以对响应进行一些处理操作,比如设置响应头、添加响应结果等。
3. afterCompletion方法:
这个方法在整个请求处理完成后调用,包括视图渲染完毕。它接收HttpServletRequest、HttpServletResponse、Object和Exception类型的参数。afterCompletion方法没有返回值。
在这个方法中,可以进行一些清理操作,比如释放资源、记录请求处理时间等。
总结:UserAccessInterceptor类中的preHandle方法用于在请求被处理前进行预处理,postHandle和afterCompletion方法用于在请求处理完成后进行后续操作。这个类可以用于实现用户访问权限验证、日志记录等功能。
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object user = request.getSession().getAttribute("userid"); Object admin = request.getSession().getAttribute("admin"); if (StringUtils.isEmpty(user) && StringUtils.isEmpty(admin)) { //未登陆,返回首页 request.setAttribute("msg", "没有权限请先登陆"); response.sendRedirect(request.getContextPath() + "/");//重定向 // request.getRequestDispatcher("/").forward(request,response);//转发 return false; } else { //已登陆,放行请求 return true; } }这段代码是什么意思
这段代码是一个拦截器的预处理方法,主要作用是在处理请求之前进行权限校验。具体来说,它首先从请求的 session 中获取用户和管理员的身份信息(通过 "userid" 和 "admin" 属性),然后判断用户和管理员是否均未登录(即身份信息为空)。如果是,则将一个提示信息添加到请求的属性中,并重定向到网站首页;否则,说明已经登录,放行请求。这段代码的作用是保护网站的安全,防止未经授权的用户访问敏感信息等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)