首页 文章 精选 留言 我的

精选列表

搜索[Java],共10000篇文章
优秀的个人博客,低调大师

(二)Java版Spring Cloud B2B2C o2o鸿鹄云商平台--b2b2c平台规划

由于公司要做整套电子商务解决方案,考虑到平台的通用性(其中b2b、b2c、o2o、小程序,都离不开基础平台),优先给公司规划: 平台管理端(统一管理,包含自营店铺)、商家管理端(可以入驻,多租户模式)、买家端(支持PC、h5/公众号、小程序、ios/android)三个通用平台。 平台管理端,因为考虑到平台管理的用户访问量比较小,而且都是一些针对于数据表单的操作,如:清单列表、分页、添加、修改、删除、导入导出等管理功能,也局限于企业用户,这个平台没有采用微服务模式,而是使用最传统的spring boot2.0 + mybatis + 前端模板(h5、css3、bootstrap、jquery、velocity)技术去实施,相对比较简洁简单。 商家管理端,入驻平台开店用户不可能达到极限,故同样采用平台管理端技术解决方案(同上)。 买家端,考虑到会员用户量大(百万千万级别)、大数据(亿万)、高并发、前端UI可定制化,故使用微服务模式。考虑到前端业务的通用性,我们将前端购买业务拆分为不同的微服务来满足需求,拆分服务如下: honghu-activity:活动 honghu-advert:广告 honghu-app: app相关 honghu-brand: 品牌 honghu-cms: 内容发布 honghu-collect: 我的收藏 honghu-common: 系统通用服务 honghu-coupon: 优惠券 honghu-distribution: 分销 honghu-feedback: 反馈 honghu-file: 文件 honghu-free: 试用 honghu-goodsclass: 商品分类 honghu-goods: 商品 honghu-group: 团购 honghu-home: 首页 honghu-integral: 积分商城 honghu-member: 会员 honghu-message: 消息 honghu-operate: 运营 honghu-order: 订单 honghu-pay: 支付 honghu-pin: 拼多多(模拟) honghu-search: 搜索 honghu-setting: 设置 honghu-social: 社交电商 honghu-sso: 单点登录 honghu-store: 店铺 以上是我参与的Spring Cloud B2B2C O2O鸿鹄云商基础平台规划,从现在开始,我会将每一个细节点落实到文章上,希望能够帮助更多的朋友。

优秀的个人博客,低调大师

java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇

filter的作用和生命周期 由filter工作流程点,可以知道filter有着非常重要的作用,在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等。首先需要弄清一点为什么需要网关这一层,这就不得不说下filter的作用了。 作用 当我们有很多个服务时,比如下图中的user-service、goods-service、sales-service等服务,客户端请求各个服务的Api时,每个服务都需要做相同的事情,比如鉴权、限流、日志输出等。 对于这样重复的工作,有没有办法做的更好,答案是肯定的。在微服务的上一层加一个全局的权限控制、限流、日志输出的Api Gatewat服务,然后再将请求转发到具体的业务服务层。这个Api Gateway服务就是起到一个服务边界的作用,外接的请求访问系统,必须先通过网关层。 生命周期 Spring Cloud Gateway同zuul类似,有“pre”和“post”两种方式的filter。客户端的请求先经过“pre”类型的filter,然后将请求转发到具体的业务服务,比如上图中的user-service,收到业务服务的响应之后,再经过“post”类型的filter处理,最后返回响应到客户端。 与zuul不同的是,filter除了分为“pre”和“post”两种方式的filter外,在Spring Cloud Gateway中,filter从作用范围可分为另外两种,一种是针对于单个路由的gateway filter,它在配置文件中的写法同predict类似;另外一种是针对于所有路由的global gateway filer,二者区别如下: GatewayFilter : 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上 GlobalFilter : 全局过滤器,不需要在配置文件中配置,作用在所有的路由上,最终通过GatewayFilterAdapter包装成GatewayFilterChain可识别的过滤器,它为请求业务以及路由的URI转换为真实业务服务的请求地址的核心过滤器,不需要配置,系统初始化时加载,并作用在每个路由上。 gateway filter 过滤器允许以某种方式修改传入的HTTP请求或传出的HTTP响应。过滤器可以限定作用在某些特定请求路径上。 Spring Cloud Gateway包含许多内置的GatewayFilter工厂。 GatewayFilter工厂同上一篇介绍的Predicate工厂类似,都是在配置文件application.yml中配置,遵循了约定大于配置的思想,只需要在配置文件配置GatewayFilter Factory的名称,而不需要写全部的类名,比如AddRequestHeaderGatewayFilterFactory只需要在配置文件中写AddRequestHeader,而不是全部类名。在配置文件中配置的GatewayFilter Factory最终都会相应的过滤器工厂类处理。 Spring Cloud Gateway 内置的过滤器工厂一览表如下: Spring Cloud Gateway框架内置的GlobalFilter如下: 本篇文章讲述了Spring Cloud Gateway中的过滤器,包括GatewayFilter和GlobalFilter,有很多内置的过滤器并没有讲述到,比如限流过滤器,这个我觉得是比较重要和大家关注的过滤器,将在之后的文章讲述。

