<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[键上艺术家]]></title><description><![CDATA[Show me the code, change the world.]]></description><link>https://blog.csdn.net/vaevaevae233</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; vaevaevae233]]></copyright><item><title><![CDATA[【Lilishop商城】No4-7.业务逻辑的代码开发，涉及到：商品模块]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128628548</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128628548</guid><author>vaevaevae233</author><pubDate>Fri, 13 Jan 2023 17:03:42 +0800</pubDate><description><![CDATA[商品模块是商城系统的核心，不是简单的增删改查，毕竟会涉及到很多的业务表，所以看起来简单但是业务还是比较复杂的，每一个接口（可以理解为一个业务操作）都可能涉及到很多业务操作。

之前在 No3详细设计里面已经分析过数据结构设计和接口了，接下来就从接口方面先分析，一定要结合着数据结构~

我们只分析重点接口，相似的就放一起记录了~]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No4-6.业务逻辑的代码开发，涉及到：接口入参、出参开发逻辑，及POJO的各种总结]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128608879</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128608879</guid><author>vaevaevae233</author><pubDate>Mon, 09 Jan 2023 18:08:46 +0800</pubDate><description><![CDATA[在前面的 No4 里面没有讲过这个，是因为前面重点是登录逻辑，比较散，所以就放到这一篇单独记录接口入参出参，后面的商品模块会用到。【有遗漏的，后面随时修改记录~~~】

接口基本就是四种：增、删、改、查。我们也从这四种分析。]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No4-5.业务逻辑的代码开发，涉及到：会员B端第三方登录的开发-根据第三方用户标识进行登录（例如：unionID、openid），主要用于移动APP端]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128473432</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128473432</guid><author>vaevaevae233</author><pubDate>Fri, 30 Dec 2022 18:19:39 +0800</pubDate><description><![CDATA[根据标题名就可以知道，第三种方式对于后端来说是比较简单的，和第一种方式：微信小程序登录接口开发很像，获取用户授权的信息是交给前端的，后端只用负责拿到用户唯一标识，然后进行后面的业务操作~

这种方式对应的shop的前端是用 uniapp 开发的，所以在前端使用的uni.login 方式，调起第三方客户端，用户授权后会拿到用户唯一标识，然后前端再调用平台后端请求接口来实现后续的业务~~

前端主实现的页面：/lilishop-uniapp-master/pages/passport/login.vue]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No4-4.业务逻辑的代码开发，涉及到：会员B端第三方登录的开发-web端第三方授权联合登录接口开发]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128454947</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128454947</guid><author>vaevaevae233</author><pubDate>Wed, 28 Dec 2022 20:48:06 +0800</pubDate><description><![CDATA[​web端第三方授权联合登录模块是参照JustAuth是一个第三方授权登录的工具类库JustAuth的，shop项目参照这个工具类库搭建了自己的联合登录工具，并没有完全参照和搭建，是有区别的，但对于目前的是用来说足够了，对我来说也是一种学习呀~~~
所以我们把业务逻辑了解清楚后，再剖析代码逻辑~~~
开始前先说明，web联合登录里面涉及到的第三方登录的逻辑，大多是一致的，是使用的OAuth2.0 的Authorization code 授权模式【此模式大多是结合普通服务器端应用使用(web端]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No4-3.业务逻辑的代码开发，涉及到：会员B端第三方登录的开发-微信小程序登录接口开发]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128450098</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128450098</guid><author>vaevaevae233</author><pubDate>Tue, 27 Dec 2022 17:01:53 +0800</pubDate><description><![CDATA[​
微信小程序登录就一个接口，需要传参：临时登录凭证code、手机号码的对称解密的目标密文encryptedData、手机号码的对称解密算法初始向量iv、微信头像、微信用户昵称。header 里面传递uuid

header的uuid：此次用户登录的uuid，用来防止多次调用接口导致多次调用第三方接口。前端需要根据后端的返回值来判断是否更新 uuid。   

临时登录凭证code：用来获取用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID（若当前小程序已绑定到微信]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No4-2.业务逻辑的代码开发，涉及到：会员B端第三方登录的开发-平台注册会员接口开发]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128440529</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128440529</guid><author>vaevaevae233</author><pubDate>Mon, 26 Dec 2022 22:18:24 +0800</pubDate><description><![CDATA[​在No2-2.确定软件架构搭建 里的 A5.安全框架(springsecurity) 文章中，我们已经了解了账号授权及认证的开发架构了。
账号登录成功后，会接收到后端返回的 Token 数据，包括 accesstoken 和 refreshtoken ；
账号携带 accesstoken 访问后端接口，会先被 filter 拦截到 accesstoken 拿到帐号信息，判断是有权限，进而执行接口。
所以此处的会员登录模块只涉及到上方的 1. ，最终都一定会拿到 Token ~]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No4-1.业务逻辑的代码开发，涉及到：会员B端第三方登录使用及后端接口(微信、QQ等)]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128394278</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128394278</guid><author>vaevaevae233</author><pubDate>Sat, 24 Dec 2022 17:53:49 +0800</pubDate><description><![CDATA[说白了就是拿到第三方平台里面用户的信息（一定会有一个用户唯一标识），然后将这个信息与我们shop平台的用户进行绑定，这样就能通过第三方登录shop平台了。

所以重点就是要知道怎样从第三方拿到的授权用户信息。

在了解前我们先整理都需要哪些第三方登录方式，然后根据需要的登录方式去了解实际的使用~]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-11.模块详细设计，促销模块（优惠券、满减、秒杀、积分）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128373032</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128373032</guid><author>vaevaevae233</author><pubDate>Tue, 20 Dec 2022 21:23:36 +0800</pubDate><description><![CDATA[开始前先说一下，促销的各类管理上不是特别的难理解，只要理解各个表结构和页面需要的接口就行，重点在于促销活动的业务service类底层都是实现自一个接口，因为所有的促销都是有相似的通用逻辑（例如，增加促销、修改促销、初始化等等）。]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-9.模块详细设计，订单模块-3（售后）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128306162</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128306162</guid><author>vaevaevae233</author><pubDate>Tue, 13 Dec 2022 22:04:21 +0800</pubDate><description><![CDATA[订单发货后，买方B端可以选择确定收货或者申请售后，售后就是退货/退款。]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-8.模块详细设计，订单模块-2（订单）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128299738</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128299738</guid><author>vaevaevae233</author><pubDate>Tue, 13 Dec 2022 18:30:44 +0800</pubDate><description><![CDATA[我们这里就先只说订单的逻辑，把退货/退款流程与订单区分开。

说明一下这里提到的订单不是交易单，不是子订单，是根据店铺生成的订单。三端在订单模块操作的都是订单，是根据店铺生成的订单，而在收银台进行结算支付的时候就是针对交易单支付的~]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-7.模块详细设计，订单模块-1（购物车、收银台）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128286617</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128286617</guid><author>vaevaevae233</author><pubDate>Tue, 13 Dec 2022 13:08:01 +0800</pubDate><description><![CDATA[先说一下业务逻辑，从浏览商品sku到生成订单，有1.在浏览商品sku时立即购买；2.加入购物车，在购物车里面购买；第一种方式也能变相理解为加入购物车再购买。

在shop项目里面是将这两种方式添加到了购物车接口里面，并且通过类型区分，如果是立即购买就走立即购买的逻辑，如果是购物车购买就走购物车购买的逻辑；

随着上方的业务逻辑，当在B端购物车每添加一个商品SKU就会更新一下购物车列表，并存在redis缓存里面（不同类型的分开来缓存）。其中也会有一些别的逻辑，例如计算已勾选商品sku的总金额、计算优惠券等等。]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-6.模块详细设计，商品模块-2（商品及强关联附属 商品sku、批发、图册等等）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128283034</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128283034</guid><author>vaevaevae233</author><pubDate>Mon, 12 Dec 2022 18:30:00 +0800</pubDate><description><![CDATA[首先商品信息是需要单独页面进行管理的，而商品里面信息，例如图册、批发信息、SKU信息，这些都是跟着商品存在的，删除商品后这些也都会删除，并且他们也不会有单独配置的页面~和商品分类、品牌等是不一样的。
所以只有商品有单独操作页面，而他的附属信息在新增、编辑页面进行编辑~所以是没有单独的controller接口的~只是在业务层进行操作的。]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-5.模块详细设计，商品模块-1（商品分类、品牌管理、规格管理、参数、计量单位、店铺分类）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128263513</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128263513</guid><author>vaevaevae233</author><pubDate>Sat, 10 Dec 2022 17:58:37 +0800</pubDate><description><![CDATA[商品信息的管理主要在店铺S端，商品关联的附属信息例如商品分类等是由运营M端和店铺S端共同管理的，买方B端主要是查看、下单会用到，所以本篇不包含B端的查看接口，买方B端前台的接口回单开一篇文章说明的。【但是购物车、下单这些会跟随地订单一起说明的~】

开始前先说一下这几个模块之间的关联：

1.规格和商品分类里面的参数，虽然跟商品分类强关联，但是由于跟商品是弱关联（规格直接转化成json保存到goods_sku里面，参数转化成json保存到goods里面），所以他们的修改不影响分类和商品；计量单位也是，直接保]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-4.模块详细设计，店铺店员（店铺店员、店铺部门、店铺角色）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128259157</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128259157</guid><author>vaevaevae233</author><pubDate>Sat, 10 Dec 2022 11:42:02 +0800</pubDate><description><![CDATA[店铺会绑定一个会员做店主，店铺可以通过手机号码选择多个会员做店员，但是会员在S端只能作为一位店主或者一位店员，也就是只能属于一个店铺。
li_member 会员表里面会存储当前会员开通的店铺信息；
li_clerk 店员表里面会存储店铺添加的会员；且店员在这张表里面一定是唯一的；
li_store 店铺表里面会存储店主的会员信息；
这样存储在使用上会更方便；因为会员与店铺之间的绑定不会轻易改变]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-3.模块详细设计，会员信息（会员基本信息）、店铺设置（店铺信息、配送模板）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128250050</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128250050</guid><author>vaevaevae233</author><pubDate>Fri, 09 Dec 2022 21:08:43 +0800</pubDate><description><![CDATA[运营M端可以查看所有会员信息，也可以新增会员账号。同时还可以查看会员的订单、积分等信息，方便运营。这些小的模块的查看接口可不是在这里哦，所以就放到对应模块开发时说明了，例如积分就都放到积分模块说明。

注意哦，下面强调一下业务逻辑，在某些业务操作，例如新增用户时，不仅会创建用户信息，还会给该用进行一些额外的操作，比如增加注册积分、初始化钱包、增加注册活动优惠券等等，这些逻辑的实现如果直接放到业务代码中耦合度会增加的！所以shop项目中是使用了 Spring事件发布与监听，当用户增加完成就发布后面的事件~而事]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-2.模块详细设计，系统设置（系统配置、行政区划、物流公司、滑块验证码图片、敏感词过滤）的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128213894</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128213894</guid><author>vaevaevae233</author><pubDate>Thu, 08 Dec 2022 18:50:24 +0800</pubDate><description><![CDATA[系统配置属于整个项目的配置，可以说是贯穿整个项目无论哪一端，通常来说，是由运营端M进行管理，即增查改删，而店铺端S、买方端B是查看使用。

所以很多模块从页面显式出来的操作都是简单的增查改删，但是他们大多也包含隐藏的逻辑，例如商品发布时的敏感词过滤是借助于敏感词操作的，店铺端的物流公司是借助于M端的物流公司操作的。]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-2.模块详细设计，运营用户模块的详细设计]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128201005</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128201005</guid><author>vaevaevae233</author><pubDate>Tue, 06 Dec 2022 18:11:06 +0800</pubDate><description><![CDATA[shop系统里面的运营用户模块就是和大多系统一样，无非就是用户-菜单-部门-角色，用户的权限由角色确定，而角色来关联菜单（菜单即表示权限）。

接下就从三个方面来详细设计，先分析业务逻辑，然后将业务操作拆解为具体调用接口，然后可以再分析一下具体的业务类（业务类也可以放到编码阶段分析，我们现在的详细设计就只包括接口和设计逻辑，不包含业务类），同时要记得结合各个端来分析~]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No3-1.模块详细设计，按照需求设计划分开发模块]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/127998785</link><guid>https://blog.csdn.net/vaevaevae233/article/details/127998785</guid><author>vaevaevae233</author><pubDate>Tue, 06 Dec 2022 12:49:40 +0800</pubDate><description><![CDATA[之前在 NO2-1数据结构里面已经将数据库表结构进行了分析与划分，数据底层已经准备好了，现在就根据业务进行开发模块的划分。]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No2-7.确定软件架构搭建六（本篇包括延时任务，会用到rocketmq、redis）]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128136037</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128136037</guid><author>vaevaevae233</author><pubDate>Mon, 05 Dec 2022 20:00:00 +0800</pubDate><description><![CDATA[我们来说一下shop里面实现的延时模块，逻辑是有点复杂的，用到了redis+rocketmq，redis主要是存储延时任务，rocketmp主要是用来监听任务并执行的。
如果项目规模中不使用到消息中间件，也可以不用rocketmq。rocketmp在该项目中一部分功能是降低耦合、提高
1.框架中是将同一类延时任务放到了同一个队列里面，等待执行，所以队列监听工厂类是获取的任务列表~所以本质上还是拿到一批任务进行执行。
2.框架中的队列监听工厂类是每秒轮询，不断获取在当秒执行的任务列表，然后开启异步线程执行；]]></description><category></category></item><item><title><![CDATA[【Lilishop商城】No2-6.确定软件架构搭建五（本篇包括定时任务xxl-job）]]></title><link>https://blog.csdn.net/vaevaevae233/article/details/128088535</link><guid>https://blog.csdn.net/vaevaevae233/article/details/128088535</guid><author>vaevaevae233</author><pubDate>Tue, 29 Nov 2022 21:57:27 +0800</pubDate><description><![CDATA[重点就是两个概念：调度模块（调度中心）、执行模块（执行器）；
调度模块重点就是负责管理调度信息的，有可视化平台，可以添加定时任务去执行，本身不含业务信息。
执行模块就是需要开发人员集成xxl-job模块，开发执行器业务即可。]]></description><category></category></item></channel></rss>