diff --git a/README.md b/README.md
index 986587c1..739afe48 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,37 @@
-## Lilishop B2B2C商城系统
+## 🔥Lilishop B2B2C商城系统
+
+##### 🌹官方公众号 & 开源不易,如有帮助请点Star
+
+##### 官方qq群 961316482,官方公众号/小程序体验,扫描二维码
-##### 官方公众号 & 开源不易,如有帮助请点Star

[](https://gitee.com/beijing_hongye_huicheng/lilishop/stargazers)
-
-
+ 
-### 介绍
+### 🔥介绍
**官网**:https://pickmall.cn
-Lilishop 是一款Java开发,基于SpringBoot研发的B2B2C多用户商城,前端使用 Vue、uniapp开发 **系统全端全部代码开源**
+Lilishop 基于SpringBoot研发的B2B2C多用户商城系统,前端使用 Vue、uniapp开发 **系统全端全部代码开源**
+
+业务兼容O2O商城/B2B商城/B2B2C商城/F2B2C商城/S2B2C商城。支持小程序商城、H5商城、APP商城、 PC商城。
+
+
产品前后端分离、支持分布式部署。
-商城展示端包含 PC、H5、微信小程序、APP。
-
商城包含 会员模块、**第三方登录模块**、**第三方支付模块**、**楼层装修模块**、订单模块、分销模块、文章模块、系统设置模块、流量分析模块
系统包含各种中间件、搜索引擎、多级缓存、分布式事务、分布式任务调度等,支持Docker,支持k8s。是一款高性能,支持高并发等商城系统。
-开箱即用,简单配置即可部署一套属于您的系统。
-### 文档
-**产品文档**(需求、架构、使用、部署、开发):https://docs.pickmall.cn
-**功能清单** 功能列表:https://docs.qq.com/sheet/DQ1Z2dWJKUnBRZEt5
+### ☃️文档
-### 项目链接(gitee)
+**产品文档**:https://docs.pickmall.cn
+
+### 💧项目链接(gitee)
**Java后台**:https://gitee.com/beijing_hongye_huicheng/lilishop.git
@@ -38,7 +41,7 @@ Lilishop 是一款Java开发,基于SpringBoot研发的B2B2C多用户商城,
**docker一键部署**:https://gitee.com/beijing_hongye_huicheng/docker.git
-### 项目链接(github)
+### 💧项目链接(github)
**Java后台**:https://github.com/hongyehuicheng/lilishop.git
@@ -48,42 +51,27 @@ Lilishop 是一款Java开发,基于SpringBoot研发的B2B2C多用户商城,
**docker一键部署**:https://github.com/hongyehuicheng/docker.git
-### 演示地址
+### 💧演示地址(手机验证码为 ‘111111’)
**运营后台**:https://admin-b2b2c.pickmall.cn 账号:admin/123456
**店铺后台**:https://store-b2b2c.pickmall.cn 账号:13011111111/111111
-**用户前台**:https://pc-b2b2c.pickmall.cn
+**PC**:https://pc-b2b2c.pickmall.cn
-**移动端**:https://m-b2b2c.pickmall.cn
+**WAP**:https://m-b2b2c.pickmall.cn
+
+**小程序/公众号**:扫描二维码

-### 3行命令搭建本地环境
+### 🚙3行命令搭建本地环境
-温馨提示:由于服务较多,如果笔记本环境启动内存没有32g可能无法启动成功(macbookpro 2020 16g内存启动无法成功),台式机在16g内存、AMD 3700x 的ubuntu系统成功运行。
+温馨提示:由于服务中间件较多,如果笔记本环境启动内存没有32g可能无法启动成功(macbookpro 2020 16g内存启动无法成功),台式机在16g内存、AMD 3700x 的ubuntu系统成功运行。
-##### docker环境安装(已安装的用户可跳过)
-```shell
-#安装依赖
-sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-#设置源
-sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-sudo yum makecache fast
-#安装docker
-sudo yum install docker-ce
-#启动服务
-sudo systemctl start docker
-#安装docker-compose
-sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
-#授权
-sudo chmod +x /usr/local/bin/docker-compose
-#检测版本号
-docker-compose -v
-```
+##### docker环境安装 [点击跳转](https://docs.pickmall.cn/deploy/%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2.html)
@@ -98,39 +86,39 @@ docker-compose -v
-PS:单独部署的话,数据库文件访问这里:https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql
+PS:单独部署的话,商城数据库文件访问这里:https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql
-##### 各个地址
+##### 商城部署后 API/UI 地址
| API | 地址 |
| -------------- | --------------- |
-| 买家API | http://127.0.0.1:8888 |
-| 商家API | http://127.0.0.1:8889 |
-| 管理端API | http://127.0.0.1:8887 |
-| 通用API | http://127.0.0.1:8890 |
+| 商城买家API | http://127.0.0.1:8888 |
+| 商城商家API | http://127.0.0.1:8889 |
+| 商城管理端API | http://127.0.0.1:8887 |
+| 商城基础API | http://127.0.0.1:8890 |
| 前端演示 | 地址 |
| -------------- | --------------- |
-| PC | http://127.0.0.1:10000 |
-| WAP | http://127.0.0.1:10001 |
-| 商家 | http://127.0.0.1:10002 |
-| 管理端 | http://127.0.0.1:10003 |
+| 商城PC端 | http://127.0.0.1:10000 |
+| 商城WAP端 | http://127.0.0.1:10001 |
+| 商城卖家端 | http://127.0.0.1:10002 |
+| 商城管理端 | http://127.0.0.1:10003 |
-### 功能列表
+### ⚾️功能列表
-#### 平台功能
+#### 🥎商城平台功能

-#### 商家端功能
+#### 🥎商城卖家功能

@@ -138,28 +126,28 @@ PS:单独部署的话,数据库文件访问这里:https://gitee.com/beijing_
-### 功能展示
+### 🧩商城前端功能展示
-#### 移动端
+#### ⚽️商城移动端
-#### 管理端
+#### ⚽️商城管理端

-### 技术选型
+### 商城技术选型
-#### 架构图
+#### 🥅架构图

-##### Java后台
+##### 🕹后台技术选型
| 说明 | 框架 | 说明 | |
| -------------- | --------------- | -------------- | ------------- |
@@ -173,7 +161,7 @@ PS:单独部署的话,数据库文件访问这里:https://gitee.com/beijing_
| 短信 | 阿里云短信 | 认证 | JWT |
| 日志处理 | Log4j | 接口规范 | RESTful |
-##### 前端-运营后台、店铺后台
+##### 🖥前端-运营后台、店铺后台
| 说明 | 框架 | 说明 | 框架 |
| ---------- | ---------- | ---------- | ------- |
@@ -183,115 +171,23 @@ PS:单独部署的话,数据库文件访问这里:https://gitee.com/beijing_
| 基础UI库 | iView | UI界面基于 | iView |
| 网络请求 | axios | | |
-##### 前端-移动端
+##### 📱前端-移动端
| 说明 | 架构 | 说明 | 架构 |
| --------- | ------- | -------- | ------- |
| 基础UI库 | uViewui | 基础框架 | uni-app |
| CSS预处理 | scss | 地图引擎 | amap |
-### 升级计划
-
-#### 计划每个月发布一个版本,具体时间可能有出入
-
-时间:2021年7月15日
+### 🌟版本升级
```
-新增功能:
-1.积分商城
-2.店铺移动端
-3.店铺支持发货单
-4.供求单
-5.店铺自提点
-6.移动端展示附近店铺
-7.开屏广告
-8.会员站内消息
-9.移动端店铺入驻
-功能优化:
-1.用户分享商城、关注店铺、邀请新用户可获取积分、经验值。
-2.隐私管理功能
-2.移动端店铺首页优化
+商城后续会持续版本升级,修复bug,完善功能,覆盖更多业务场景 o2o/b2b/s2b2b2c/跨境电商
+
+后续会考虑推出微服务商城系统/中台商城等
```
-时间:2021年8月16日
-```
-新增功能:
-1.微淘功能
-2.相册管理功能
-3.店铺申请品牌
-4.第三方商品导入(淘宝、99api)
-5.用户等级
-6.用户升级会员
-7.会员权益
-8.促销活动:第二件*折
-9.促销活动:商品打包价
-10.促销活动:商品组合购
-11.促销活动:进店赠券
-12.代客退单
-功能优化:
-1.批量上传商品分类
-2.店铺维护开票项目
-3.店铺展示营销中心
-```
-
-时间:2021年9月15日
-
-```
-新增功能:
-1.增加供应商功能
-2.商品预售
-3.商品预约
-4.电子券码
-5.企业会员
-6.企业会员购
-7.商品批发价
-功能优化:
-1.店铺运费模板支持按照体积计算
-2.店铺支持自定义移动端首页
-```
-
-### 版本升级
-
-```
-后续会持续版本升级,修复bug,完善功能,覆盖更多业务场景 o2o/b2b/s2b2b2c/跨境电商
-
-后续会考虑推出微服务/中台等 企业级版本
-```
-
-### 技术亮点
-
-
- 1.后端框架基于Springboot,构建基于maven,持久层使用MyBatisPlus。使用elasticsearch、redis、mongodb、rocketmq 等各种中间健。都是主流架构,轻松应对各种环境。
-
- 2.支持集群、分布式,支持docker 轻松部署,解决各种复杂场景!
-
- 3.代码模块清晰,主要分为三端api(买家、卖家、管理),各端API互相隔离,自己鉴权,自己操作业务。
-
- 4.使用阿里开源的RocketMQ,基于mq解决各种并发场景,解决事务一致性,解决搞并发延迟场景问题。
-
- 5.项目使用多级缓存,应用不同场景,redis缓存业务数据、mongodb缓存关系型多对多关系问题、nginx缓存高频访问低频修改的页面。
-
- 6.支持各种联合登陆,支持各种客户端的支付问题,灵活配置灵活开启。
-
- 7.内置完善的楼层装修机制,各种拖拉拽,维护跳转页面或外网,即便是一个什么都不懂的运营也可以轻松掌握。
-
- 8.内置阿里短信接口,可以在线申请短信模版。内置阿里oss系统,可以对文件执行各种操作。oss商家端资源相互隔离。
-
- 10.强大的统计报表,统计效果,可以实现各个场景,包含在线人数,历史在线人数,活跃人数等信息。
-
- 11.标准Api接口、提供swagger文档,快速二开。
-
- 12.分布式调度任务中心,解决分布式定时任务多次执行问题。
-
- 13.代码注释完善,快速上手。
-
- 14.非移动端采用IView框架,各种自定义插件、选择器实现。移动端采用uniapp,一次编写,全端使用
-
- 15.已经对接好各种第三方插件,支持各种复杂等联合登陆,联合支付等场景。
-
-
-### 开源须知
+### ⚠️开源须知
1.仅允许用于个人学习研究使用.
2.禁止将本开源的代码和资源进行任何形式任何名义的出售.
@@ -301,7 +197,7 @@ PS:单独部署的话,数据库文件访问这里:https://gitee.com/beijing_
4.限制商用,如果需要商业使用请联系我们。QQ3409056806.
-### 交流群
+### 🐧交流群
**QQ群**:961316482
diff --git a/buyer-api/pom.xml b/buyer-api/pom.xml
index 22afda90..42426cbe 100644
--- a/buyer-api/pom.xml
+++ b/buyer-api/pom.xml
@@ -3,21 +3,19 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
- 4.3
-
buyer-api
cn.lili
lili-shop-parent
- 4.2.0
+ ${revision}
+ ../pom.xml
cn.lili
framework
- 4.2.0
+ ${revision}
diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java
index 7e6d102b..22a43a03 100644
--- a/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java
+++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java
@@ -36,11 +36,16 @@ public class MemberCollectionController {
@Autowired
private StoreCollectionService storeCollectionService;
+ /**
+ * 商品收藏关键字
+ */
+ private String goods="GOODS";
+
@ApiOperation(value = "查询会员收藏列表")
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺")
@GetMapping("/{type}")
public ResultMessage
diff --git a/common-api/src/main/java/cn/lili/controller/common/FileController.java b/common-api/src/main/java/cn/lili/controller/common/FileController.java
index cc056c0d..20e33256 100644
--- a/common-api/src/main/java/cn/lili/controller/common/FileController.java
+++ b/common-api/src/main/java/cn/lili/controller/common/FileController.java
@@ -81,6 +81,7 @@ public class FileController {
if (file.getUserEnums().equals(authUser.getRole().name())) {
break;
}
+ default:
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
fileService.updateById(file);
diff --git a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java
index ff8dbef5..b41d0ace 100644
--- a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java
+++ b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java
@@ -28,10 +28,9 @@ public class SliderImageController {
@Autowired
private VerificationService verificationService;
- //一分钟同一个ip请求10次
@LimitPoint(name = "slider_image", key = "verification")
@GetMapping("/{verificationEnums}")
- @ApiOperation(value = "获取校验接口")
+ @ApiOperation(value = "获取校验接口,一分钟同一个ip请求10次")
public ResultMessage getSliderImage(@RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
try {
return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid));
diff --git a/common-api/src/main/java/cn/lili/controller/common/SmsController.java b/common-api/src/main/java/cn/lili/controller/common/SmsController.java
index e69664a4..cfec27ab 100644
--- a/common-api/src/main/java/cn/lili/controller/common/SmsController.java
+++ b/common-api/src/main/java/cn/lili/controller/common/SmsController.java
@@ -31,14 +31,13 @@ public class SmsController {
@Autowired
private VerificationService verificationService;
- //一分钟同一个ip请求1次
@LimitPoint(name = "sms_send", key = "sms")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "path", dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(paramType = "header", dataType = "String", name = "uuid", value = "uuid"),
})
@GetMapping("/{verificationEnums}/{mobile}")
- @ApiOperation(value = "发送短信验证码")
+ @ApiOperation(value = "发送短信验证码,一分钟同一个ip请求1次")
public ResultMessage getSmsCode(
@RequestHeader String uuid,
@PathVariable String mobile,
diff --git a/config/application.yml b/config/application.yml
index 0e645d6b..2193b51f 100644
--- a/config/application.yml
+++ b/config/application.yml
@@ -121,7 +121,7 @@ spring:
props:
#是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭
sql:
- show: false
+ show: true
# 忽略鉴权url
ignored:
@@ -144,6 +144,7 @@ ignored:
- /buyer/promotion/pintuan/**
- /buyer/promotion/seckill/**
- /buyer/promotion/pointsGoods/**
+ - /buyer/promotion/coupon
- /buyer/memberEvaluation/**/goodsEvaluation
- /buyer/memberEvaluation/**/evaluationNumber
- /buyer/appVersion/**
@@ -163,6 +164,7 @@ ignored:
- /v2/api-docs
- /configuration/ui
- /boot-admin
+ - /manager/promotion/seckill/init
statics:
- /**/*.js
- /**/*.css
@@ -194,9 +196,9 @@ logging:
# 输出级别
level:
cn.lili: info
- org.hibernate: debug
- org.springframework: debug
- org.springframework.data.mongodb.core: debug
+# org.hibernate: debug
+# org.springframework: debug
+# org.springframework.data.mongodb.core: debug
file:
# 指定路径
path: lili-logs
@@ -295,6 +297,8 @@ lili:
notice-send-group: lili_send_notice_group
rocketmq:
name-server: 192.168.0.116:9876
+ namesrvAddr: 192.168.0.116:9876
+ isVIPChannel: false
producer:
group: lili_group
send-message-timeout: 30000
diff --git a/consumer/pom.xml b/consumer/pom.xml
index b9b34c24..f743fae9 100644
--- a/consumer/pom.xml
+++ b/consumer/pom.xml
@@ -8,20 +8,21 @@
cn.lili
lili-shop-parent
- 4.2.0
+ ${revision}
+ ../pom.xml
cn.lili
framework
- 4.2.0
+ ${revision}
com.xuxueli
xxl-job-core
- 2.2.0
+ ${xxl-job}
diff --git a/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java b/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java
index fefac047..21fe71f1 100644
--- a/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java
+++ b/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java
@@ -12,6 +12,7 @@ import cn.lili.modules.order.order.entity.dto.OrderMessage;
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -23,13 +24,18 @@ import javax.annotation.Resource;
* @author Chopper
* @date 2020-07-03 11:20
*/
+@Slf4j
@Service
public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDayExecute, AfterSaleStatusChangeEvent {
- //分销订单
+ /**
+ * 分销订单
+ */
@Autowired
private DistributionOrderService distributionOrderService;
- //分销订单持久层
+ /**
+ * 分销订单持久层
+ */
@Resource
private DistributionOrderMapper distributionOrderMapper;
@@ -48,6 +54,9 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa
distributionOrderService.cancelOrder(orderMessage.getOrderSn());
break;
}
+ default:
+ log.error("分销订单执行异常:", orderMessage.getOrderSn());
+ break;
}
}
diff --git a/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java b/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java
index 224f1f52..1d465dac 100644
--- a/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java
+++ b/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java
@@ -14,9 +14,11 @@ import org.springframework.stereotype.Service;
* @date 2020-07-03 11:20
*/
@Service
-public class GoodsSkuExecute implements GoodsCommentCompleteEvent {
+public class GoodsSkuExecute implements GoodsCommentCompleteEvent {
- //商品
+ /**
+ * 商品
+ */
@Autowired
private GoodsSkuService goodsSkuService;
diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java
index 7c514764..7fa3318a 100644
--- a/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java
+++ b/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java
@@ -29,18 +29,25 @@ import org.springframework.stereotype.Service;
@Service
public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommentCompleteEvent, OrderStatusChangeEvent {
- //配置
+ /**
+ * 配置
+ */
@Autowired
private SettingService settingService;
- //会员
+ /**
+ * 会员
+ */
@Autowired
private MemberService memberService;
- //订单
+ /**
+ * 订单
+ */
@Autowired
private OrderService orderService;
/**
* 会员注册赠送经验值
+ *
* @param member 会员
*/
@Override
@@ -53,6 +60,7 @@ public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommen
/**
* 商品评价赠送经验值
+ *
* @param memberEvaluation 会员评价
*/
@Override
@@ -65,17 +73,18 @@ public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommen
/**
* 完成订单赠送经验值
+ *
* @param orderMessage 订单消息
*/
@Override
public void orderChange(OrderMessage orderMessage) {
- if(orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)){
+ if (orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)) {
//获取经验值设置
ExperienceSetting experienceSetting = getExperienceSetting();
//获取订单信息
Order order = orderService.getBySn(orderMessage.getOrderSn());
//计算赠送经验值数量
- Double point= CurrencyUtil.mul(experienceSetting.getMoney(),order.getFlowPrice(),0);
+ Double point = CurrencyUtil.mul(experienceSetting.getMoney(), order.getFlowPrice(), 0);
//赠送会员经验值
memberService.updateMemberExperience(point.longValue(), true, order.getMemberId(), "会员下单,赠送经验值" + point + "分");
}
@@ -83,9 +92,10 @@ public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommen
/**
* 获取经验值设置
+ *
* @return 经验值设置
*/
- private ExperienceSetting getExperienceSetting(){
+ private ExperienceSetting getExperienceSetting() {
Setting setting = settingService.get(SettingEnum.EXPERIENCE_SETTING.name());
return new Gson().fromJson(setting.getSettingValue(), ExperienceSetting.class);
}
diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java
index e4ce6de0..6891833d 100644
--- a/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java
+++ b/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java
@@ -33,57 +33,66 @@ import org.springframework.stereotype.Service;
@Service
public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentCompleteEvent, OrderStatusChangeEvent, AfterSaleStatusChangeEvent {
- //配置
+ /**
+ * 配置
+ */
@Autowired
private SettingService settingService;
- //会员
+ /**
+ * 会员
+ */
@Autowired
private MemberService memberService;
- //订单
+ /**
+ * 订单
+ */
@Autowired
private OrderService orderService;
/**
* 会员注册赠送积分
+ *
* @param member 会员
*/
@Override
public void memberRegister(Member member) {
//获取积分设置
- PointSetting pointSetting=getPointSetting();
+ PointSetting pointSetting = getPointSetting();
//赠送会员积分
memberService.updateMemberPoint(Long.valueOf(pointSetting.getRegister().longValue()), true, member.getId(), "会员注册,赠送积分" + pointSetting.getRegister() + "分");
}
/**
* 会员评价赠送积分
+ *
* @param memberEvaluation 会员评价
*/
@Override
public void goodsComment(MemberEvaluation memberEvaluation) {
//获取积分设置
- PointSetting pointSetting=getPointSetting();
+ PointSetting pointSetting = getPointSetting();
//赠送会员积分
memberService.updateMemberPoint(Long.valueOf(pointSetting.getComment().longValue()), true, memberEvaluation.getMemberId(), "会员评价,赠送积分" + pointSetting.getComment() + "分");
}
/**
* 非积分订单订单完成后赠送积分
+ *
* @param orderMessage 订单消息
*/
@Override
public void orderChange(OrderMessage orderMessage) {
- if(orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)){
+ if (orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)) {
//根据订单编号获取订单数据,如果为积分订单则跳回
Order order = orderService.getBySn(orderMessage.getOrderSn());
- if(order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINT.name())){
+ if (order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINT.name())) {
return;
}
//获取积分设置
- PointSetting pointSetting=getPointSetting();
+ PointSetting pointSetting = getPointSetting();
//计算赠送积分数量
- Double point=CurrencyUtil.mul(pointSetting.getMoney(),order.getFlowPrice(),0);
+ Double point = CurrencyUtil.mul(pointSetting.getMoney(), order.getFlowPrice(), 0);
//赠送会员积分
memberService.updateMemberPoint(point.longValue(), true, order.getMemberId(), "会员下单,赠送积分" + point + "分");
@@ -92,15 +101,16 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp
/**
* 提交售后后扣除积分
+ *
* @param afterSale 售后
*/
@Override
public void afterSaleStatusChange(AfterSale afterSale) {
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
//获取积分设置
- PointSetting pointSetting=getPointSetting();
+ PointSetting pointSetting = getPointSetting();
//计算扣除积分数量
- Double point=CurrencyUtil.mul(pointSetting.getMoney(), afterSale.getActualRefundPrice(),0);
+ Double point = CurrencyUtil.mul(pointSetting.getMoney(), afterSale.getActualRefundPrice(), 0);
//扣除会员积分
memberService.updateMemberPoint(point.longValue(), false, afterSale.getMemberId(), "会员退款,扣除积分" + point + "分");
@@ -109,9 +119,10 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp
/**
* 获取积分设置
+ *
* @return 积分设置
*/
- private PointSetting getPointSetting(){
+ private PointSetting getPointSetting() {
Setting setting = settingService.get(SettingEnum.POINT_SETTING.name());
return new Gson().fromJson(setting.getSettingValue(), PointSetting.class);
}
diff --git a/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java b/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java
index e3346136..29bbec5a 100644
--- a/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java
+++ b/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java
@@ -44,7 +44,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(tradeDTO.getMemberId());
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.ORDER_CREATE_SUCCESS);
- Map params = new HashMap<>();
+ Map params = new HashMap<>(2);
params.put("goods", tradeDTO.getSkuList().get(0).getGoodsSku().getGoodsName());
noticeMessageDTO.setParameter(params);
//保存站内信
@@ -58,7 +58,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
//如果订单状态不为空
if (orderDetailVO != null) {
- Map params = new HashMap<>();
+ Map params = new HashMap<>(2);
switch (orderMessage.getNewStatus()) {
//如果订单新的状态为已取消 则发送取消订单站内信
case CANCELLED:
@@ -103,7 +103,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
public void afterSaleStatusChange(AfterSale afterSale) {
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(afterSale.getMemberId());
- Map params = new HashMap<>();
+ Map params = new HashMap<>(2);
params.put("goods", afterSale.getGoodsName());
params.put("refuse", afterSale.getAuditRemark());
noticeMessageDTO.setParameter(params);
@@ -154,7 +154,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
//组织站内信参数
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(memberPointMessage.getMemberId());
- Map params = new HashMap<>();
+ Map params = new HashMap<>(2);
if (memberPointMessage.getType()) {
params.put("expenditure_points", "0");
params.put("income_points", memberPointMessage.getPoint().toString());
@@ -178,7 +178,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
//组织参数
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(memberWithdrawalMessage.getMemberId());
- Map params = new HashMap<>();
+ Map params = new HashMap<>(2);
params.put("income", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params);
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_SUCCESS);
diff --git a/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java b/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java
index c51b180d..6c3ed4e6 100644
--- a/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java
+++ b/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java
@@ -10,6 +10,7 @@ import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.payment.entity.RefundLog;
import cn.lili.modules.payment.kit.Payment;
import cn.lili.modules.payment.kit.enums.PaymentMethodEnum;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -19,10 +20,13 @@ import org.springframework.stereotype.Service;
* @author Chopper
* @date 2021-03-13 16:58
*/
+@Slf4j
@Service
public class PaymentExecute implements OrderStatusChangeEvent {
- //订单
+ /**
+ * 订单
+ */
@Autowired
private OrderService orderService;
@@ -36,7 +40,10 @@ public class PaymentExecute implements OrderStatusChangeEvent {
if (order.getPayStatus() == PayStatusEnum.UNPAID.name()) {
return;
}
-
+ //如果未付款,则不去要退回相关代码执行
+ if (order.getPayStatus().equals(PayStatusEnum.UNPAID.name())) {
+ return;
+ }
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(order.getPaymentMethod());
//进行退款操作
switch (paymentMethodEnum) {
@@ -64,6 +71,9 @@ public class PaymentExecute implements OrderStatusChangeEvent {
break;
case BANK_TRANSFER:
break;
+ default:
+ log.error("订单支付执行异常,订单编号:{}", orderMessage.getOrderSn());
+ break;
}
break;
default:
diff --git a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java
index 216b4331..402b74f0 100644
--- a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java
+++ b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java
@@ -32,23 +32,35 @@ import java.util.List;
@Service
public class StockUpdateExecute implements OrderStatusChangeEvent {
- //出库失败消息
+ /**
+ * 出库失败消息
+ */
static String outOfStockMessage = "库存不足,出库失败";
- //Redis
+ /**
+ * Redis
+ */
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private DefaultRedisScript quantityScript;
- //订单
+ /**
+ * 订单
+ */
@Autowired
private OrderService orderService;
- //规格商品
+ /**
+ * 规格商品
+ */
@Autowired
private GoodsSkuService goodsSkuService;
- //促销商品
+ /**
+ * 促销商品
+ */
@Autowired
private PromotionGoodsService promotionGoodsService;
- //缓存
+ /**
+ * 缓存
+ */
@Autowired
private Cache cache;
diff --git a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java
index 2db77d04..da5a5fa9 100644
--- a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java
+++ b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java
@@ -24,7 +24,9 @@ import java.util.List;
@RocketMQMessageListener(topic = "${lili.data.rocketmq.after-sale-topic}", consumerGroup = "${lili.data.rocketmq.after-sale-group}")
public class AfterSaleMessageListener implements RocketMQListener {
- //售后订单状态
+ /**
+ * 售后订单状态
+ */
@Autowired
private List afterSaleStatusChangeEvents;
@@ -43,6 +45,8 @@ public class AfterSaleMessageListener implements RocketMQListener {
e);
}
}
+ default:
+ log.error("售后状态修改事件执行异常:", new String(messageExt.getBody()));
break;
}
diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java
index 16dd44dc..e0f24d7b 100644
--- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java
+++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java
@@ -20,7 +20,6 @@ import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.service.EsGoodsIndexService;
import cn.lili.modules.store.service.StoreService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.common.message.MessageExt;
@@ -42,31 +41,49 @@ import java.util.List;
@RocketMQMessageListener(topic = "${lili.data.rocketmq.goods-topic}", consumerGroup = "${lili.data.rocketmq.goods-group}")
public class GoodsMessageListener implements RocketMQListener {
- //ES商品
+ /**
+ * ES商品
+ */
@Autowired
private EsGoodsIndexService goodsIndexService;
- //店铺
+ /**
+ * 店铺
+ */
@Autowired
private StoreService storeService;
- //商品
+ /**
+ * 商品
+ */
@Autowired
private GoodsService goodsService;
- //商品
+ /**
+ * 商品Sku
+ */
@Autowired
private GoodsSkuService goodsSkuService;
- //用户足迹
+ /**
+ * 用户足迹
+ */
@Autowired
private FootprintService footprintService;
- //商品收藏
+ /**
+ * 商品收藏
+ */
@Autowired
private GoodsCollectionService goodsCollectionService;
- //商品评价
+ /**
+ * 商品评价
+ */
@Autowired
private List goodsCommentCompleteEvents;
- //分销商品
+ /**
+ * 分销商品
+ */
@Autowired
private DistributionGoodsService distributionGoodsService;
- //分销员-商品关联表
+ /**
+ * 分销员-商品关联表
+ */
@Autowired
private DistributionSelectedGoodsService distributionSelectedGoodsService;
@@ -123,6 +140,9 @@ public class GoodsMessageListener implements RocketMQListener {
case BUY_GOODS_COMPLETE:
this.goodsBuyComplete(messageExt);
break;
+ default:
+ log.error("商品执行异常:", new String(messageExt.getBody()));
+ break;
}
}
@@ -131,20 +151,21 @@ public class GoodsMessageListener implements RocketMQListener {
* 1.更新店铺的商品数量
* 2.删除分销员-分销商品绑定关系
* 3.删除分销商品
+ *
* @param messageExt 消息
*/
- private void deleteGoods(MessageExt messageExt){
- Goods goods=JSONUtil.toBean(new String(messageExt.getBody()),Goods.class);
+ private void deleteGoods(MessageExt messageExt) {
+ Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class);
//更新店铺商品数量
storeService.updateStoreGoodsNum(goods.getStoreId());
//删除获取分销商品
- DistributionGoods distributionGoods=distributionGoodsService.getOne(new LambdaQueryWrapper()
- .eq(DistributionGoods::getGoodsId,goods.getId()));
+ DistributionGoods distributionGoods = distributionGoodsService.getOne(new LambdaQueryWrapper()
+ .eq(DistributionGoods::getGoodsId, goods.getId()));
//删除分销商品绑定关系
distributionSelectedGoodsService.remove(new LambdaQueryWrapper()
- .eq(DistributionSelectedGoods::getDistributionGoodsId,distributionGoods.getId()));
+ .eq(DistributionSelectedGoods::getDistributionGoodsId, distributionGoods.getId()));
//删除分销商品
distributionGoodsService.removeById(distributionGoods.getId());
@@ -155,9 +176,10 @@ public class GoodsMessageListener implements RocketMQListener {
* 1.更新商品购买数量
* 2.更新SKU购买数量
* 3.更新索引购买数量
+ *
* @param messageExt
*/
- private void goodsBuyComplete(MessageExt messageExt){
+ private void goodsBuyComplete(MessageExt messageExt) {
String goodsCompleteMessageStr = new String(messageExt.getBody());
List goodsCompleteMessageList = JSONUtil.toList(JSONUtil.parseArray(goodsCompleteMessageStr), GoodsCompleteMessage.class);
for (GoodsCompleteMessage goodsCompleteMessage : goodsCompleteMessageList) {
diff --git a/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java b/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java
index 7f135776..4cc3b8fa 100644
--- a/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java
+++ b/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java
@@ -30,16 +30,24 @@ import java.util.List;
@RocketMQMessageListener(topic = "${lili.data.rocketmq.member-topic}", consumerGroup = "${lili.data.rocketmq.member-group}")
public class MemberMessageListener implements RocketMQListener {
- //会员签到
+ /**
+ * 会员签到
+ */
@Autowired
private MemberSignService memberSignService;
- //会员积分变化
+ /**
+ * 会员积分变化
+ */
@Autowired
private List memberPointChangeEvents;
- //会员提现
+ /**
+ * 会员提现
+ */
@Autowired
private List memberWithdrawalEvents;
- //会员注册
+ /**
+ * 会员注册
+ */
@Autowired
private List memberSignEvents;
diff --git a/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java
index 940eced2..98a894a6 100644
--- a/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java
+++ b/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java
@@ -3,7 +3,6 @@ package cn.lili.listener;
import cn.hutool.json.JSONUtil;
import cn.lili.modules.message.entity.dto.NoticeMessageDTO;
import cn.lili.modules.message.service.NoticeMessageService;
-import lombok.RequiredArgsConstructor;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
@@ -20,7 +19,9 @@ import org.springframework.stereotype.Component;
@RocketMQMessageListener(topic = "${lili.data.rocketmq.notice-topic}", consumerGroup = "${lili.data.rocketmq.notice-group}")
public class NoticeMessageListener implements RocketMQListener {
- //站内信
+ /**
+ * 站内信
+ */
@Autowired
private NoticeMessageService noticeMessageService;
diff --git a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java
index 659c1c53..fe7a4a21 100644
--- a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java
+++ b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java
@@ -28,6 +28,7 @@ import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@@ -41,22 +42,34 @@ import java.util.List;
@RocketMQMessageListener(topic = "${lili.data.rocketmq.notice-send-topic}", consumerGroup = "${lili.data.rocketmq.notice-send-group}")
public class NoticeSendMessageListener implements RocketMQListener {
- //会员
- @Autowired
+ /**
+ * 会员
+ */
+ @Resource
private MemberMapper memberMapper;
- //短信
+ /**
+ * 短信
+ */
@Autowired
private SmsUtil smsUtil;
- //店铺消息
+ /**
+ * 店铺消息
+ */
@Autowired
private StoreMessageService storeMessageService;
- //会员消息
+ /**
+ * 会员消息
+ */
@Autowired
private MemberMessageService memberMessageService;
- //店铺
+ /**
+ * 店铺
+ */
@Autowired
private StoreService storeService;
- //会员
+ /**
+ * 会员
+ */
@Autowired
private MemberService memberService;
@@ -100,7 +113,7 @@ public class NoticeSendMessageListener implements RocketMQListener {
private void saveStoreMessage(Message message) {
List list = new ArrayList<>();
//发送全部商家情况
- if (message.getMessageRange().equals("ALL")) {
+ if ("ALL".equals(message.getMessageRange())) {
List storeList = storeService.list(new QueryWrapper().eq("store_disable", "OPEN"));
storeList.forEach(item -> {
StoreMessage storeMessage = new StoreMessage();
@@ -141,7 +154,7 @@ public class NoticeSendMessageListener implements RocketMQListener {
private void saveMemberMessage(Message message) {
List list = new ArrayList<>();
//如果是给所有会员发送消息
- if (message.getMessageRange().equals("ALL")) {
+ if ("ALL".equals(message.getMessageRange())) {
//查询所有会员总数,因为会员总数比较大 如果一次性查出来会占用数据库资源,所以要分页查询
MemberSearchVO memberSearchVO = new MemberSearchVO();
memberSearchVO.setDisabled(SwitchEnum.OPEN.name());
diff --git a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java
index 892139e5..508ec62c 100644
--- a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java
+++ b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java
@@ -27,13 +27,19 @@ import java.util.List;
@RocketMQMessageListener(topic = "${lili.data.rocketmq.order-topic}", consumerGroup = "${lili.data.rocketmq.order-group}")
public class OrderMessageListener implements RocketMQListener {
- //交易
+ /**
+ * 交易
+ */
@Autowired
private List tradeEvent;
- //订单状态
+ /**
+ * 订单状态
+ */
@Autowired
private List orderStatusChangeEvents;
- //缓存
+ /**
+ * 缓存
+ */
@Autowired
private Cache cache;
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java
index 89b8bf35..c32087ba 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java
@@ -21,10 +21,14 @@ import java.util.List;
@Component
public class BillExecute implements EveryDayExecute {
- //结算单
+ /**
+ * 结算单
+ */
@Autowired
private BillService billService;
- //店铺详情
+ /**
+ * 店铺详情
+ */
@Resource
private StoreDetailMapper storeDetailMapper;
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java
index f9d92ea6..04a3bbca 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java
@@ -8,9 +8,9 @@ import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.mapper.MemberEvaluationMapper;
import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@@ -22,11 +22,15 @@ import java.util.Map;
*/
@Component
public class GoodsExecute implements EveryDayExecute {
- //会员评价
- @Autowired
+ /**
+ * 会员评价
+ */
+ @Resource
private MemberEvaluationMapper memberEvaluationMapper;
- //商品
- @Autowired
+ /**
+ * 商品
+ */
+ @Resource
private GoodsMapper goodsMapper;
/**
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java
index 1202c425..31c5e587 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java
@@ -12,7 +12,6 @@ import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService;
import cn.lili.timetask.handler.EveryMinuteExecute;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -28,12 +27,15 @@ import java.util.stream.Collectors;
**/
@Slf4j
@Component
-
public class CancelOrderTaskExecute implements EveryMinuteExecute {
- //订单
+ /**
+ * 订单
+ */
@Autowired
private OrderService orderService;
- //设置
+ /**
+ * 设置
+ */
@Autowired
private SettingService settingService;
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java
index 84c0cabc..be91b37e 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java
@@ -10,7 +10,12 @@ import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem;
+import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
+import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
+import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
+import cn.lili.modules.order.order.mapper.OrderItemMapper;
+import cn.lili.modules.order.order.service.AfterSaleService;
import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.system.entity.dos.Setting;
@@ -19,12 +24,13 @@ import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService;
import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.util.Date;
+import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@@ -37,26 +43,40 @@ import java.util.stream.Collectors;
public class OrderEveryDayTaskExecute implements EveryDayExecute {
- //订单
+ /**
+ * 订单
+ */
@Autowired
private OrderService orderService;
- //订单货物
+ /**
+ * 订单货物
+ */
@Autowired
private OrderItemService orderItemService;
- //设置
+ @Resource
+ private OrderItemMapper orderItemMapper;
+ /**
+ * 设置
+ */
@Autowired
private SettingService settingService;
- //会员评价
+ /**
+ * 会员评价
+ */
@Autowired
private MemberEvaluationService memberEvaluationService;
+ @Autowired
+ private AfterSaleService afterSaleService;
+
/**
* 执行每日任务
*/
@Override
public void execute() {
+
Setting setting = settingService.get(SettingEnum.ORDER_SETTING.name());
- //自动确认收货
+ //订单设置
OrderSetting orderSetting = JSONUtil.toBean(setting.getSettingValue(), OrderSetting.class);
if (orderSetting == null) {
throw new ServiceException(ResultCode.ORDER_SETTING_ERROR);
@@ -66,6 +86,10 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
completedOrder(orderSetting);
//自动好评
memberEvaluation(orderSetting);
+ //关闭允许售后申请
+ closeAfterSale(orderSetting);
+ //关闭允许投诉
+ closeComplaint(orderSetting);
}
/**
@@ -74,21 +98,21 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
* @param orderSetting 订单设置
*/
private void completedOrder(OrderSetting orderSetting) {
+
//订单自动收货时间 = 当前时间 - 自动收货时间天数
- DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
+ DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoReceive());
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Order::getOrderStatus, OrderStatusEnum.DELIVERED.name());
+
//订单发货时间 >= 订单自动收货时间
queryWrapper.ge(Order::getLogisticsTime, receiveTime);
List list = orderService.list(queryWrapper);
- List receiveSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
- if (!receiveSnList.isEmpty()) {
- LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
- updateWrapper.in(Order::getSn, receiveSnList);
- updateWrapper.set(Order::getOrderStatus, OrderStatusEnum.COMPLETED.name()).set(Order::getCompleteTime, new Date());
- boolean update = orderService.update(updateWrapper);
- if (Boolean.FALSE.equals(update)) {
- log.error("自动收货订单失败!订单编号为[{}]", receiveSnList);
+
+ //判断是否有符合条件的订单,进行订单完成处理
+ if (!list.isEmpty()) {
+ List receiveSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
+ for (String orderSn : receiveSnList) {
+ orderService.complete(orderSn);
}
}
}
@@ -100,26 +124,93 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
*/
private void memberEvaluation(OrderSetting orderSetting) {
//订单自动收货时间 = 当前时间 - 自动收货时间天数
- DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoReceive());
+ DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
+
//订单完成时间 <= 订单自动好评时间
- List orderItems = orderItemService.waitEvaluate(receiveTime);
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.ge("o.complete_time", receiveTime);
+ queryWrapper.eq("oi.comment_status", CommentStatusEnum.UNFINISHED.name());
+ List orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
- for (OrderItem orderItem : orderItems) {
-
- MemberEvaluationDTO memberEvaluationDTO = new MemberEvaluationDTO();
- memberEvaluationDTO.setOrderItemSn(orderItem.getSn());
- memberEvaluationDTO.setContent("系统默认好评");
- memberEvaluationDTO.setGoodsId(orderItem.getGoodsId());
- memberEvaluationDTO.setSkuId(orderItem.getSkuId());
- memberEvaluationDTO.setGrade(EvaluationGradeEnum.GOOD.name());
- memberEvaluationDTO.setDeliveryScore(5);
- memberEvaluationDTO.setDescriptionScore(5);
- memberEvaluationDTO.setServiceScore(5);
-
- memberEvaluationService.addMemberEvaluation(memberEvaluationDTO);
+ //判断是否有符合条件的订单,进行自动评价处理
+ if (!orderItems.isEmpty()) {
+ for (OrderItem orderItem : orderItems) {
+ MemberEvaluationDTO memberEvaluationDTO = new MemberEvaluationDTO();
+ memberEvaluationDTO.setOrderItemSn(orderItem.getSn());
+ memberEvaluationDTO.setContent("系统默认好评");
+ memberEvaluationDTO.setGoodsId(orderItem.getGoodsId());
+ memberEvaluationDTO.setSkuId(orderItem.getSkuId());
+ memberEvaluationDTO.setGrade(EvaluationGradeEnum.GOOD.name());
+ memberEvaluationDTO.setDeliveryScore(5);
+ memberEvaluationDTO.setDescriptionScore(5);
+ memberEvaluationDTO.setServiceScore(5);
+ memberEvaluationService.addMemberEvaluation(memberEvaluationDTO);
+ }
}
}
+ /**
+ * 关闭允许售后申请
+ *
+ * @param orderSetting 订单设置
+ */
+ private void closeAfterSale(OrderSetting orderSetting) {
+
+ //订单关闭售后申请时间 = 当前时间 - 自动关闭售后申请天数
+ DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
+
+ //关闭售后订单=未售后订单+小于订单关闭售后申请时间
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.ge("o.complete_time", receiveTime);
+ queryWrapper.eq("oi.after_sale_status", OrderItemAfterSaleStatusEnum.NOT_APPLIED.name());
+ List orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
+
+ //判断是否有符合条件的订单,关闭允许售后申请处理
+ if (!orderItems.isEmpty()) {
+
+ //获取订单货物ID
+ List orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList());
+
+ //修改订单售后状态
+ LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper()
+ .set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name())
+ .in(OrderItem::getId, orderItemIdList);
+ orderItemService.update(lambdaUpdateWrapper);
+ }
+
+ }
+
+ /**
+ * 关闭允许交易投诉
+ *
+ * @param orderSetting 订单设置
+ */
+ private void closeComplaint(OrderSetting orderSetting) {
+
+ //订单关闭交易投诉申请时间 = 当前时间 - 自动关闭交易投诉申请天数
+ DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseComplaint());
+
+ //关闭售后订单=未售后订单+小于订单关闭售后申请时间
+ QueryWrapper queryWrapper = new QueryWrapper();
+ queryWrapper.ge("o.complete_time", receiveTime);
+ queryWrapper.eq("oi.complain_status", OrderComplaintStatusEnum.NO_APPLY.name());
+ List orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
+
+ //判断是否有符合条件的订单,关闭允许售后申请处理
+ if (!orderItems.isEmpty()) {
+
+ //获取订单货物ID
+ List orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList());
+
+ //修改订单投诉状态
+ LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper()
+ .set(OrderItem::getComplainStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name())
+ .in(OrderItem::getId, orderItemIdList);
+ orderItemService.update(lambdaUpdateWrapper);
+ }
+
+ }
+
}
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java
index eb43758d..482963fb 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java
@@ -39,33 +39,49 @@ import java.util.List;
@Component
public class PromotionEverydayExecute implements EveryDayExecute {
- //Mongo
+ /**
+ * Mongo
+ */
@Autowired
private MongoTemplate mongoTemplate;
- //es
+ /**
+ * ES商品索引
+ */
@Autowired
private EsGoodsIndexService esGoodsIndexService;
- //满额活动
+ /**
+ * 满额活动
+ */
@Autowired
private FullDiscountService fullDiscountService;
- //拼团
+ /**
+ * 拼团
+ */
@Autowired
private PintuanService pintuanService;
- //优惠券
+ /**
+ * 优惠券
+ */
@Autowired
private CouponService couponService;
- //会员优惠券
+ /**
+ * 会员优惠券
+ */
@Autowired
private MemberCouponService memberCouponService;
- //促销商品
+ /**
+ * 促销商品
+ */
@Autowired
private PromotionGoodsService promotionGoodsService;
-
- //系统设置
+ /**
+ * 系统设置
+ */
@Autowired
private SettingService settingService;
-
- //秒杀活动
+ /**
+ * 秒杀活动
+ */
@Autowired
private SeckillService seckillService;
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java
index 73a3c940..a7d766dc 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java
@@ -20,7 +20,9 @@ import java.util.Date;
@Component
public class MemberStatisticsExecute implements EveryDayExecute {
- //会员统计
+ /**
+ * 会员统计
+ */
@Autowired
private MemberStatisticsDataService memberStatisticsDataService;
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java
index 73979b97..2b80be56 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java
@@ -24,10 +24,14 @@ import java.util.stream.Collectors;
@Component
public class OnlineMemberStatistics implements EveryHourExecute {
- //缓存
+ /**
+ * 缓存
+ */
@Autowired
private Cache cache;
- //统计小时
+ /**
+ * 统计小时
+ */
@Autowired
private StatisticsProperties statisticsProperties;
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java
index d6bfc93b..963ae544 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java
@@ -11,10 +11,10 @@ import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
import java.util.List;
/**
@@ -25,11 +25,15 @@ import java.util.List;
*/
@Component
public class StoreRatingExecute implements EveryDayExecute {
- //店铺
+ /**
+ * 店铺
+ */
@Autowired
private StoreService storeService;
- //会员评价
- @Autowired
+ /**
+ * 会员评价
+ */
+ @Resource
private MemberEvaluationMapper memberEvaluationMapper;
@@ -39,10 +43,10 @@ public class StoreRatingExecute implements EveryDayExecute {
List storeList = storeService.list(new LambdaQueryWrapper().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()));
for (Store store : storeList) {
//店铺所有开启的评价
- LambdaQueryWrapper QueryWrapper = Wrappers.lambdaQuery();
- QueryWrapper.eq(MemberEvaluation::getStoreId, store.getId());
- QueryWrapper.eq(MemberEvaluation::getStatus, SwitchEnum.OPEN.name());
- StoreRatingVO storeRatingVO = memberEvaluationMapper.getStoreRatingVO(QueryWrapper);
+ LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery();
+ lambdaQueryWrapper.eq(MemberEvaluation::getStoreId, store.getId());
+ lambdaQueryWrapper.eq(MemberEvaluation::getStatus, SwitchEnum.OPEN.name());
+ StoreRatingVO storeRatingVO = memberEvaluationMapper.getStoreRatingVO(lambdaQueryWrapper);
if (storeRatingVO != null) {
//保存评分
diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java
index 2daf4256..b39e455f 100644
--- a/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java
+++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java
@@ -4,7 +4,6 @@ import cn.hutool.core.convert.Convert;
import cn.lili.common.cache.Cache;
import cn.lili.common.cache.CachePrefix;
import cn.lili.common.utils.BeanUtil;
-import cn.lili.common.utils.DateUtil;
import cn.lili.modules.statistics.model.dos.PlatformViewData;
import cn.lili.modules.statistics.service.PlatformViewDataService;
import cn.lili.timetask.handler.EveryDayExecute;
@@ -29,10 +28,14 @@ import java.util.List;
@Slf4j
@Component
public class PageViewStatisticsExecute implements EveryDayExecute {
- //缓存
+ /**
+ * 缓存
+ */
@Autowired
private Cache cache;
- //平台PV统计
+ /**
+ * 平台PV统计
+ */
@Autowired
private PlatformViewDataService platformViewDataService;
diff --git a/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java b/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java
index d76fcdaa..9ddf2435 100644
--- a/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java
+++ b/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java
@@ -79,6 +79,7 @@ public abstract class AbstractDelayQueueListen {
/**
* 要实现延时队列的名字
+ * @return 促销延时队列名称
*/
public abstract String setDelayQueueName();
@@ -88,7 +89,7 @@ public abstract class AbstractDelayQueueListen {
*/
@PostConstruct
public void init() {
- new Thread(this::startDelayQueueMachine).start();
+ ThreadPoolUtil.getPool().execute(this::startDelayQueueMachine);
}
}
diff --git a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java
index 5abd9433..ddb90e51 100644
--- a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java
+++ b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java
@@ -25,16 +25,24 @@ import org.springframework.stereotype.Component;
@Slf4j
@Component(TimeExecuteConstant.PROMOTION_EXECUTOR)
public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor {
- //促销
+ /**
+ * 促销
+ */
@Autowired
private PromotionService promotionService;
- //Rocketmq
+ /**
+ * RocketMQ
+ */
@Autowired
private RocketmqCustomProperties rocketmqCustomProperties;
- //延时任务
+ /**
+ * 延时任务
+ */
@Autowired
private TimeTrigger timeTrigger;
- //订单
+ /**
+ * 订单
+ */
@Autowired
private OrderService orderService;
diff --git a/framework/pom.xml b/framework/pom.xml
index ba3991db..ded46f47 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -7,53 +7,13 @@
cn.lili
lili-shop-parent
- 4.2.0
+ ${revision}
+ ../pom.xml
framework
jar
-
- 1.9.6
- 4.13.40.ALL
- 5.1.48
- 3.3.1.tmp
- 5.5.8
- 2.0.3.RELEASE
- 3.0.0
- 2.9.10
- 1.18.10
- 6.0.11
- 4.5.18
- 3.11.1
- 2.0.1
- 2.1.1
- 0.10.7
- 4.7.2
- 4.0.0
- 1.1.20
- 1.0.3
- 4.7.2
- 4.4.1
- 4.5.12
- 2.9.10
- UTF-8
- UTF-8
- 1.8
- true
- 2.0.8
- 2.3.1
- 1.21
- 1.2
- 4.1.2
- 4.1.2
- 6.6
- 3.4.1
- 1.7.28
- 2.2.0
- 1.4
-
-
org.springframework.boot
diff --git a/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java b/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java
index 2e625ef9..f6e5397d 100644
--- a/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java
+++ b/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java
@@ -75,10 +75,15 @@ public class LimitInterceptor {
}
- //默认unknown常量值
+ /**
+ * 默认unknown常量值
+ */
private static final String UNKNOWN = "unknown";
- //获取ip
+ /**
+ * 获取ip
+ * @return ip
+ */
public String getIpAddress() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ip = request.getHeader("x-forwarded-for");
diff --git a/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java b/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java
index ea814963..aec4771b 100644
--- a/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java
+++ b/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java
@@ -7,7 +7,7 @@ import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.utils.IpHelper;
import cn.lili.common.utils.SpelUtil;
import cn.lili.common.utils.ThreadPoolUtil;
-import cn.lili.modules.base.entity.systemlog.SystemLogVO;
+import cn.lili.modules.permission.entity.vo.SystemLogVO;
import cn.lili.modules.connect.util.IpUtils;
import cn.lili.modules.permission.service.SystemLogService;
import lombok.extern.slf4j.Slf4j;
@@ -39,7 +39,7 @@ public class SystemLogAspect {
/**
* 启动线程异步记录日志
*/
- private static final ThreadLocal beginTimeThreadLocal = new NamedThreadLocal<>("SYSTEM-LOG");
+ private static final ThreadLocal BEGIN_TIME_THREAD_LOCAL = new NamedThreadLocal<>("SYSTEM-LOG");
@Autowired
private SystemLogService systemLogService;
@@ -61,7 +61,7 @@ public class SystemLogAspect {
*/
@Before("controllerAspect()")
public void doBefore() {
- beginTimeThreadLocal.set(new Date());
+ BEGIN_TIME_THREAD_LOCAL.set(new Date());
}
@@ -110,7 +110,7 @@ public class SystemLogAspect {
//写入自定义日志内容
systemLogVO.setCustomerLog(customerLog);
//请求开始时间
- long beginTime = beginTimeThreadLocal.get().getTime();
+ long beginTime = BEGIN_TIME_THREAD_LOCAL.get().getTime();
long endTime = System.currentTimeMillis();
//请求耗时
Long usedTime = endTime - beginTime;
@@ -157,7 +157,7 @@ public class SystemLogAspect {
*/
private static Map spelFormat(JoinPoint joinPoint, Object rvt) {
- Map result = new HashMap<>();
+ Map result = new HashMap<>(2);
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
SystemLogPoint systemLogPoint = signature.getMethod().getAnnotation(SystemLogPoint.class);
String description = systemLogPoint.description();
diff --git a/framework/src/main/java/cn/lili/common/cache/Cache.java b/framework/src/main/java/cn/lili/common/cache/Cache.java
index e2c86a7c..25d919ce 100644
--- a/framework/src/main/java/cn/lili/common/cache/Cache.java
+++ b/framework/src/main/java/cn/lili/common/cache/Cache.java
@@ -164,6 +164,7 @@ public interface Cache {
* 如需清零,按照普通key 移除即可
*
* @param key
+ * @param value
* @return
*/
Long cumulative(Object key, Object value);
diff --git a/framework/src/main/java/cn/lili/common/cache/CachePrefix.java b/framework/src/main/java/cn/lili/common/cache/CachePrefix.java
index e2734e35..925766b1 100644
--- a/framework/src/main/java/cn/lili/common/cache/CachePrefix.java
+++ b/framework/src/main/java/cn/lili/common/cache/CachePrefix.java
@@ -454,25 +454,39 @@ public enum CachePrefix {
/**
* 店铺分类
*/
- STORE_CATEGORY
- ;
+ STORE_CATEGORY;
public static String removePrefix(String str) {
return str.substring(str.lastIndexOf("}_") + 2);
}
- //通用获取缓存key值
+ /**
+ * 通用获取缓存key值
+ *
+ * @return 缓存key值
+ */
public String getPrefix() {
return "{" + this.name() + "}_";
}
- //通用获取缓存key值
+ /**
+ * 通用获取缓存key值
+ *
+ * @param typeEnum 促销枚举
+ * @return 缓存key值
+ */
public String getPrefix(PromotionTypeEnum typeEnum) {
return "{" + this.name() + "_" + typeEnum.name() + "}_";
}
- //获取缓存key值 + 用户端,例如:三端都有用户体系,需要分别登录,如果用户名一致,则redis中的权限可能会冲突出错
+ /**
+ * 获取缓存key值 + 用户端
+ * 例如:三端都有用户体系,需要分别登录,如果用户名一致,则redis中的权限可能会冲突出错
+ *
+ * @param user 角色
+ * @return 缓存key值 + 用户端
+ */
public String getPrefix(UserEnums user) {
return "{" + this.name() + "_" + user.name() + "}_";
}
diff --git a/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java b/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java
index 85ca4838..ef331665 100644
--- a/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java
+++ b/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java
@@ -160,7 +160,7 @@ public class RedisCache implements Cache {
return null;
} catch (IOException e) {
- log.error("scan错误",e);
+ log.error("scan错误", e);
throw new RuntimeException(e);
}
});
@@ -206,8 +206,8 @@ public class RedisCache implements Cache {
public Long incr(String key, long liveTime) {
RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
Long increment = entityIdCounter.getAndIncrement();
-
- if ((null == increment || increment.longValue() == 0) && liveTime > 0) {//初始设置过期时间
+ //初始设置过期时间
+ if ((null == increment || increment.longValue() == 0) && liveTime > 0) {
entityIdCounter.expire(liveTime, TimeUnit.SECONDS);
}
@@ -254,8 +254,7 @@ public class RedisCache implements Cache {
*/
@Override
public boolean zAdd(String key, long score, String value) {
- Boolean result = redisTemplate.opsForZSet().add(key, value, score);
- return result;
+ return redisTemplate.opsForZSet().add(key, value, score);
}
diff --git a/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java b/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java
index b5cbfe4e..a133da67 100644
--- a/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java
+++ b/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java
@@ -308,13 +308,6 @@ public abstract class BaseElasticsearchService {
PutMappingRequest request = new PutMappingRequest(index)
.source(source, XContentType.JSON);
-// AcknowledgedResponse putMappingResponse = client.indices().putMapping(request,
-// RequestOptions.DEFAULT);
-//
-// boolean acknowledged = putMappingResponse.isAcknowledged();
-// if (acknowledged) {
-// log.error("Succeed to put mapping");
-// }
CountDownLatch latch = new CountDownLatch(1);
AtomicReference response = new AtomicReference();
client.indices().putMappingAsync(
diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java
index 0abbff9c..e6d82ad5 100644
--- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java
+++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java
@@ -34,8 +34,9 @@ public enum ResultCode {
*/
WECHAT_CONNECT_NOT_EXIST(1001, "微信联合登录未配置"),
VERIFICATION_EXIST(1002, "验证码服务异常"),
- LIMIT_ERROR(1003,"访问过于频繁,请稍后再试"),
+ LIMIT_ERROR(1003, "访问过于频繁,请稍后再试"),
ILLEGAL_REQUEST_ERROR(1004, "非法请求,请重新刷新页面操作"),
+ IMAGE_FILE_EXT_ERROR(1005, "不支持图片格式"),
/**
* 分类
*/
@@ -49,6 +50,7 @@ public enum ResultCode {
CATEGORY_PARAMETER_SAVE_ERROR(10008, "分类绑定参数组添加失败"),
CATEGORY_PARAMETER_UPDATE_ERROR(10009, "分类绑定参数组添加失败"),
CATEGORY_DELETE_FLAG_ERROR(10010, "子类状态不能与父类不一致!"),
+ CATEGORY_COMMISSION_RATE_ERROR(10011, "分类的佣金不正确!"),
/**
* 商品
@@ -66,10 +68,10 @@ public enum ResultCode {
GOODS_SKU_WEIGHT_ERROR(11010, "商品重量不能为负数"),
GOODS_SKU_QUANTITY_ERROR(11011, "商品库存数量不能为负数"),
GOODS_SKU_QUANTITY_NOT_ENOUGH(11011, "商品库存不足"),
- MUST_HAVE_GOODS_SKU(11012,"规格必须要有一个!"),
- GOODS_PARAMS_ERROR(11013,"商品参数错误,刷新后重试"),
- PHYSICAL_GOODS_NEED_TEMP(11014,"实物商品需选择配送模板"),
- VIRTUAL_GOODS_NOT_NEED_TEMP(11015,"实物商品需选择配送模板"),
+ MUST_HAVE_GOODS_SKU(11012, "规格必须要有一个!"),
+ GOODS_PARAMS_ERROR(11013, "商品参数错误,刷新后重试"),
+ PHYSICAL_GOODS_NEED_TEMP(11014, "实物商品需选择配送模板"),
+ VIRTUAL_GOODS_NOT_NEED_TEMP(11015, "实物商品需选择配送模板"),
GOODS_TYPE_ERROR(11016, "需选择商品类型"),
/**
@@ -118,10 +120,10 @@ public enum ResultCode {
USER_COLLECTION_EXIST(20017, "无法重复收藏"),
USER_GRADE_IS_DEFAULT(20018, "会员等级为默认会员等级"),
DELETE_EXIST(20019, "无法重复收藏"),
- USER_NOT_BINDING(20020,"未绑定用户"),
- USER_AUTO_REGISTER_ERROR(20021,"自动注册失败,请稍后重试"),
- USER_OVERDUE_CONNECT_ERROR(20022,"授权信息已过期,请重新授权/登录"),
- USER_CONNECT_BANDING_ERROR(20023,"当前联合登陆方式,已绑定其他账号,需进行解绑操作"),
+ USER_NOT_BINDING(20020, "未绑定用户"),
+ USER_AUTO_REGISTER_ERROR(20021, "自动注册失败,请稍后重试"),
+ USER_OVERDUE_CONNECT_ERROR(20022, "授权信息已过期,请重新授权/登录"),
+ USER_CONNECT_BANDING_ERROR(20023, "当前联合登陆方式,已绑定其他账号,需进行解绑操作"),
USER_CONNECT_NOT_EXIST_ERROR(20024, "暂无联合登陆信息,无法实现一键注册功能,请点击第三方登录进行授权"),
/**
@@ -276,47 +278,47 @@ public enum ResultCode {
PINTUAN_DELETE_ERROR(42010, "删除拼团活动失败"),
PINTUAN_JOIN_ERROR(42011, "不能参与自己发起的拼团活动!"),
PINTUAN_LIMIT_NUM_ERROR(42012, "购买数量超过拼团活动限制数量!"),
- PINTUAN_NOT_EXIST_ERROR(42013,"当前拼团商品不存在!"),
+ PINTUAN_NOT_EXIST_ERROR(42013, "当前拼团商品不存在!"),
/**
* 满额活动
*/
FULL_DISCOUNT_EDIT_SUCCESS(43001, "修改满优惠活动成功"),
FULL_DISCOUNT_EDIT_DELETE(43002, "删除满优惠活动成功"),
- FULL_DISCOUNT_MODIFY_ERROR(43003,"当前编辑的满优惠活动已经开始或者已经结束,无法修改"),
- FULL_DISCOUNT_NOT_EXIST_ERROR(43004,"当前要操作的满优惠活动不存在!"),
- FULL_DISCOUNT_WAY_ERROR(43005,"请选择一种优惠方式!"),
- FULL_DISCOUNT_GIFT_ERROR(43006,"请选择赠品!"),
- FULL_DISCOUNT_COUPON_TIME_ERROR(43007,"赠送的优惠券有效时间必须大于活动时间"),
- FULL_DISCOUNT_MONEY_ERROR(43008,"请填写满减金额"),
- FULL_DISCOUNT_MONEY_GREATER_THAN_MINUS(43009,"满减金额不能大于优惠门槛"),
- FULL_RATE_NUM_ERROR(43010,"请填写打折数值"),
+ FULL_DISCOUNT_MODIFY_ERROR(43003, "当前编辑的满优惠活动已经开始或者已经结束,无法修改"),
+ FULL_DISCOUNT_NOT_EXIST_ERROR(43004, "当前要操作的满优惠活动不存在!"),
+ FULL_DISCOUNT_WAY_ERROR(43005, "请选择一种优惠方式!"),
+ FULL_DISCOUNT_GIFT_ERROR(43006, "请选择赠品!"),
+ FULL_DISCOUNT_COUPON_TIME_ERROR(43007, "赠送的优惠券有效时间必须大于活动时间"),
+ FULL_DISCOUNT_MONEY_ERROR(43008, "请填写满减金额"),
+ FULL_DISCOUNT_MONEY_GREATER_THAN_MINUS(43009, "满减金额不能大于优惠门槛"),
+ FULL_RATE_NUM_ERROR(43010, "请填写打折数值"),
/**
* 直播
*/
- STODIO_GOODS_EXIST_ERROR(44001,"直播商品已存在"),
- COMMODITY_ERROR(44002,"添加直播商品失败"),
+ STODIO_GOODS_EXIST_ERROR(44001, "直播商品已存在"),
+ COMMODITY_ERROR(44002, "添加直播商品失败"),
/**
* 秒杀
*/
- SECKILL_NOT_EXIST_ERROR(45001,"当前参与的秒杀活动不存在!"),
- SECKILL_UPDATE_ERROR(45002,"当前秒杀活动活动已经开始,无法修改!"),
- SECKILL_PRICE_ERROR(45003,"活动价格不能大于商品原价"),
- SECKILL_TIME_ERROR(45004,"时刻参数异常"),
- SECKILL_DELETE_ERROR(45005,"该秒杀活动活动的状态不能删除"),
- SECKILL_CLOSE_ERROR(45006,"该秒杀活动活动的状态不能关闭"),
+ SECKILL_NOT_EXIST_ERROR(45001, "当前参与的秒杀活动不存在!"),
+ SECKILL_UPDATE_ERROR(45002, "当前秒杀活动活动已经开始,无法修改!"),
+ SECKILL_PRICE_ERROR(45003, "活动价格不能大于商品原价"),
+ SECKILL_TIME_ERROR(45004, "时刻参数异常"),
+ SECKILL_DELETE_ERROR(45005, "该秒杀活动活动的状态不能删除"),
+ SECKILL_CLOSE_ERROR(45006, "该秒杀活动活动的状态不能关闭"),
/**
* 优惠券活动
*/
- COUPON_ACTIVITY_START_TIME_ERROR(46001,"活动时间小于当前时间,不能进行编辑删除操作"),
- COUPON_ACTIVITY_MEMBER_ERROR(46002,"指定精准发券则必须指定会员,会员不可以为空"),
- COUPON_ACTIVITY_ITEM_ERROR(46003,"优惠券活动必须指定优惠券,不能为空"),
- COUPON_ACTIVITY_ITEM_MUST_NUM_ERROR(46004,"优惠券活动最多指定10个优惠券"),
- COUPON_ACTIVITY_ITEM_NUM_ERROR(46005,"赠券数量必须大于0"),
+ COUPON_ACTIVITY_START_TIME_ERROR(46001, "活动时间小于当前时间,不能进行编辑删除操作"),
+ COUPON_ACTIVITY_MEMBER_ERROR(46002, "指定精准发券则必须指定会员,会员不可以为空"),
+ COUPON_ACTIVITY_ITEM_ERROR(46003, "优惠券活动必须指定优惠券,不能为空"),
+ COUPON_ACTIVITY_ITEM_MUST_NUM_ERROR(46004, "优惠券活动最多指定10个优惠券"),
+ COUPON_ACTIVITY_ITEM_NUM_ERROR(46005, "赠券数量必须大于0"),
/**
* 其他促销
@@ -381,9 +383,9 @@ public enum ResultCode {
ALIPAY_NOT_SETTING(70002, "支付宝支付未配置"),
ALIPAY_EXCEPTION(70003, "支付宝支付错误,请稍后重试"),
ALIPAY_PARAMS_EXCEPTION(70004, "支付宝参数异常"),
- LOGISTICS_NOT_SETTING(70005,"您还未配置快递查询"),
- ORDER_SETTING_ERROR(70006,"系统订单配置异常"),
- ALI_SMS_SETTING_ERROR(70007,"您还未配置阿里云短信"),
+ LOGISTICS_NOT_SETTING(70005, "您还未配置快递查询"),
+ ORDER_SETTING_ERROR(70006, "系统订单配置异常"),
+ ALI_SMS_SETTING_ERROR(70007, "您还未配置阿里云短信"),
SMS_SIGN_EXIST_ERROR(70008, "短信签名已存在"),
/**
@@ -416,10 +418,10 @@ public enum ResultCode {
WECHAT_PAYMENT_NOT_SETTING(80301, "微信支付信息未配置"),
WECHAT_QRCODE_ERROR(80302, "微信二维码生成异常"),
WECHAT_MP_MESSAGE_ERROR(80303, "微信小程序小消息订阅异常"),
- WECHAT_JSAPI_SIGN_ERROR(80304,"微信JsApi签名异常"),
- WECHAT_CERT_ERROR(80305,"证书获取失败"),
- WECHAT_MP_MESSAGE_TMPL_ERROR(80306,"未能获取到微信模版消息id"),
- WECHAT_ERROR(80307,"微信接口异常"),
+ WECHAT_JSAPI_SIGN_ERROR(80304, "微信JsApi签名异常"),
+ WECHAT_CERT_ERROR(80305, "证书获取失败"),
+ WECHAT_MP_MESSAGE_TMPL_ERROR(80306, "未能获取到微信模版消息id"),
+ WECHAT_ERROR(80307, "微信接口异常"),
APP_VERSION_EXIST(80307, "APP版本已存在"),
/**
@@ -427,8 +429,8 @@ public enum ResultCode {
*/
CUSTOM_WORDS_EXIST_ERROR(90000, "当前自定义分词已存在!"),
CUSTOM_WORDS_NOT_EXIST_ERROR(90001, "当前自定义分词不存在!"),
- CUSTOM_WORDS_SECRET_KEY_ERROR(90002, "秘钥验证失败!"),
- CONNECT_NOT_EXIST(90000,"登录方式不存在"),
+ CUSTOM_WORDS_SECRET_KEY_ERROR(90002, "秘钥验证失败!"),
+ CONNECT_NOT_EXIST(90000, "登录方式不存在"),
;
diff --git a/framework/src/main/java/cn/lili/common/enums/ResultUtil.java b/framework/src/main/java/cn/lili/common/enums/ResultUtil.java
index 10f70a77..b4883e5a 100644
--- a/framework/src/main/java/cn/lili/common/enums/ResultUtil.java
+++ b/framework/src/main/java/cn/lili/common/enums/ResultUtil.java
@@ -56,7 +56,12 @@ public class ResultUtil {
}
- //抽象静态方法,返回结果集
+ /**
+ * 抽象静态方法,返回结果集
+ * @param t
+ * @param
+ * @return
+ */
public static ResultMessage data(T t) {
return new ResultUtil().setData(t);
}
diff --git a/framework/src/main/java/cn/lili/common/exception/ServiceException.java b/framework/src/main/java/cn/lili/common/exception/ServiceException.java
index 4f652afd..20e856f0 100644
--- a/framework/src/main/java/cn/lili/common/exception/ServiceException.java
+++ b/framework/src/main/java/cn/lili/common/exception/ServiceException.java
@@ -13,10 +13,14 @@ public class ServiceException extends RuntimeException {
public static String DEFAULT_MESSAGE = "网络错误,请稍后重试!";
- //异常消息
+ /**
+ * 异常消息
+ */
private String msg = DEFAULT_MESSAGE;
- //错误码
+ /**
+ * 错误码
+ */
private ResultCode resultCode;
public ServiceException(String msg) {
diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java
index 98322812..b668ee79 100644
--- a/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java
+++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java
@@ -1,12 +1,20 @@
package cn.lili.common.rocketmq.tags;
/**
+ * 售后标签枚举
+ *
* @author paulG
* @since 2020/12/9
**/
public enum AfterSaleTagsEnum {
+ /**
+ * "售后退款"
+ */
REFUND("售后退款"),
+ /**
+ * "售后单状态改变"
+ */
AFTER_SALE_STATUS_CHANGE("售后单状态改变");
private final String description;
diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java
index 0a7f3a39..f4dbd25b 100644
--- a/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java
+++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java
@@ -6,13 +6,37 @@ package cn.lili.common.rocketmq.tags;
**/
public enum GoodsTagsEnum {
+ /**
+ * "生成商品索引"
+ */
GENERATOR_GOODS_INDEX("生成商品索引"),
+ /**
+ * "删除商品"
+ */
GOODS_DELETE("删除商品"),
+ /**
+ * "审核商品"
+ */
GOODS_AUDIT("审核商品"),
+ /**
+ * "收藏商品"
+ */
GOODS_COLLECTION("收藏商品"),
+ /**
+ * "购买商品完成"
+ */
BUY_GOODS_COMPLETE("购买商品完成"),
+ /**
+ * "删除商品SKU"
+ */
SKU_DELETE("删除商品SKU"),
+ /**
+ * "查看商品"
+ */
VIEW_GOODS("查看商品"),
+ /**
+ * "商品评价"
+ */
GOODS_COMMENT_COMPLETE("商品评价");
private final String description;
diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java
index 1b26b23b..88fb01fe 100644
--- a/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java
+++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java
@@ -1,14 +1,27 @@
package cn.lili.common.rocketmq.tags;
/**
+ * 会员操作枚举
+ *
* @author paulG
* @since 2020/12/9
**/
public enum MemberTagsEnum {
-
+ /**
+ * 会员注册
+ */
MEMBER_REGISTER("会员注册"),
+ /**
+ * 会员签到
+ */
MEMBER_SING("会员签到"),
+ /**
+ * 会员提现
+ */
MEMBER_WITHDRAWAL("会员提现"),
+ /**
+ * 会员积分变动
+ */
MEMBER_POINT_CHANGE("会员积分变动");
private final String description;
diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java
index baf6bdf6..fde73145 100644
--- a/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java
+++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java
@@ -1,18 +1,23 @@
package cn.lili.common.rocketmq.tags;
/**
+ * 订单操作枚举
+ *
* @author paulG
* @since 2020/12/9
**/
public enum MqOrderTagsEnum {
-
+ /**
+ * 订单创建
+ */
ORDER_CREATE("订单创建"),
+ /**
+ * 订单状态改变
+ */
STATUS_CHANGE("订单状态改变");
-
-
private final String description;
MqOrderTagsEnum(String description) {
diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java
index 91e9dcf3..6117c636 100644
--- a/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java
+++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java
@@ -1,12 +1,19 @@
package cn.lili.common.rocketmq.tags;
/**
+ * 其他操作枚举
+ *
* @author paulG
* @since 2020/12/9
**/
public enum OtherTagsEnum {
-
+ /**
+ * 站内消息提醒
+ */
MESSAGE("站内消息提醒"),
+ /**
+ * 短信消息提醒
+ */
SMS("短信消息提醒");
private final String description;
diff --git a/framework/src/main/java/cn/lili/common/security/context/UserContext.java b/framework/src/main/java/cn/lili/common/security/context/UserContext.java
index f3c072ee..af1c4623 100644
--- a/framework/src/main/java/cn/lili/common/security/context/UserContext.java
+++ b/framework/src/main/java/cn/lili/common/security/context/UserContext.java
@@ -9,6 +9,10 @@ import cn.lili.common.token.SecretKeyUtil;
import com.google.gson.Gson;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
/**
* 用户上下文
@@ -20,15 +24,18 @@ import io.jsonwebtoken.Jwts;
*/
public class UserContext {
- private static AuthenticationHandler authenticationHandler;
-
- public static void setHolder(AuthenticationHandler authenticationHandler) {
- UserContext.authenticationHandler = authenticationHandler;
- }
-
-
+ /**
+ * 根据request获取用户信息
+ *
+ * @return
+ */
public static AuthUser getCurrentUser() {
- return authenticationHandler.getAuthUser();
+ if (RequestContextHolder.getRequestAttributes() != null) {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ String accessToken = request.getHeader(SecurityEnum.HEADER_TOKEN.getValue());
+ return getAuthUser(accessToken);
+ }
+ return null;
}
@@ -44,6 +51,20 @@ public class UserContext {
if (cache.keys("*" + accessToken).size() == 0) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
+ return getAuthUser(accessToken);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * 根据jwt获取token重的用户信息
+ *
+ * @param accessToken token
+ * @return
+ */
+ public static AuthUser getAuthUser(String accessToken) {
+ try {
//获取token的信息
Claims claims
= Jwts.parser()
diff --git a/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java b/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java
index a214eb60..f6dbaa1d 100644
--- a/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java
+++ b/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java
@@ -31,6 +31,6 @@ public class UserContextInit implements ApplicationRunner {
*/
@Override
public void run(ApplicationArguments args) {
- UserContext.setHolder(authenticationHandler);
+ //UserContext.setHolder(authenticationHandler);
}
}
diff --git a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java
index cdc533e4..ce6fbca2 100644
--- a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java
+++ b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java
@@ -15,6 +15,10 @@ import java.util.regex.Pattern;
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
private HttpServletRequest request;
+
+
+
+
public XssHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
this.request = request;
@@ -90,46 +94,38 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
return value;
}
+
+ private static final Pattern SCRIPT_PATTERN1 = Pattern.compile("", Pattern.CASE_INSENSITIVE);
+ private static final Pattern SCRIPT_PATTERN2 = Pattern.compile("", Pattern.CASE_INSENSITIVE);
+ private static final Pattern SCRIPT_PATTERN3 = Pattern.compile("", Pattern.CASE_INSENSITIVE);
- value = scriptPattern.matcher(value).replaceAll("");
- //避免src形式的表达式
- scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'",
- Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
- value = scriptPattern.matcher(value).replaceAll("");
- scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"",
- Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
- value = scriptPattern.matcher(value).replaceAll("");
+ value = SCRIPT_PATTERN1.matcher(value).replaceAll("");
//删除单个的 标签
- scriptPattern = Pattern.compile("", Pattern.CASE_INSENSITIVE);
- value = scriptPattern.matcher(value).replaceAll("");
+ value = SCRIPT_PATTERN2.matcher(value).replaceAll("");
//删除单个的