优秀的个人博客,低调大师

(十一)Java springcloud B2B2C o2o多用户商城 springcloud架构- - SSO单点登录之OAuth2.0登...

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证):上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的微服务,解析如下: 请求方式:POST服务URL:http://localhost:8080/user/login参数类型:application/json Headers: Content-Type: application/json Authorization: Basic QXkjkdkYkhfeyKOKKHUM67ejfjeSfnrRdk5nPT0= Body:{ "userName":"admin", ---也可以是手机号码等 "password": "e10adc3949ba59abbe56e057f20f883e" } 返回值类型: application/json 返回的结果集: { "code": "200", "message": "Success", "version": "v1.0", "data": { "userInfo": { "userId": "00001", "pwd": "e10adc3949ba59abbe56e057f20f883e", "userName": "admin", "mobile": "15875500000", "telephone": "", "wechat": "", "email": "xxx@qq.com", "status": "1", "createTime": "2017-06-26" }, "roleIds": "100", "tokenInfo": { "accessToken":"4de55a69-e372-4766-acd3-1c419d6f2fda", "tokenType": "bearer", "webTokent":"uHSLjfJoQwU4t4PAqCzH1SN0fp7PUWKluPNS+x1dZ8R9Gx+NJkBI7w==", "refreshToken":"d3d71594-5c3f-4a68-a7e5-b8d21c4fa73b", "expiresIn": 34644, "scope": "read write" } } } 备注:可以使用Postman工具进行测试框架设计思想: 提供独立的commonservice-sso的微服务、提供component-sso的依赖组件、提供针对于用户登录的微服务客户端user-service微服务接口。 整个执行的流程如下:user-service ---> commonservice-sso --->component-sso这里还没有讲解到服务网关,后面会涉及到服务网关和sso单点登录之间如何实现服务认证和鉴权。 从现在开始,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。

优秀的个人博客,低调大师

(十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根...

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public ResponseVO getUserByToken(@PathVariable(value = "accessToken", required = true) String accessToken,@RequestHeader(value = "userId", required = true) Long userId) throws Exception { if(StringUtils.isEmpty(accessToken)){ return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_REQ_CANNOT_EMPTY, null); } OauthAccessToken oauthAccessToken = userMgrService.getOauthAccessToken(accessToken); if(null == oauthAccessToken){ return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_OAUTH_ACCESSTOKEN_EMPTY, null); } String userName = oauthAccessToken.getUserName(); if (StringUtils.isEmpty(userName)) { return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_OAUTH_ACCESSTOKEN_EMPTY, null); } return this.getUser(userName); } @RequestMapping(path = "/user/get/{userName}", method = RequestMethod.GET) public ResponseVO getUser(@PathVariable(value = "userName") String userName) { Map<String, Object> returnData = null; try { User user = userMgrService.getUserByName(userName); if (null != user) { returnData = new HashMap<String, Object>(); returnData.put("user", user); return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_SUCCESS, returnData); } return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_SYSTEM_ERROR, null); } catch (Exception e) { return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_SYSTEM_ERROR, null); } } 我这里只是简单写了一些登出的代码,我们会在后面的文章中详细贴出所有代码供大家参考,而且会从创建数据库,到执行操作的每一个流程记录下来。 从现在开始,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。

优秀的个人博客,低调大师

(十二)Java springcloud B2B2C o2o多用户商城 springcloud架构-- SSO单点登录之OAuth2.0 登...

上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: /** * 用户注销 * @param accessToken * @return */ @RequestMapping(value = "/user/logout", method = RequestMethod.POST) public ResponseVO userLogout(@RequestHeader(value = "accessToken", required = true) String accessToken, @RequestHeader(value = "userId", required = true) Long userId) throws Exception{ OauthAccessToken oauthAccessToken = userMgrService.getOauthAccessToken(accessToken); if(null == oauthAccessToken){ return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_OAUTH_ACCESSTOKEN_EMPTY, null); } //刪除OauthToken记录 boolean result = userMgrService.revokeOauthToken(oauthAccessToken); if(result){ return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_RETURN_CODE_SUCCESS, null); } return UserResponseCode.buildEnumResponseVO(UserResponseCode.RESPONSE_CODE_SYSTEM_ERROR, null); } 我这里只是简单写了一些登出的代码,我们会在后面的文章中详细贴出所有代码供大家参考,而且会从创建数据库,到执行操作的每一个流程记录下来。 从现在开始,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。完整项目的源码来源

优秀的个人博客,低调大师

Java 开源办公开发平台 O2OA V5.3.0 发布 | 移动版H5发布,服务器性能优化升级

