随笔分类 - 实战项目专题
写过的项目实战
摘要:需求分析 在完成支付后,修改订单状态为已支付,并记录订单日志。 实现思路 (1)接受微信支付平台的回调信息(xml) <xml><appid><![CDATA[wx8397f8696b538317]]></appid> <bank_type><![CDATA[CFT]]></bank_type> <
阅读全文
摘要:需求分析 用户在提交订单后,如果是选择支付方式为微信支付,那应该跳转到微信支付二维码页面,用户扫描二维码可以进行支付,金额与订单金额相同。 实现思路 前端页面向后端传递订单号,后端根据订单号查询订单,检查是否为当前用户的未支付订单,如果是则根据订单号和金额生成支付url返给前端,前端得到支付url生
阅读全文
摘要:微信支付申请(了解) 第一步:注册公众号(类型须为:服务号) 请根据营业执照类型选择以下主体注册:个体工商户| 企业/公司| 政府| 媒体| 其他类型。 第二步:认证公众号 公众号认证后才可申请微信支付,认证费:300元/次。 第三步:提交资料申请微信支付 登录公众平台,点击左侧菜单【微信支付】,开
阅读全文
摘要:准备工作 changgou_order库新增数据表 DROP TABLE IF EXISTS `tb_task`; CREATE TABLE `tb_task` ( `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '任务id', `create_tim
阅读全文
摘要:Seata简介 Seata(原名Fescar) 是阿里18年开源的分布式事务的框架。Fescar的开源对分布式事务框架领域影响很大。作为开源大户,Fescar来自阿里的GTS,经历了好几次双十一的考验,一经开源便颇受关注。后来Fescar改名为Seata。 Fescar虽然是二阶段提交协议的分布式事
阅读全文
摘要:基于XA协议的两阶段提交 2PC 首先我们来简要看下分布式事务处理的XA规范 : 可知XA规范中分布式事务有AP,RM,TM组成: 其中应用程序(Application Program ,简称AP):AP定义事务边界(定义事务开始和结束)并访问事务边界内的资源。 资源管理器(Resource Man
阅读全文
摘要:刚才我们编写的扣减库存与保存订单是在两个服务中存在的,如果扣减库存后订单保存失败了是不会回滚的,这样就会造成数据不一致的情况,这其实就是我们所说的分布式事务的问题,接下来我们来学习分布式事务的解决方案。 本地事务与分布式事务 事务 数据库事务(简称:事务,Transaction)是指数据库执行过程中
阅读全文
摘要:业务分析 点击提交订单的时候,会立即创建订单数据,创建订单数据会将数据存入到2张表中,分别是订单表和订单明细表,此处还需要修改商品对应的库存数量。 订单表结构如下: CREATE TABLE `tb_order` ( `id` varchar(50) COLLATE utf8_bin NOT NUL
阅读全文
摘要:收件地址分析 用户从购物车页面点击结算,跳转到订单结算页,结算页需要加载用户对应的收件地址,如下图: 表结构分析: CREATE TABLE `tb_address` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEF
阅读全文
摘要:如上图所示,用户每次将商品加入购物车,或者点击购物车列表的时候,先经过订单购物车后端渲染服务,再通过feign调用购物车订单微服务来实现购物车的操作,例如:加入购物车、购物车列表。 购物车渲染服务搭建 在changgou_web中搭建订单购物车微服务工程changgou_web_order,该工程主
阅读全文
摘要:购物车分为用户登录购物车和未登录购物车操作,国内知名电商京东用户登录和不登录都可以操作购物车,如果用户不登录,操作购物车可以将数据存储到Cookie,用户登录后购物车数据可以存储到Redis中,再将之前未登录加入的购物车合并到Redis中即可。 淘宝天猫则采用了另外一种实现方案,用户要想将商品加入购
阅读全文
摘要:用户每次访问微服务的时候,先去oauth2.0服务登录,登录后再访问微服务网关,微服务网关将请求转发给其他微服务处理。 由于我们项目使用了微服务,任何用户都有可能使用任意微服务,此时我们需要控制相关权限,例如:普通用户角色不能使用用户的删除操作,只有管理员才可以使用,那么这个时候就需要使用到Spri
阅读全文
摘要:新建网关工程changgou_gateway_web 1) changgou_gateway添加依赖 <!--网关依赖--> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>sp
阅读全文
摘要:需求分析 功能流程图如下: 执行流程: 1、用户登录,请求认证服务 2、认证服务认证通过,生成jwt令牌,将jwt令牌及相关信息写入Redis,并且将身份令牌写入cookie 3、用户访问资源页面,带着cookie到网关 4、网关从cookie获取token,并查询Redis校验token,如果to
阅读全文
摘要:准备工作 1) 搭建认证服务器之前,先在用户系统表结构中增加如下表结构: CREATE TABLE `oauth_client_details` ( `client_id` varchar(48) NOT NULL COMMENT '客户端ID,主要用于标识对应的应用', `resource_ids
阅读全文
摘要:JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简介的、自包含的协议格式,用于 在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公 钥/私钥对来签名,防止被篡改。 官网:https://jwt.i
阅读全文
摘要:用户认证分析 上面流程图描述了用户要操作的各个微服务,用户查看个人信息需要访问客户微服务,下单需要访问订单微服务,秒杀抢购商品需要访问秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色然后授权访问对应的功能。 单点登录 用户访问的项目中,至少有3个微服务需要识别用户身份,如
阅读全文
摘要:需求分析 当系统审核完成商品,需要将商品详情页进行展示,那么采用静态页面生成的方式生成,并部署到高性能的web服务器中进行访问是比较合适的。所以,开发流程如下图所示: 此处MQ我们使用Rabbitmq即可。 执行步骤解释: 系统管理员(商家运维人员)修改或者审核商品的时候, 会更改数据库中商品上架状
阅读全文
摘要:搜索分析 搜索页面要显示的内容主要分为3块。 1)搜索的数据结果 2)筛选出的数据搜索条件 3)用户已经勾选的数据条件 搜索实现 搜索的业务流程如上图,用户每次搜索的时候,先经过搜索业务工程,搜索业务工程调用搜索微服务工程。 搜索工程搭建 (1)引入依赖 在changgou-service_sear
阅读全文
摘要:(1)th:action 定义后台控制器路径,类似<form>标签的action属性。 例如: <form th:action="@{/test/hello}" > <input th:type="text" th:name="id"> <button>提交</button> </form> (2)
阅读全文