O2OA此次发布的移动端H5版本,拥有高度的灵活性、强大的交互功能、丰富的适配平台,同时拥有齐全的页面组件,功能组合极其便利。客户在使用移动端H5进行办公时,能够更高效地实现动态信息确认、助力企业协同办公。对于开发者来说,此次移动端H5版本可大大降低OA办公系统的开发成本,同时还可以考虑客户的实际应用需求,在各类办公APP中嵌入使用,如钉钉、企业微信等等。 此外,O2OA是一个SPA(single page web application)应用,相对与传统的多页应用,前端的代码量比较大,所以此次V5.3.0版本从多方面优化了前端性能。详情请见语雀教程:https://www.yuque.com/docs/share/bb782895-d2a8-4fee-a7a5-ffae026f9dfc?# 《O2OA前端性能优化》 O2OA V5.3.0包含大量功能更新和问题修正,让平台更稳定,用户操作更方便: 功能新增 [移动办公]新增了企业微信通讯录同步回调功能 [移动办公]新增了钉钉通讯录同步回调功能 [数据库连接]新增了人大金仓数据库V8R6适配器 [流程平台]新增了表单组件的默认值等脚本支持异步返回 [流程平台]优化表单展现速度,增加预加载脚本 [流程平台]新增了数据网格支持插入附件功能 [流程平台]新增了V2版本的work接口 [流程平台]新增了V2版本的form接口 [文件存储]新增了对sftp协议的支持 [系统服务]新增了工作时间计算的前端接口 [人员组织]新增了组织关联用户、身份是否存在的校验接口 [人员组织]新增了根据职务名称和组织查询职务信息接口 [人员组织]新增了组织成员按身份排序的按钮 [中心服务]新增了手动发起同步区域数据接口 [内容管理]新增了点赞信息查询接口 [内容管理]新增了根据id列表查询doc数据接口 [数据中心]新增了查询语句的视图配置 [数据中心]新增了查询语句的API [数据中心]新增了获取实体对象的属性信息接口 [数据中心]新增了视图数组类型in语句查询条件 [数据中心]新增了查询语句查询数据与查询总数同时执行的接口 [数据中心]新增了视图中的全选功能 [数据中心]新增了视图中按脚本设置默认选中条目的功能 [数据中心]新增了视图中按脚本设置选中条目权限的功能 [平台架构]打包应用jar包上传到maven仓库 [平台架构]新增了自定义应用模板创建 [平台架构]引入Promise对象,所有前端Action的请求全部返回Promise对象 [平台架构]新增了web.json配置,可配置configMapping减少获取服务地址请求 [考勤管理]新增了工作地点的百度开发者账号设置 功能优化 [缓存]简化ETag计算,减少ETag计算开销 [服务器]ctl -hs 命令增加对center,application,web服务器的dump [流程平台]优化优先路由功能,增加立即执行配置项 [流程平台]增加在拆分合并状态下的拆分值的回滚 [流程平台]增加提交时人员选择的隐藏条件 [流程平台]修改服务调用活动颜色,以免和流程监控的已流转过活动颜色过于接近 [流程平台]多人处理时,优先路由是立即执行还是所有人处理完成后执行,现在可以在流程配置时选择 [流程平台]默认隐藏流程配置的高级属性 [流程平台]流程配置事件增加了有代码的提示标志 [系统服务]接口脚本改由编译后缓存执行 [数据库连接]增加数据库连接池借入借出的testConnection配置项 [服务器]ctl -td命令改由调用jcmd执行 [数据中心]优化自建表查询,允许自建表间关联查询、子查询、join查询 [数据中心]自建表编译优化,支持集群同时编译 [数据中心]取消视图查询时默认时间范围1年限制 [数据中心]限制了自检表的表名为文本加日期 [数据中心、流程引擎、内容管理]操作条的系统操作和自定义操作可以混合排序 [内容管理]缓存及权限刷新修改 [内容管理]增加了评论的编辑器设置 [人员组织]修改根据组织和职务名称查询身份信息接口(优化查询速度) [人员组织]增加了组织中按照人员拼音排序的功能 [门户管理]优化门户展现速度 [云文件]支持管理员设置用户最大使用容量、可上传的文件类型限制 问题修复 [移动办公]修复了Android app 下载更新的bug [移动办公]修复了Android app 指纹认证登录不成功的bug [移动办公]修复了Android app 会议处理页面的bug [移动办公]修复了钉钉工作页面无法关闭的bug [论坛管理]修复了内外网域名不同图片不能正确显示的bug [数据库连接]修复了神州通用数据库Boolean映射错误的bug [自定义表]修复了驼峰式命名单个小写字母转换的错误 [流程平台]修复了一键下载文件标题包含特殊字符、标题过长的问题 [流程平台]修复了提交时选人可能重复出现人员的问题 [流程平台]修复了关闭WORK页面时,有时beforeunload事件会执行两次的问题 [流程平台]修复了版式文件粘贴大段内容后容器高度异常问题 [流程平台]修复了数据网格中多行文本的显示问题 [应用中心]修复了导入应用覆盖时应用本身信息没有覆盖的问题 [内容管理]修复了附件update权限判断错误的问题 [数据中心]修复了数据中心应用删除时关联的子表数据未删除完全的问题 [系统服务]修复了代理模式代理url特殊字符比如|的问题 [平台首页]修复了首页日程安排标题显示重叠的问题

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册